セキュリティ

Java業務システムの保守を委託する情報システム担当者・業務責任者向け

Strutsを更新したら終わり?業務データを受け取る設定と動作を確かめる

10月29日公表のJVN#82782759は、Strutsの特定の構成で入力値の制限が効かない問題です。対象バージョンだけで判断せず、RESTの利用・設定・コードの条件を保守会社へ確認し、更新後の通常入力と許可しない変更を試す進め方を解説します。

業務システムの一覧を利用者に向いた同じモニターで確認する情報システム担当者と開発担当者のイメージ
製品名だけでなく、実際に動くシステムの版・設定・担当をそろえて確認します(架空の画面・イメージ)。

こんな方に向けた記事です

Javaで作られた業務システムを保守会社へ委託している情報システム担当者・業務責任者向け。Strutsの利用や構成が不明な場合に、調査と更新の依頼範囲を整理する記事です。

この記事でわかること

  • 影響はStrutsの特定の版・REST入力・設定・コードの組合せで確認する
  • 7.4.0以降への更新に加え、必要な設定とコードの対応を確認する
  • 通常入力が使え、許可しない変更が保存されないことを業務の例で確かめる

保守会社の「更新済み」を、どこまで確かめるか

取引先から送られた注文データを、社内の受注システムへ取り込んでいる。使っている技術の名前は詳しく分からないが、保守会社から「Strutsの更新を予定します」と連絡が来た。業務担当者として気になるのは、入力が止まらないか、どこまで直せば確認を終えられるかという点ではないでしょうか。

今回の確認は、ライブラリの版をそろえることに加えて、外部から受け取った値を業務データへ入れる制限が、実際の構成で働くかを見る作業です。まず対象の条件を調べ、その結果に合わせて修正と試行の範囲を決めます。

記事の業務例はSHINJIDAIによる架空の設計例です。特定企業の事故や、当社の診断・復旧実績を示すものではありません。2026年10月30日に確認した公開資料を基に整理しています。

保守会社と共有したい四つの確認
構成を調べる稼働中の版・機能・設定・コード
対象を判断該当/対象外/未確認を分ける
修正と試行更新・設定・必要なコードを対応
業務で確認通常入力と許可しない変更を照合

SHINJIDAI独自作成。対象システムを限定し、根拠を残して確認する進め方です。

10月29日の公表は、特定の入力経路の問題

JVNは2026年10月29日、JVN#82782759を公開しました。対象はApache Struts 2の7.2.1〜7.3.0で、RESTプラグインの入力を受ける処理に関する問題です。StrutsはJavaのWebシステムを作るための基盤で、RESTプラグインはJSONやXMLなどの形式でデータを受け渡す機能を持ちます。

公表資料が示す条件は、struts.parameters.requireAnnotations=trueで入力を制限し、RESTの入力を受けるActionまたはModelで@JsonAnySetterを使う構成です。@JsonAnySetterは、あらかじめ項目名を固定していないデータを受け取る指定です。この経路で@StrutsParameterによる確認が行われず、意図しない値の設定からデータ改ざんにつながる可能性が示されています。

ここから、すべてのJavaシステムが影響する、自社で改ざんが起きた、という結論には進めません。対象条件の照合と、実際に何が保存・利用されるかの確認が必要です。

「使っていません」には、確認した環境と根拠を添えてもらう

保守会社へは、稼働しているシステム名と環境、Struts本体とRESTプラグインの版、該当の設定、@JsonAnySetterの使用箇所を確認してもらいます。設計書や開発用の依存一覧だけでなく、現在動いている配備物と合うかも確認する範囲に含めます。

業務側は、取引先からの連携、スマホや社内画面からの登録、定期取込みなど、入力が届く場面と止められない時間を整理します。開発担当は、その入力がどの処理で受け取られ、どの記録へ保存されるかを追います。両者を対応させると、試す業務を選びやすくなります。

構成やソースを確認できなければ「未確認」として、調べる担当と次の確認日を残します。対象外という報告にも、何を確認して該当しないと判断したかを添えます。ソースを持っていないことを理由に、契約や権限を飛び越えて外部から試す進め方は取りません。

対象判定の記録に残すもの

実際の稼働環境

システム・配備物・版・確認日時を対応

入力の経路

RESTの利用と、受け取る処理を確認

設定とコード

認可の設定、any-setterの有無と到達先

判断と次の担当

該当・対象外・未確認、その根拠と残る調査

SHINJIDAI独自整理。機密の値や認証情報を共有するための一覧ではありません。

版の更新と、追加設定・コードの対応を一つの作業にする

JVNは7.4.0以降の最新版への更新に加え、struts.rest.anySetter.requireAnnotations=trueを設定し、許可するany-setterのメソッド等へ@StrutsParameter(allowDynamicKeys = true)を付ける対策を案内しています。担当者が実際の構成と最新版の公式資料を確認して適用します。

Apacheの公式説明では、この追加設定は互換性のため初期状態がfalseです。「7.4.0を入れた」という版の情報だけでは、追加の制限を有効にしたかが分かりません。修正報告には、設定と必要なコードをどう対応させ、何を試したかも残します。なお、7.4.0の公開は10月2日で、今回のJVN公開日と同じではありません。

一方で、必要な入力を調べずに、広い範囲へ動的な項目の許可を付けることも避けます。業務で必要な項目と、それを保存してよい条件を設計し、余計な値を通さないことを確かめます。すぐに更新できない場合の回避策もJVNに示されていますが、構成・業務への影響を評価して責任者と選びます。

受注の数量は変えられ、承認済みの状態は勝手に変わらないか

更新後の試行は、画面が開くかだけで終えません。例えば受注システムなら、担当者が編集してよい数量の修正が反映され、通常の連携ファイルも取り込めるかを確かめます。同時に、その入力から変更を許していない承認状態や管理項目が、保存先で変わっていないかを確認します。ここで挙げた項目は架空の業務例で、今回の問題が特定の承認機能を必ず変えられるという説明ではありません。

開発担当は、検証環境で許可する入力と許可しない入力の期待結果を整理し、実行結果と保存先を照合します。業務担当は通常の登録・訂正・再送・定期処理が使えるかを確認します。エラーが画面に出るかだけでなく、不要な値が残らず、処理後の記録が正しいことが判断点です。

試行に実顧客のデータや認証情報を持ち込む必要はありません。用意した架空データと限定した権限で確かめ、ログに不要な内容を残さない扱いも決めます。正しい入力が止まった場合は原因と必要な許可を調べ、制限をまとめて無効にすることを通常の解決策にしません。

更新後に、二つの結果を確かめる(架空の受注業務)

通常の業務が使える

  • 編集を許す数量を訂正できる
  • 決めた連携データを取り込める
  • 再送しても注文が二重にならない

許可しない変更を残さない

  • 入力で変えない管理項目を合意
  • 想定しない値を保存先へ残さない
  • 確認結果と残る制約を記録する

SHINJIDAI独自作成。攻撃手順ではなく、担当者が合意する業務の受入条件の例です。

利用者側に向いたノートパソコンの業務入力画面を、業務責任者と開発担当者が確認するイメージ
更新の適用と、業務で使えることの確認を分けて残します(架空の画面・イメージ)。

調査・修正・切替を分けて依頼すると、範囲が決めやすい

まず調査だけを依頼し、対象の構成、確認できない箇所、影響する業務、必要な修正と試行を整理する案があります。その後で、保守契約内の更新・既存設定の変更・コード修正・連携側の調整を比較します。新しいシステムへの全面刷新を最初の前提にはしません。

利用中の機能で必要な制限を満たせるなら、設定とコードの対応を優先します。入力形式が複数の業務へ広がっている場合は、受け取る項目を明確にする設計や、外部連携との役割分担も検討します。どこまで作り直すかは、現状調査と受入条件、継続保守を見て判断します。

切替では、止める処理と時間、実施担当、バックアップと復元の確認、通常処理の再開条件、問題が出た場合の連絡先を合意します。単純に古い構成へ戻すと元の問題を残す可能性があるため、切戻し時のリスクと暫定運用も責任者が確認します。

費用を左右するのは、システム数よりも、確認できるソースと構成情報、入力経路・連携の数、設定の違い、検証環境、移行や停止時間の制約です。調査結果、変更箇所、試行結果、残る課題を引き継ぐ資料と、以後の更新・変更保守の担当を見積の対象としてそろえます。

完了報告に、版・設定・業務確認をそろえる

技術側は、対象の配備物と版、設定・コードの対応、試行結果を残します。業務側は、通常の登録・訂正・取込みが再開できたかを確認します。未確認の入力経路が残れば、その範囲と次の担当を明記し、全体の確認済みへまとめません。

これらは、今回決めた修正と受入範囲の確認です。侵害がないことや、今後すべての問題を防げることの証明にはなりません。不審な変更が見つかった場合の調査は、必要な専門担当者と役割を分けて進めます。

  • 稼働中の版・REST利用・設定・該当コードを根拠で照合した
  • 追加設定と必要なコードの対応を、配備した内容で確認した
  • 通常の登録・訂正・取込みと、許可しない変更の保存結果を確かめた
  • 再送・担当交代・停止と再開の条件を確認した
  • 未確認の経路、暫定運用、保守窓口と次の確認日を残した

相談では、調べるシステムと、業務で確かめる範囲を決める

SHINJIDAIは課題整理・提案から設計・開発・導入まで伴走しています。今回のような確認では、まず現在の保守窓口と資料の範囲、入力が届く業務、確認できていない条件を整理します。既存の保守・設定・連携を残す案と、必要な修正を比較します。

合意した範囲で入力の受け渡し・制限・履歴を設計し、コードや連携を実装する場合は、架空データによる試行と通常業務の再開確認までを対応させます。調査の権限、双方の役割、検証環境、適用・保守の範囲は着手前に合意します。

初回は、システムの用途と保守体制、分かっている構成、不明な点の概要から相談できます。ソースコードや実データ、認証情報を最初から提出することは必須ではありません。事故の原因究明、監視や緊急対応の体制を一律に約束するものではなく、必要な専門調査とは役割を分けます。

業務の課題整理から、設計・開発・導入まで

業務システムの入力経路と、修正・確認の範囲を整理する
SHINJIDAIにご相談ください。

  • StrutsやRESTを使うシステムと保守窓口が分からない
  • 更新済みだが設定と業務確認の範囲が曖昧
  • 通常入力を続けながら必要な修正を進めたい
株式会社SHINJIDAI課題の整理から伴走

現在の構成と入力が届く業務、残る未確認を整理し、既存保守・設定・コード修正・連携を比較します。合意した範囲を設計・実装し、検証環境の試行と通常業務の再開条件を対応させます。

業務システムの入力確認と修正の範囲を相談する

初回は用途・保守体制・分かっている構成の概要から。ソースや実データ、認証情報の提出は必須ではありません。

自社の該当や被害は実調査で確認します。侵害の専門調査や監視・緊急対応の体制、効果を一律に約束しません。

ID・パスワードや顧客データは、フォームに記載しないでください。

調査・実装・検証の役割を確認する

出典

2026年10月30日に公開資料を確認しました。製品・取引先ごとの説明を、すべての契約・環境に共通する条件とは扱いません。図と業務例はSHINJIDAI独自作成です。

よくある質問

Strutsを使っているだけで、すべて影響しますか?

JVNが示す対象は7.2.1〜7.3.0で、REST入力、認可の設定、@JsonAnySetterの使用という条件があります。利用有無や版が不明なら未確認として調査し、Struts全体への影響や被害を決めません。

7.4.0に更新済みなら、この確認は不要ですか?

Apacheの説明ではany-setterを制限する追加設定は初期状態でfalseです。実環境の設定、必要なアノテーション、通常業務と制限対象の入力が期待どおりかを併せて確認します。

WAFを入れていれば、アプリ側はそのままでよいですか?

WAFの存在だけで、アプリの設定や保存先への入力制御を確認したことにはなりません。適用できる対策と影響を保守担当が評価し、アプリ側の修正と検証の記録を残します。

どのシステムで使っているか分かりません。何から頼めばよいですか?

調査対象の業務システムと保守窓口を絞り、稼働中の構成・版・RESTの利用・該当コードの有無を根拠付きで確認する作業から相談します。未確認を対象外にせず、更新の実施は調査結果と役割を合意して進めます。

通常入力が止まったら、制限を無効へ戻してもよいですか?

制限を一括で無効にすることを通常の解決策にしません。必要な入力、許可する範囲、コードの対応を確認し、業務を続ける暫定手順と適用・切戻し条件を責任者と決めます。

今回の問題で、すでに情報が改ざんされたということですか?

公表された可能性と、自社で起きた被害は別です。記事から自社の侵害を判断せず、疑わしい変更やログがある場合は、必要な専門担当者と証拠保全・調査の役割を分けて確認します。

THE FUTURE OF JAPAN.
THE FUTURE
OF JAPAN.