御社のWebサイトにXSS (クロスサイトスクリプティング)の脆弱性があると何が問題なのか

技術に明るくない人でも、SQLインジェクションは、データベースをこねこねされるということで、すぐに「これはイケナイ!」と反応する人が多いように思います。しかし、XSSはどうも軽く見られている気がしています。XSS (クロスサイトスクリプティング)って名前がよくないのか?

XSSで検索すると原理や対策方法についての言及ばかりがヒットするので、被害に遭うユーザーや運営者側向けに簡単に書きます。どこかにもっと良い説明や補足があれば教えて頂ければ幸いです。XSS脆弱性を放置していた人が、対策を施すよう腰を上げていただければと思います。

XSSって何ですか?

XSS (Cross Site Scripting)は、Webアプリケーションのバグによって起こる事象*1でセキュリティ上の問題があります。HTMLで表示する文字列の中に、悪意のあるJavaScriptやHTMLタグなどを混入させることができてしまうという問題によって起こります。外部のWebサイトから横断(Cross)してスクリプトを送り込むことができることから、クロスサイトスクリプティングという名前が付いたようです。
たとえば、外部から以下のようなリンクを用意することで発現させることができます。(http://example.com/が御社のWebサイト)

http://example.com/result.cgi?key=

この問題は、御社のWebアプリのバグを修正するか、WAF (Web Application Firewall)などの対策を導入することで防ぐことができます。

■ 御社のWebサイトにXSSがあると何が問題なのか?

  • ユーザーのアカウントが盗まれる
    • Webサイトがパスワードなどでログインを必要とするならば、そのログイン状態はセッション管理と呼ばれる方法で行われており、その情報はCookieという仕組みで管理している可能性が高いでしょう。XSS脆弱性によって、罠にはまったユーザーのCookie情報が、攻撃者の手に渡ってしまいます。Cookie情報を手に入れた攻撃者は、そのユーザーの権限でログインすることができてしまいます。場合によっては、対象は管理者アカウントかもしれません。
  • フィッシングサイトと化す
    • 御社の正規のWebページを装って、攻撃者が偽の入力フォームを設置することができます。御社のWebサイトの信用力を悪用して、罠にはまった利用者の情報(個人情報やクレジットカード番号、パスワードなど)を収集することができてしまいます。
  • 悪意を持った情報(文章や画像など)が掲載される
    • 御社の正規のWebページを装って、御社の信用力を貶めるような悪意を持った文章や画像などの情報を表示することができてしまいます。

(追記 07/05/17) うさぎ文学日記 - 「なんで急に」XSSネタなのか

*1:ブラウザやWebサーバーのバグという場合もあります