Apache Struts の4件の脆弱性が、最近公開されたセキュリティアドバイザリで明らかになりました。影響を受けるアプリケーションは、リモートコード実行、サービス拒否(DoS)、ユーザー間のデータ漏えいといったリスクにさらされます。
問題が見つかったのは、レガシーなアクションマッピング、10進数のレンダリング、RESTリクエストの処理、ローカライズされたメッセージの書式設定の各機能です。修正は Struts 7.4.0 と 6.12.0 で提供されています。
アドバイザリは2026年8月3日から9月4日にかけて公開され、脆弱性は CVE-2026-104711 から CVE-2026-104714 として識別されています。
CVEデータベースへのアクセス
影響の範囲は、アプリケーションの構成や使用しているコンポーネントによって異なります。すべての Struts 環境が4件すべての脆弱性の影響を受けるわけではありません。
Apache Struts の脆弱性
CVE-2026-104711 は、レガシーな RESTful アクションマッパーにおける OGNL(Object-Graph Navigation Language)インジェクションです。細工したリクエストで式を注入されると、リモートコード実行につながるおそれがあります。
影響を受けるバージョンは、Struts 2.0.0〜2.3.37、2.5.0〜2.5.33、6.0.0〜6.11.0です。Struts 7.0.0〜7.3.0は、OGNL の許可リストを無効にしている場合にのみ影響を受けます。
アドバイザリが示す深刻度は「中程度」です。デフォルトのマッパー、restful2 マッパー、Struts REST プラグインを使用しているアプリケーションは影響を受けません。
Struts 7 は、デフォルト設定では OGNL の許可リストが有効なため、この問題の影響を受けません。管理者は、アップグレードの準備を進める間、レガシーなマッパーを影響を受けない別のマッパーに置き換えることで対処できます。
CVE-2026-104712 では、認証されていない攻撃者が、極端に大きなレスポンスを発生させて CPU と送信ネットワーク帯域を枯渇させることができます。
この欠陥は、リクエストパラメーターが java.math.BigDecimal プロパティにバインドされ、そのプロパティが後から Struts タグライブラリでレンダリングされる場合に発生します。小さなリクエストから、何桁も大きいレスポンスが生成されます。
攻撃者の帯域が限られていても、継続的なサービス妨害を引き起こせます。影響を受けるのは、2.5.14〜2.5.33、6.0.0〜6.11.0、7.0.0〜7.3.0です。
ほかの数値型、JSON プラグインのレスポンス、REST プラグインのレスポンスは影響を受けません。暫定的な回避策としては、レンダリング前にスケールを制限するカスタムの BigDecimal 型コンバーターを使う方法があります。
深刻度が「重要」とされるCVE-2026-104713は、オプションの REST プラグインに影響します。このプラグインはサイズ制限をかけずにリクエストボディをメモリに読み込むため、巨大なリクエストが1件届くだけでヒープメモリが枯渇し、DoS に陥る可能性があります。
影響を受けるバージョンは、2.1.8〜2.3.37、2.5.0〜2.5.33、6.0.0〜6.11.0、7.0.0〜7.3.0です。修正版では、デフォルトの上限が2,097,152文字に設定されています。
より大きなボディが必要なアプリケーションでは、struts.rest.content.maxLength で設定を調整できます。アップグレードできるまでの間は、リバースプロキシやサーブレットコンテナーでリクエストサイズの上限を設定することが推奨されます。
CVE-2026-104714 は、日付や時刻の引数を含むローカライズ済みメッセージで使われる共有フォーマッターに影響します。同時リクエストが互いに干渉し、あるユーザーの値が別のユーザーのレスポンスに表示されたり、サーバーエラーが発生したりします。
この問題は、悪意のない通常のトラフィックでも起こり得ます。影響を受けるのは、アプリケーションが独自に定義したメッセージバンドルです。Struts に同梱されているメッセージは対象外です。影響を受けるバージョンは、2.0.0〜2.3.37、2.5.0〜2.5.33、6.0.0〜6.11.0、7.0.0〜7.3.0です。
組織は Struts 7.4.0 または 6.12.0 にアップグレードする必要があります。暫定的な緩和策としては、メッセージへの値の埋め込み前に、日付と時刻の値をあらかじめフォーマットしておく方法があります。サポートが終了したブランチを運用しているチームは、回避策だけに頼らず、サポート対象のリリースへ移行すべきです。
CVEデータベースへのアクセス
サイバー脅威を被害が出る前に阻止し、MTTR を21分短縮。ANYRUN のサンドボックスを SOC に導入しましょう。
翻訳元: https://gbhackers.com/apache-struts-vulnerabilities/