• 会員限定
  • 2008/07/25 掲載

実践!Webセキュリティ点検術(6)HTMLインジェクションの調査と対策

Webアプリケーションに対するペネトレーションテスト(前編)

  • icon-mail
  • icon-print
  • icon-hatena
  • icon-line
  • icon-close-snsbtns
会員になると、いいね!でマイページに保存できます。
情報漏えいの防止、内部統制をはじめ、昨今の情報システム部門に求められるセキュリティの課題は非常に多い。いかにセキュアなシステムを構築しているつもりであっても、思わぬところに落とし穴があればすべてが水泡に帰す。本特集では、守る側ではなく攻める側に立って自身のシステムをチェックする「ペネトレーションテスト(疑似侵入テスト)」のノウハウをご紹介するとともに、多角的なセキュリティに対する考え方を持つ必要性を説く。第6回はHTMLインジェクションの調査と対策についてご紹介する。

執筆:田嶋 祐介


※弊社および筆者はこの記事によって引き起こされた損害賠償責任、刑事責任、一切の責任を負いません。調査を実施する場合は、調査が許可されたテスト環境に対してのみ行ってください。場合によっては「不正アクセス禁止法」などに抵触することもあるので自己責任の上で十分に注意して実施してください。


Webアプリケーションのセキュリティ

 前章で述べられているとおり、Webサーバのセキュリティには2段階ある。前章で紹介したWebサーバ自身のセキュリティと本章で紹介するWebサーバの上で動作するWebアプリケーションのセキュリティだ。
 Webアプリケーションとは、ショッピングサイト、ブログ、SNS、掲示板など、Webサーバ上で動作する、動的なコンテンツを実現するアプリケーションプログラムである。Webアプリケーションは、ユーザーからのリクエストに対し、内部で処理を行い、それに応じた結果をユーザーに返す、という動作をしている。

 Webアプリケーションの脆弱性とは、このような動作において、データ取り扱い処理の失念や考慮の不足に起因するセキュリティ上の問題のことを指す。セキュアなWebアプリケーションシステムを開発するためには、Webアプリケーション特有の脆弱性を理解し、対策していくことが重要だ。ここでは、一部の代表的な脆弱性(HTMLインジェクション、SQLインジェクション)について、その調査方法、攻撃手法と想定される被害、対策方法をご紹介する。

HTMLインジェクション

 HTMLインジェクションとは、ユーザーのブラウザ上において、サイト管理者の意図しないHTML(スクリプトも含む)を混入させられてしまう問題である。今日のWebサイトは、ユーザーに対し一方的に情報を送るだけでなく、ユーザーとの対話的なやりとりを可能にしている。ショッピングサイト、ブログ、SNS、掲示板などを見て分かるように、ユーザーからのデータを受け取り、受け取ったデータを処理して、動的にページを生成しているのである。クライアント(ユーザーのブラウザ)からサーバ(Webサイトを構成するWebサーバ)へのHTTPリクエスト中に含まれるパラメータが、何らかの形でHTTPレスポンスボディ(ユーザーに返されるページ)に含まれる場合を考えてみよう(図1)

図1 WebブラウザとWebアプリケーションのやりとり



 このとき、含まれるパラメータにHTMLと解釈されてしまうような文字列があった場合、ユーザーのブラウザは、管理者が本来意図していないページを表示することになる。

 ここで、よく耳にするクロスサイトスクリプティング(以下XSS)という言葉との関連について確認しておきたい。XSSとは、HTMLインジェクション脆弱性を利用した攻撃手法の一形態である。攻撃者に用意されたスクリプトが、攻撃者のサイトを踏んだユーザーから目的のサイトへ送られるために、スクリプトがサイトをまたがって(クロスして)実行されるという意味でその名が付いている。しかし、スクリプトがサイトをまたがるかどうかは、この脆弱性の性質とは直接関係がない。また、スクリプトがサイトをまたがない形のスクリプトインジェクションや、スクリプトを使わないフレームインジェクションなどは、XSSの定義からは外れてしまう。よって、ここではこの種の脆弱性を総称して、HTMLインジェクションという呼び方をする(図2)

図2 HTMLインジェクションの位置づけ



 これらの脆弱性はいずれも、HTTPレスポンスにHTMLが混入されることによりユーザー側で攻撃が発動してしまう、という点において共通している。HTMLインジェクションを対策するには、Webアプリケーションからユーザーのブラウザに向けてHTMLを出力する際、ユーザーのブラウザ上でサイト管理者が本来意図しないHTMLとして解釈が行われないように、文脈に合わせたエンコードを行う必要がある(対策については後述)。
関連タグ タグをフォローすると最新情報が表示されます
あなたの投稿

    PR

    PR

    PR

処理に失敗しました

人気のタグ

投稿したコメントを
削除しますか?

あなたの投稿コメント編集

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

通報

このコメントについて、
問題の詳細をお知らせください。

ビジネス+ITルール違反についてはこちらをご覧ください。

通報

報告が完了しました

コメントを投稿することにより自身の基本情報
本メディアサイトに公開されます

必要な会員情報が不足しています。

必要な会員情報をすべてご登録いただくまでは、以下のサービスがご利用いただけません。

  • 記事閲覧数の制限なし

  • [お気に入り]ボタンでの記事取り置き

  • タグフォロー

  • おすすめコンテンツの表示

詳細情報を入力して
会員限定機能を使いこなしましょう!

詳細はこちら 詳細情報の入力へ進む
報告が完了しました

」さんのブロックを解除しますか?

ブロックを解除するとお互いにフォローすることができるようになります。

ブロック

さんはあなたをフォローしたりあなたのコメントにいいねできなくなります。また、さんからの通知は表示されなくなります。

さんをブロックしますか?

ブロック

ブロックが完了しました

ブロック解除

ブロック解除が完了しました

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

ユーザーをフォローすることにより自身の基本情報
お相手に公開されます