検索
連載

サーブレットコンテナが抱える問題を認識するStrutsで作るセキュアWebアプリケーション(2)(1/3 ページ)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

 第1回「適切なエスケープ処理でクロスサイトスクリプティングに備える」では、Strutsカスタムタグを使用する際の注意点を解説した。今回はサーブレットコンテナが抱える問題にまで視野を広げて、クロスサイトスクリプティング(Cross Site Scripting:XSS)に関する注意点を考察していこう。

エラーページで動作するスクリプト

 アプリケーションが返すレスポンスは、必ずしもアプリケーションの開発者が作成したものとは限らない。例えば、アプリケーション内において例外が発生した場合、明示的な指定がなければ製品のデフォルトエラーページが表示される。デフォルトエラーページはデバッグ用に用意されているものが多いため、表示内容には問題の起因となったパラメータやスタックトレースが含まれていることがある。

 では、デフォルトエラーページ内に出力される内容にスクリプトとして動作する値が含まれていたときには、どのような挙動が示されるのだろうか。渡されたパラメータを例外としてスローするアプリケーションを作成し、動作を確認してみよう。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 作成したアプリケーションのクエリストリングに以下を指定して、リクエストを発行してみる。

inputMsg=<script>alert('XSS');</script>


画面1 /ThrowsException.doのクエリストリングにinputMsg=&lt;script&gt;alert('XSS');&lt;/script&gt;を指定
画面1 /ThrowsException.doのクエリストリングにinputMsg=<script>alert('XSS');</script>を指定

 Tomcat 5.5.15で確認した結果、パラメータは正しくHTMLエンコードされ、スクリプトは動作しなかった。

 では、HTMLエンコードはどのタイミングで行われているのだろうか。Strutsのソースコードを追っても、それらしい実装は見当たらない。エラーページはサーブレットコンテナによって作成されるので、サーブレットコンテナがHTMLエンコードを行っていると考えるのが自然だろう。

 サーブレットコンテナごとの動作の違いを見ていくと、HTMLエンコードが漏れている実装があった場合に、スクリプトが動作することが確認できた。例えば、Tomcat 4.1.27はエラーページのHTMLエンコードを行わない実装となっているため、同じアプリケーションを実行するとスクリプトが動作する。

画面2 Tomcat 4.1.27ではスクリプトが動作する
画面2 Tomcat 4.1.27ではスクリプトが動作する

 このように製品のデフォルトエラーページを使用する際のHTMLエンコードは、サーブレットコンテナ依存の問題となっているため、クロスサイトスクリプティングの脆弱性が存在しないことを必ず確認する必要がある。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ

Security & Trust 記事ランキング

  1. 「SMSは認証に使わないで」 米CISA、モバイル通信を保護する8つのベストプラクティスを公開
  2. 終わらせましょう。複雑過ぎるKubernetes/クラウドネイティブが生む心理的安全性の低下を――無料でクラウドセキュリティの勘所が分かる130ページの電子書籍
  3. 3割程度のSaaS事業者が標準的なセキュリティ対策をしていない アシュアードがSaaS事業者を調査
  4. 商用国家安全保障アルゴリズム(CNSA)の期限となる2030年までに暗号化/キー管理サービス市場が60億ドルに達するとABI Researchが予測 急成長の要因とは?
  5. AWS、組織のセキュリティインシデント対応を支援する「AWS Security Incident Response」を発表 アラートに圧倒されるセキュリティチームをどう支援?
  6. 中小企業の20%の経営層は「自社はサイバー攻撃に遭わない」と信じている バラクーダネットワークス調査
  7. 「このままゼロトラストへ進んでいいの?」と迷う企業やこれから入門する企業も必見、ゼロトラストの本質、始め方/進め方が分かる無料の電子書籍
  8. ChatGPTやClaudeのAPIアクセスをかたってマルウェアを配布するPython用パッケージ確認 Kasperskyが注意喚起
  9. 「ゼロトラスト」提唱者、ジョン・キンダーバーグ氏が語る誤解と本質――「ゼロトラストの第一歩は『何を守るべきか』を明確にすること」
  10. 「生成AIのサイバー攻撃への悪用」は増加する? 徳丸浩氏が予測する2025年のセキュリティ
ページトップに戻る