サイバーセキュリティ

Apache Struts 2 RESTプラグインにおける、@StrutsParameterの制限が@JsonAnySetterに適用されない問題

Apache Struts 2のRESTプラグインに、@JsonAnySetterが指定されたフィールドやメソッドに対して@StrutsParameterの認可処理(検証・ブロック)が行われない問題がJVNで公表されました。対象はApache Struts 2のバージョン7.2.1から7.3.0で、@StrutsParameterが有効化され、RESTリクエストのボディからバインドされるアクションまたはモデルクラスで@JsonAnySetterを宣言している場合に発生すると記載されています。開発者は7.4.0以降へのアップデートを案内しています。

最終確認日: 2026-10-29

この発表の要点

企業・自治体への影響

Apache Struts 2を利用してRESTによるJSON・XMLのデシリアライズを行うシステムを保有する企業・自治体に影響があります。特にソフトウェア開発、情報システム、Webアプリケーション運用を担う部門が関係します。対象バージョンの利用状況と、@JsonAnySetterの使用有無の確認が必要です。

対応すべきこと

対象部門: 情シス 経営者

対応期限:速やかに確認

基本データ

企業・団体 JPCERT/CC・IPA(JVN)
業界 IT・ソフトウェア
発表日 2026-10-29
分類 サイバーセキュリティ

発表された内容

公開日:2026/10/29 最終更新日:2026/10/29

JVN#82782759
Apache Struts 2 RESTプラグインにおける、@StrutsParameterの制限が@JsonAnySetterに適用されない問題

The Apache Software Foundationが提供するApache Struts 2のRESTプラグインには、Jacksonの@JsonAnySetterが指定されたフィールドやメソッドに対して@StrutsParameterの制限が行われない問題が存在します。

Apache Struts 2 バージョン7.2.1から7.3.0

Apache Struts 2 RESTプラグインに含まれるParameterAuthorizingModuleは、JSONやXMLのリクエストボディからオブジェクトへのデシリアライズを行う際に、@StrutsParameterの指定を参照して、許可されていないパラメータがセットされないように検証・ブロックを行います。また、RESTプラグインはデシリアライズを行うエンジンとしてJacksonを内包しています。Jacksonには、動的キーを受け取りマッピングを行う@JsonAnySetterアノテーションという機能があります。

このParameterAuthorizingModuleには、@JsonAnySetterが指定されたフィールドやメソッドに対して、上記の認可処理(検証・ブロック)が行われない問題が存在します。

この問題は、@StrutsParameterが有効化されており(struts.parameters.requireAnnotations=true)、アプリケーションがRESTリクエストのボディからバインドされるアクションまたはモデルクラスにおいて@JsonAnySetterを宣言している場合にのみ発生します。

@JsonAnySetterが指定されたメンバーへの入力値に対して@StrutsParameterによる認可チェックが行われず、データの改ざんにつながる可能性があります。

アップデートする
開発者が提供する情報をもとに、バージョン7.4.0およびそれ以降の最新版にアップデートしてください。
そのうえで、struts.rest.anySetter.requireAnnotations=trueを設定し、any-setterとして利用する各メソッドに @StrutsParameter(allowDynamicKeys = true)アノテーションを付与してください。 こうすることで、アノテーションが付与されていないany-setterには、値が設定されなくなります。

ワークアラウンドを実施する

RESTのパラメータが注入されるActionやModelクラスでは@JsonAnySetterアノテーションを用いない
@JsonAnySetterが必要な場合は、値を格納する前にアプリケーション側で検証する

ベンダ

リンク

The Apache Software Foundation

[WW-5712] ParameterAuthorizingModule does not wrap the Jackson any-setter in the REST plugin

StrutsParameter Annotation

この情報は、情報セキュリティ早期警戒パートナーシップに基づき下記の方がIPAに報告しました。
報告者:三井物産セキュアディレクション株式会社 小河哲之 氏

本製品の開発者は、上記の方から報告を受けるより前にDarren Carreras, GitHub: carrerasdarren-cell 氏から報告を受け、対応を進めました。
JPCERT/CCは開発者との調整を行い、JVN公表に至りました。

JPCERT 緊急報告

JPCERT REPORT

CERT Advisory

CPNI Advisory

TRnotes

CVE

JVN iPedia

JVN
HOME
JVNとは
脆弱性レポートの読み方
脆弱性レポート一覧
VN_JP
VN_JP(連絡不能)
VN_VU
VN_TA
TRnotes
JVN iPedia
MyJVN
JVNJS/RSS
ベンダ情報一覧
連絡不能開発者一覧
脆弱性情報の届出
お問合せ先

Copyright (c) 2000-2026 JPCERT/CC and IPA. All rights reserved.

出典: jvn@jvn.jp
URL: https://jvn.jp/jp/JVN82782759/

時系列

主な数値

影響を受けるバージョン(開始) 7.2.1バージョン
影響を受けるバージョン(終了) 7.3.0バージョン
対応版(推奨アップデート先) 7.4.0バージョン

この事例から確認すべきポイント

本件は、Apache Struts 2のRESTプラグインに含まれるParameterAuthorizingModuleが、Jacksonの@JsonAnySetterが指定されたフィールドやメソッドに対して@StrutsParameterによる認可処理を行わないという脆弱性として公表されています。原文によれば、この問題は@StrutsParameterが有効化されており(struts.parameters.requireAnnotations=true)、RESTリクエストのボディからバインドされるアクションまたはモデルクラスで@JsonAnySetterを宣言している場合にのみ発生するとされています。影響としては、データの改ざんにつながる可能性が記載されています。実務上は、まず自社がApache Struts 2を利用しているか、そのバージョンが7.2.1から7.3.0の範囲に該当するかを確認し、該当する場合は開発者の案内に従い7.4.0以降への更新を検討することが重要です。加えて、回避策として、REST用のActionやModelクラスで@JsonAnySetterを用いない、必要な場合は値を格納する前にアプリケーション側で検証する、といった対応が示されています。現時点で取得できた本文からは、影響範囲の詳細な件数や実際の被害状況は確認できませんでした。詳細は公式出典をご確認ください。

公式出典

更新履歴

公開日: 2026-10-29 / 最終確認: 2026-10-29

執筆・確認主体

この記事は、上記の公式出典を一次情報として PRaze編集部(株式会社スキルマーク)が構造化・要約したものです。 要約と分類の生成にはAIを使用しています。

数値・日付・組織名・金額は公式発表の原文から転記しており、 原文に記載のない事項を補って書くことはしていません。 内容の正確性は公式出典をご確認ください。

編集・公開: PRaze編集部(株式会社スキルマーク) / 出典確認日: 2026-10-29

関連事例

自社のプレスリリースをPRazeに掲載しませんか?

無料でプレスリリースを掲載する