<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tomcat on 思いつきそうで思いつかなくていたときに</title><link>https://blog.fuga.jp/tags/tomcat/</link><description>Recent content in Tomcat on 思いつきそうで思いつかなくていたときに</description><generator>Hugo -- gohugo.io</generator><language>ja</language><copyright>Copyright(c) 2022-2025 SATO Daisuke. All rights reserved.</copyright><lastBuildDate>Wed, 15 Jul 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://blog.fuga.jp/tags/tomcat/index.xml" rel="self" type="application/rss+xml"/><item><title>プラス一文字の罠――Tomcat CVSS9.1緊急パッチと、AI・OSSが交差した一日</title><link>https://blog.fuga.jp/posts/2026-07-15-tomcat-cvss91-plus-encoding-trap/</link><pubDate>Wed, 15 Jul 2026 00:00:00 +0900</pubDate><guid>https://blog.fuga.jp/posts/2026-07-15-tomcat-cvss91-plus-encoding-trap/</guid><description>&lt;h2 id="はじめに">&lt;a href="#%e3%81%af%e3%81%98%e3%82%81%e3%81%ab" class="header-anchor">&lt;/a>はじめに
&lt;/h2>&lt;p>2026年7月14日、たまたま一次情報を追っていたら「AI」「OSS」「セキュリティ」の3領域がやけに交差する一日だったので、5本まとめて紹介します。LLM推論基盤の世代交代から始まって、最後は世界中のJavaサーバーを揺るがすクリティカルな脆弱性で締める構成です。正直、最後のTomcatの話だけでも今日のうちに読んでおいてほしいくらい実務的にヤバいやつです。&lt;/p>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/9zVpQPnIg1A"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;h2 id="1-vllm-v0250v0251pagedattentionが消えた日">&lt;a href="#1-vllm-v0250v0251pagedattention%e3%81%8c%e6%b6%88%e3%81%88%e3%81%9f%e6%97%a5" class="header-anchor">&lt;/a>1. vLLM v0.25.0/v0.25.1――PagedAttentionが消えた日
&lt;/h2>&lt;p>OSS LLMサービングフレームワークvLLMのv0.25.0で、コア技術「PagedAttention」がついに廃止されました。2023年の登場以来ずっとvLLMの代名詞だった技術が、より柔軟な「Model Runner V2」アーキテクチャに置き換わったわけです。558コミット・232貢献者という規模を見ると、単なるマイナー更新ではなく歴史的な世代交代だとわかります。CUDAグラフとの完全互換や、投機デコーディングのグラフ互換対応など、技術的な進歩自体は素直にすごい。&lt;/p>
&lt;p>ただ、翌日にはさっそくv0.25.1が緊急パッチとして出ています。TorchCodecやFFmpegが入っていない、わりと普通のGPUサーバー環境でサービスが起動しないという障害でした。マルチモーダル対応の依存が必須チェックに紛れ込んでいたのが原因らしく、正直「そこ、リリース前のチェックリストに入れておいてほしかった……」という気持ちにはなります。とはいえ翌日には即修正しているあたり、対応の速さは評価したいところです。vLLMはAnyscaleやMistral AIなどの推論プロバイダーでも採用される事実上の標準なので、こういう刷新は業界全体に地味に効いてきます。&lt;/p>
&lt;h2 id="2-cilium-v1200-rc0グループ全社員を1行で指定できるようになった話">&lt;a href="#2-cilium-v1200-rc0%e3%82%b0%e3%83%ab%e3%83%bc%e3%83%97%e5%85%a8%e7%a4%be%e5%93%a1%e3%82%921%e8%a1%8c%e3%81%a7%e6%8c%87%e5%ae%9a%e3%81%a7%e3%81%8d%e3%82%8b%e3%82%88%e3%81%86%e3%81%ab%e3%81%aa%e3%81%a3%e3%81%9f%e8%a9%b1" class="header-anchor">&lt;/a>2. Cilium v1.20.0-rc.0――「グループ全社員」を1行で指定できるようになった話
&lt;/h2>&lt;p>Kubernetes CNIの中でも最も広く本番運用されているCiliumが、v1.20.0の最初のRCを公開しました。個人的に一番「お、便利」と思ったのが新ポリシーエンティティ &lt;code>cluster-mesh&lt;/code> の追加です。今までは5クラスターをClusterMeshでつないだ環境で「全クラスターのバックエンドPodへの通信を許可する」ポリシーを書くのに、クラスターごとのラベルセレクターを5行並べる必要がありました。それがこれからは &lt;code>toEntities: [cluster-mesh]&lt;/code> の1行で済みます。住所録にいちいち社員全員を登録するのではなく「グループ会社全社員」という連絡先を1つ作れるようになった、というたとえがしっくりきました。&lt;/p>
&lt;p>もう一つ、地味だけど実務的にありがたいのが、エージェント再起動時に確立済みのTCP接続が一瞬切れてしまう回帰バグの修正です。ローリングアップグレード中、ポリシーの復元が終わる前にBPFポリシーマップの削除が走ってしまうのが原因でした。「あれ、なんか一瞬繋がらなくなったな……」という現象に心当たりのある人、たぶん結構いるんじゃないでしょうか。データベース接続のような長寿命コネクションを持つサービスには効いてくる修正です。あわせてCNI設定バージョンも0.3.1から1.0.0へ、8年越しにようやく上がりました。&lt;/p>
&lt;h2 id="3-llamacppビルドb10000到達3年間毎日ちょっとずつ積み上げてきた話">&lt;a href="#3-llamacpp%e3%83%93%e3%83%ab%e3%83%89b10000%e5%88%b0%e9%81%943%e5%b9%b4%e9%96%93%e6%af%8e%e6%97%a5%e3%81%a1%e3%82%87%e3%81%a3%e3%81%a8%e3%81%9a%e3%81%a4%e7%a9%8d%e3%81%bf%e4%b8%8a%e3%81%92%e3%81%a6%e3%81%8d%e3%81%9f%e8%a9%b1" class="header-anchor">&lt;/a>3. llama.cppビルドb10000到達――3年間、毎日ちょっとずつ積み上げてきた話
&lt;/h2>&lt;p>CPU/GPU対応のローカルLLM推論エンジンllama.cppが、自動ビルド番号10,000に到達しました。2023年3月の公開から3年、1日平均6〜8本ペースでリリースを重ねてきた結果です。節目のb10000自体は畳み込み演算の出力データ型を統一するという地味な変更（追加6行・削除8行）で、正直これだけ見ると「え、それだけ？」と思うかもしれません。でもBF16重みでの精度損失や量子化型重みでのクラッシュを、新規モデル対応の過程で見つけて直したという経緯を知ると、印象が変わります。&lt;/p>
&lt;p>2023年3月、「MetaのLLaMAモデルを自分のMacBookで動かしたい」という、わりと個人的な動機から始まったプロジェクトが、今やGitHubスター数12万超（Linuxカーネル本体の18万と同じオーダーです）、リリース数5,000本超にまで育っている。派手な発表は一つもないのに、ここまで来た。こういう地道な積み重ねの話、正直かなり好きです。「週末に書いたC++コードがローカルAI時代を支えている」というのは、大げさでもなんでもなく事実なんですよね。&lt;/p>
&lt;h2 id="4-runc-v1511と2の差で本番コンテナが全滅していた話">&lt;a href="#4-runc-v1511%e3%81%a82%e3%81%ae%e5%b7%ae%e3%81%a7%e6%9c%ac%e7%95%aa%e3%82%b3%e3%83%b3%e3%83%86%e3%83%8a%e3%81%8c%e5%85%a8%e6%bb%85%e3%81%97%e3%81%a6%e3%81%84%e3%81%9f%e8%a9%b1" class="header-anchor">&lt;/a>4. runc v1.5.1――「1」と「2」の差で本番コンテナが全滅していた話
&lt;/h2>&lt;p>OCIコンテナランタイムruncのv1.5.1は、Ubuntu 20.04（Focal）環境でコンテナが一切起動できなくなる深刻な回帰を修正するパッチです。原因はv1.5.0で入ったmaskPathsの最適化。従来はマスクするパスごとに個別のtmpfsをマウントしていたのを、単一のtmpfsを&lt;code>nr_inodes=1&lt;/code>オプション付きで再利用する実装に変えたのですが、これがFocalカーネルに残るAUFS由来のパッチと正面衝突し、&lt;code>invalid argument&lt;/code>でマウントごと失敗するようになってしまいました。&lt;/p>
&lt;p>修正自体は「&lt;code>nr_inodes=1&lt;/code>が失敗したら&lt;code>nr_inodes=2&lt;/code>にフォールバックする」というだけの、あっけないほどシンプルなものです。でもこの1と2の差だけで本番のコンテナが全部起動しなくなっていたと考えると、けっこう背筋が寒くなりませんか。しかもUbuntu 20.04はサポート終了済みとはいえESM（Extended Security Maintenance）が2030年まで続くので、産業用IoTやエッジ、オンプレKubernetesではまだまだ現役です。「古いから影響は小さいはず」という油断が一番危ない、という教訓としても覚えておきたい一件でした。&lt;/p>
&lt;h2 id="5-apache-tomcat-cve-2026-59083-cvss911文字が生んだ認証バイパス">&lt;a href="#5-apache-tomcat-cve-2026-59083-cvss911%e6%96%87%e5%ad%97%e3%81%8c%e7%94%9f%e3%82%93%e3%81%a0%e8%aa%8d%e8%a8%bc%e3%83%90%e3%82%a4%e3%83%91%e3%82%b9" class="header-anchor">&lt;/a>5. Apache Tomcat CVE-2026-59083 CVSS9.1――「+」1文字が生んだ認証バイパス
&lt;/h2>&lt;p>ここからが今日の本題です。Apache TomcatのRewriteValveに、CVSS 9.1（CRITICAL）の脆弱性CVE-2026-59083が見つかりました。原因はたった1文字、&lt;code>+&lt;/code>の扱いです。URIパスの中では&lt;code>+&lt;/code>はリテラルの&lt;code>+&lt;/code>として扱われるべきなのに、RewriteValveが書き換え後のパスに対してもクエリ文字列と同じ「&lt;code>+&lt;/code>はスペースに変換する」処理を適用してしまうバグがありました。&lt;/p>
&lt;p>具体的には、&lt;code>/admin/&lt;/code>以下に認証を要求する設定をしていても、攻撃者が&lt;code>/api/admin%2bsecret&lt;/code>のような&lt;code>+&lt;/code>を含むURLを送ると、書き換え後に&lt;code>/app/admin secret&lt;/code>というパスが生成され、Security Constraintのパターンマッチングをすり抜けてしまいます。事前の認証も特別な条件も不要で、影響はTomcat 8.5〜11.0の全世代に及ぶという広さ。個人的に一番興味を引かれたのは、NVDのCVSSスコアが9.1 CRITICALである一方、Apache自身の社内分類は「Low」だったという評価の乖離です。RewriteValveが有効かつ&lt;code>+&lt;/code>を含むルールを使う設定でないと発動しない、という条件付きの話ではあるのですが、RewriteValveはリバースプロキシ構成やURL正規化で本当によく使われるコンポーネントなので、「限定的」という言葉を鵜呑みにするのは危ない気がします。しかもこれ、6月29日に公開されたCVE-2026-53404に続く、同一コンポーネントでの2週間連続の重大脆弱性です。皆さんの環境、RewriteValve使ってませんか？　使っているなら、この記事を読み終えたらすぐバージョン確認をおすすめします（Tomcat 11.0.24／10.1.57／9.0.120／8.5.101が修正版です）。&lt;/p>
&lt;h2 id="まとめ">&lt;a href="#%e3%81%be%e3%81%a8%e3%82%81" class="header-anchor">&lt;/a>まとめ
&lt;/h2>&lt;p>LLM推論基盤の世代交代から始まり、Kubernetesの地味だけど実務的な改善、ローカルAIの3年間の積み重ね、コンテナランタイムの緊急修正を経て、最後は世界中のJavaサーバーを揺るがすクリティカルな脆弱性で締めくくる一日でした。皆さんの環境では、この5本のうちどれが一番刺さりましたか。よければコメントで教えてください。&lt;/p></description></item></channel></rss>