XSS(クロスサイトスクリプティング)攻撃とは?事例と対策、体験サイト
公開日:
見出し
クロスサイトスクリプティング(XSS)とは、攻撃者がクロスサイトスクリプティングの脆弱性を持つwebサイトなどのwebアプリケーションで任意のスクリプトを実行できるという脆弱性のことです。
ターゲットとなるサイトのドメイン権限で、そのサイトを閲覧している閲覧者のブラウザで実行します。
クロスサイト(サイト横断)とはなっていますが、これ実際にクロスサイトスクリプティング脆弱性をついた攻撃が当初脆弱性を持つターゲットサイトと攻撃者サイトの組み合わせでサイト横断的に行われていたことからそう呼ばれるようになったものです。現在はサイト横断的とは言えない場合もこう呼ばれています。
Wegサイトの改ざん被害の中でも、このXSS脆弱性を利用したものが非常に多く見受けられます。
引用元:https://www.ipa.go.jp/files/000017316.pdf
XSS(クロスサイトスクリプティング)攻撃の事例
2010年、ユーザーが偽のツイートにだまされて不正なリンクをクリックすると、cookieが盗まれて外部のサーバに転送されてしまうという、クロスサイトスクリプティング(XSS)の脆弱性を突いた不正スクリプトが拡散しました。
Twitterで悪質なスクリプトが流通、cookie盗難の恐れ:IT Media News
予告.in
2008年、犯行予告収集サイト「予告.in」がクロスサイトスクリプティング(XSS)の脆弱性をつかれ、悪意のあるコードが実行されてアクセスと同時に「警視庁爆破する」という犯行予告文を「2ちゃんねる」に強制的に投稿させた事例。
投稿欄のURL部分にエスケープ処理(不正な文字列を無効化する処理)を行っていなかったため、予告投稿欄に不正なコードが埋め込まれていた。
「予告.in」に不正コード埋め込み 閲覧すると2chに犯行予告投稿
Youtube
2010年、YouTubeのコメント機能に存在したクロスサイトスクリプティングの脆弱性をつかれ、動画に付いたコメントが表示されなくなったり、有名人のデマが表示されたり、フィッシングサイトへの誘導が行われたりといった被害が発生した事例。
eBay
2017年、eBayのクロスサイトスクリプティング脆弱性を悪用してアカウント情報を盗む攻撃が行われた事例。
攻撃者はアカウントを乗っ取って既存の出品リストに情報を追加する形で悪質なJavaScriptを埋め込んでおり、利用者がリストをクリックするとそのページに移動し、ページを読み込むとそのコードが実行され偽装されたログインフォームにリダイレクトされてしまう。2016年から2017年にかけては歯科医院用機器のカテゴリが利用されたが、2014年には高級車のカテゴリで行われた。
Hackers still exploiting eBay’s stored XSS vulnerabilities in 2017
XSS攻撃が気付かれにくい理由
ターゲットとなるサイトのドメイン権限で行われるため、同一生成元ポリシーによって制限されているはずの動作が許可されてしまうことになります。
つまり正しい正規のドメイン内で起こるため、気づかれにくいものとなります。
XSS(クロスサイトスクリプティング)攻撃の対策
IPAでは、「安全なウェブサイトの作り方」改訂第7版を公開しています。
この中にXSS(クロスサイトスクリプティング)攻撃への対策として、以下が挙げられています。
1. HTMLテキストの入力を許可しない場合の対策
ウェブページに出力する全ての要素に対して、エスケープ処理を施す。
URL を出力するときは、「http://」や 「https://」で始まる URL のみを許可する。
<script>…</script> 要素の内容を動的に生成しない。
スタイルシートを任意のサイトから取り込めるようにしない。
入力値の内容チェックを行う。
2.HTMLテキストの入力を許可する場合の対策
入力された HTML テキストから構文解析木を作成し、スクリプトを含まない必要な要素のみを抽出する
入力された HTML テキストから、スクリプトに該当する文字列を排除する。
3.全てのウェブアプリケーションに共通の対策
HTTP レスポンスヘッダの Content-Type フィールドに文字コード(charset)を指定する。
Cookie 情報の漏えい対策として、発行する Cookie に HttpOnly 属性を加え、TRACE メソッドを無効化する。
クロスサイト・スクリプティングの潜在的な脆弱性対策として有効なブラウザの機能を有効にするレスポンスヘッダを返す。
ブラウザのXSSフィルターは廃止に
ChromeやSafariにはXSS Auditor、IE 8以上やedgeにはXSSフィルターという、XSS攻撃を検知してブロックする機能がありました。
ところが、これらをバイパスする手法や悪用するケースもあり、GoogleのXSS Auditor for Chromeは2019年8月5日に無効となり、Chrome 78で完全に削除されました。
またマイクロソフトも2018年7月25日にedgeのXSS Filterを廃止しています。
これにより、今後はコンテンツセキュリティポリシー (CSP)と呼ばれるセキュリティレイヤーを追加することによってwebサイトを保護することになります。
XSS体験学習サイト
XSS-GAME
Googeが公開しているXSSの体験学習サイト。
XSStest
@yousukezanさんによるXSS体験サイト。
関連記事
カテゴリ:サイバー攻撃
タグ:XSS,クロスサイトスクリプティング,安全なウェブサイトの作り方