未認証のリクエストだけでヒープが尽きる #
Apache Struts 2 に、認証不要でサーバのメモリを枯渇させられる脆弱性(CVE-2026-73635)が公表された。対象はStruts 6.0.0〜6.10.0 および 7.0.0〜7.2.1。CVSSv3スコアは7.5、v4では8.7に達する。Strutsはエンタープライズ向けJava Webアプリの定番フレームワークで、2017年のEquifax大規模情報漏えいもStrutsの脆弱性が発端だった過去を持つ。今回は情報漏えいではなくDoSだが、影響範囲の広さは変わらない。
攻撃メカニズム: ロケールキャッシュの無限成長 #
Strutsはバリデーションエラーなどのメッセージをロケールごとにキャッシュして高速化している。問題は、固定ロケールを設定しない既定構成では、このキャッシュキーがリクエストのAccept-Languageヘッダなど攻撃者が自由に指定できる値になっている点だ。異なるロケール値を送り続けるだけでキャッシュエントリが際限なく積み上がり、最終的にJavaヒープを食いつぶしてサービス全体を停止させられる。認証も特殊な権限も不要で、単純なリクエストの繰り返しだけで成立する典型的なリソース枯渇(CWE-770)攻撃だ。
対策: バージョンアップかロケール固定 #
修正版は6.11.0以上/7.3.0以上。アップグレードがすぐ難しい場合も、struts.locale定数で固定ロケールを設定しておけばリクエスト由来の値を使わなくなり、回避策として機能する。古いStrutsを塩漬け運用している組織は珍しくなく、Equifaxの教訓を思い出しつつパッチ適用の優先度を上げるべき脆弱性だ。
COMMENTS 0
まだコメントはありません。最初のコメントを投稿しよう。