検索
連載

Validatorを利用した入力値チェックの注意点Strutsで作るセキュアWebアプリケーション(3)(3/3 ページ)

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

入力値チェックが回避される脆弱性対策

影響を受けるアプリケーション

 IPAの解説にあるように、入力値チェックが回避されてしまうこの問題は、Validatorを実装したすべてのアプリケーションに影響する。Cancel機能による入力値チェックの回避で例を挙げたように、Cancelタグを使用していないから関係ない、という問題ではなく、Action#isCancelledメソッドによるCancel状態のチェックを行っていないアプリケーションであれば影響が及ぶ。

バージョンアップができる場合の対策

 バージョンアップが可能な環境なら、Struts 1.2.9、Struts 1.3.0へバージョンアップすることにより、問題が解決できる。

バージョンアップができない場合の対策

 対策が必須とはいえ、バージョンアップが難しい環境もあるだろう。以下に対策例をいくつか挙げるので、実現可能な手法を選択し、何らかの対策を取ることを検討していただきたい。

  1. すべてのActionクラスでisCanceledメソッドを呼び出し、チェックする
     すべてのActionクラスでisCanceledメソッドを呼び出し、チェックするように実装すれば、問題を解決することが可能である。Cancel機能を使用しないアプリケーションにおいてtrueが返されたら、特定のページに遷移させるように実装すればよい。

  2. ベースActionクラスを作成し、Cancel時のデフォルト動作を宣言しておく
     あらかじめ基底Actionクラスを使用しているような環境ならば、基底Actionクラス内で、protectedメソッドとして、Cancel時のデフォルト動作を宣言しておけばよいだろう。1.と同じくCancel機能を使用しないアプリケーションにおいてtrueが返されたら、特定のページに遷移させるように実装すればよい。

  3. RequestProceserを書き換えてCancel機能を無効にする
     Cancel機能はDispatchActionの仕組みで代替実装が可能なため、Cancel機能自体を使用していない環境も多いだろう。その場合は、RequestProceserをカスタマイズしてCancel機能を無効にしてしまうことでも、対策することが可能だ。

 Cancel機能を無効にするための実装例を以下に記述する。

(1)struts-config.xmlのcontroller要素で設定されているRequestProcessorのサブクラスを作成し、processValidateメソッドをオーバーライドする。

public class CustomRequestProcessor extends TilesRequestProcessor {
  protected boolean processValidate(HttpServletRequest request,
    HttpServletResponse response,
    ActionForm form,
    ActionMapping mapping)
    throws IOException, ServletException {
  //cancel機能を無効化
  request.setAttribute(Globals.CANCEL_KEY, null);
  return super.processValidate(request, response, form, mapping);
  }
}

TilesRequestProcessorを使っていた場合

(2)作成したクラスを使用するように、struts-config.xmlを修正する。

processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>

processorClass="jp.mbsd.action.CustomRequestProcessor"/>

TilesRequestProcessorを上記で作成したCustomRequestProcessorに置き換える

 以上、Struts 1.2.8以前のバージョンに存在する脆弱性を中心にValidatorプラグインを使用する際の注意点について解説した。繰り返しになるが、大きな危険を持つ脆弱性であるため必ず対策を取るようにしていただきたい。

Profile

安西 真人(あんざい まさと)

三井物産セキュアディレクション株式会社
テクニカルサービス事業部 技術グループ Webセキュリティチーム
エンジニア

Webアプリケーションのシステム開発経験を生かし、セキュリティコンサルタントとして主にWebアプリケーションのセキュリティガイドライン策定業務などに従事している。大手保険会社、出版社などへの導入実績を持つ。



Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       

Security & Trust 記事ランキング

  1. 2025年、LLMの脆弱性が明確になるなど、セキュリティとクラウドに関する8つの変化
  2. 「SMSは認証に使わないで」 米CISA、モバイル通信を保護する8つのベストプラクティスを公開
  3. “ゼロトラスト”とトラスト(信頼性)ゼロを分かつものとは――情報セキュリティ啓発アニメ「こうしす!」監督が中小企業目線で語る
  4. Google Cloud、2025年のサイバーセキュリティ予測を発表 AIがサイバー攻撃にもたらす影響とは?
  5. 2025年に押さえるべきセキュリティの重要論点をガートナーが発表 新しいリスク、脅威、環境の変化、法規制などの動きを把握する指標に使える
  6. 終わらせましょう。複雑過ぎるKubernetes/クラウドネイティブが生む心理的安全性の低下を――無料でクラウドセキュリティの勘所が分かる130ページの電子書籍
  7. よく聞く「複雑化するサイバー攻撃」は具体的にどう複雑なのか? 一例を医療系企業のランサム事例とともに解説
  8. 経営層の約7割が「セキュリティ対策は十分」一方で6割以上がインシデントを経験、1位の要因は?
  9. ゼロトラストの理想と現実を立命館大学 上原教授が語る――本当に運用できるか? 最後は“人”を信用できるかどうか
  10. NIST、3つのポスト量子暗号(PQC)標準(FIPS 203〜205)を発表 量子コンピュータ悪用に耐える暗号化アルゴリズム、どう決めた?
ページトップに戻る