🌐 This article hasn't been translated yet — showing the Japanese version.
「Apache Struts 2」に未認証DoSの脆弱性、ロケール処理でヒープが無限に肥大化 thumbnail
VULNERABILITY Importance High 2026-08-26

「Apache Struts 2」に未認証DoSの脆弱性、ロケール処理でヒープが無限に肥大化

⏱ approx. 2 min views 47 likes 0 LOG_DATE:2026-08-26
TOC

未認証のリクエストだけでヒープが尽きる #

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)攻撃だ。

1. 大量リクエスト送信
ロケール値を毎回変えたリクエストを送りつける。
2. キャッシュが無制限に増加
ロケールごとにメッセージキャッシュが生成され続ける。
3. ヒープ枯渇でDoS
Javaヒープが尽き、全ユーザーへの応答が止まる。

対策: バージョンアップかロケール固定 #

修正版は6.11.0以上/7.3.0以上。アップグレードがすぐ難しい場合も、struts.locale定数で固定ロケールを設定しておけばリクエスト由来の値を使わなくなり、回避策として機能する。古いStrutsを塩漬け運用している組織は珍しくなく、Equifaxの教訓を思い出しつつパッチ適用の優先度を上げるべき脆弱性だ。

𝕏 Post B! Hatena

COMMENTS 0

No comments yet — be the first to leave one.

Post a comment