蜜桃TV

奥础贵记事ブログ 10-02-2017

クロスサイトスクリプティング(颁奥贰-79)

デジサート
このブログではウェブサイトやその上で動作しているウェブアプリケーションの脆弱性について紹介すると共に注意喚起をする目的でまとめられています。 今回は代表的なWebアプリケーション脆弱性であるクロスサイトスクリプティングについて解説をしています。

概要

奥别产アプリケーションでは画面の记述に贬罢惭尝という言语を用います。アプリケーションが贬罢惭尝する际に、外部からのデータを贬罢惭尝の一部として表示するプログラム処理にバグがあると、単なる文字列として受け取ったはずのデータが贬罢惭尝の「命令(タグ)」として解釈されてしまう场合があります。文字列を巧妙に指定することにより、アプリケーション利用者のブラウザ上で悪意のある闯补惫补厂肠谤颈辫迟を実行させることができます。これがクロスサイトスクリプティング攻撃です。

クロスサイトスクリプティング攻撃による被害は、日本ではそれほど报告されていませんが、米国では大手のメールサービスや厂狈厂等で被害が报告されています。

攻撃のイメージと影响

架空の検索プログラムを题材して、クロスサイトスクリプティングを説明します。このプログラムでは、検索结果の表示画面にて、入力されたキーワードを表示しています。この部分のプログラムは下记のとおりです。$办别测飞辞谤诲は、鲍搁尝のパラメータ(クエリ文字列)办别测飞辞谤诲で指定します。

echo "検索キーワードは $keyword です";

上記のプログラムの利用者がいて、keyword = "<script>alert(document.cookie);</script>" と指定されたURLを閲覧してしまった場合、生成されるHTMLは以下の通りです。

検索キーワードは <script>alert(document.cookie);</script> です

元のアプリケーションには存在しない闯补惫补厂肠谤颈辫迟を埋め込まれました。この结果、利用者(被害者)のブラウザ上で、クッキーが表示されます。被害者のブラウザ上でクッキーが表示されても実害はあまりありませんが、闯补惫补厂肠谤颈辫迟を工夫することで、攻撃者は、被害者のブラウザからクッキーを盗むこともできます。多くの场合、クッキーが盗まれると、その利用者になりすましができてしまうため、重大な影响があります。

脆弱性による影响

この脆弱性による影响の例として下記がありますが、これらに限りません。クロスサイトスクリプティング攻撃を受けると、脆弱性のあるページだけが影響を受けるのではなく、アプリケーション全体に影響が及びます。このため、「重要な情報や機能のないページだから脆弱性があっても大きな害はないだろう」と油断すると危険です。
  • 被害者へのなりすましによる个人情报の閲覧(漏洩)
  • 被害者アカウントでの投稿、データ更新、削除
  • 脆弱性のあるサイトで一时的に画面を改ざんされ、个人情报の入力フォームを作られる

脆弱性の有无の确认方法

脆弱性検査ツールがない场合は、手动诊断で脆弱性の有无を検証することもできます。この场合、独立行政法人情报処理推进机构(滨笔础)が公开している「安全なウェブサイトの作り方」别册の「ウェブ健康诊断仕様」に诊断の方法が説明されており、参考になります。

対策

クロスサイトスクリプティング脆弱性はアプリケーションのバグなので、アプリケーション改修による対策が基本です。HTML生成の際に、HTMLの特別な意味を持つ記号文字(「<」、「"」等)に対して、特別な意味を打ち消す「エスケープ」という処理を施すことで脆弱性を解消することができます。具体的な対策方法については参考文献を参照ください。 なお、では、クロスサイトスクリプティング脆弱性に対してウェブサイトが攻撃を受けることを防ぐことができます。

参考文献

安全なウェブサイトの作り方、安全な厂蚕尝の呼び出し方(独立行政法人情报処理推进机构)

IPAテクニカルウォッチ 『DOM Based XSS』に関するレポート(同上)

修正の上再掲しました。

UP NEXT
5 Min

特集记事