XSSとCSRFの違いを過去事例を見ながら具体的にまとめる

SECURITY

情報処理安全確保支援士の勉強をしていると、クロスサイトスクリプティング(Cross Site Scripting: XSS)と クロスサイトリクエストフォージェリ(Cross Site Request Forgeries: CSRF)がどう異なるのか、混同する人は少なくないようです(かく言う私も)。

どちらも、ユーザーが意図しない動作を悪意を持った第三者が実行する、という点では似ていますね。

自分の勉強も兼ねて、両者の違いについて実際に起きた事件を引用しつつ、まとめました。

XSSはユーザ環境で悪意あるスクリプトを実行させるもの

悪意ある第三者がスクリプトを仕込んだWebサイトのページを、閲覧者であるユーザーが読み込むと、仕込まれたスクリプトが実行されてしまうものです。

Javascriptがcookieを読めてしまう場合、cookieの情報が窃取される危険性があり、これがXSSの怖いポイントの1つ。

後述するCSRFではユーザーがSNSなどのサービスにログインしていることが利用されますが、XSSでは必ずしもそうではありません。

探すと実例は色々出てきますが、例えば、YouTubeの事件。

YouTubeにXSS攻撃、不正ポップアップなどの被害広がる
YouTubeの脆弱性が悪用され、ショッキングなデマが流れたり、コメントが表示されなくなるなどの影響が広がった。

ユーザーのブラウザでJavascriptを実行させ、虚偽のメッセージを表示させたりしますが、サービスにログインしているかどうかは関係ありません。

要するに、アクセスして来た人の環境で悪意あるコードが実行される、というのがXSS。

XSSのややこしいところはコーディングレベルで対処する必要があることで、完全な対策が難しいのが現状です。

CSRFはユーザのリクエストを偽装する

実例を見たほうが早いかもですね。

有名なのは、2012年のパソコン遠隔操作事件。
複数の手口を実施したそうですが、そのうちの1つがCSRF。犯人はあるWebサイトを用意し、ある人にサイトのリンクをクリックさせることで、自治体に脅迫メールを自動送信させた、というもの。「リンクをクリックしてしまった人」が脅迫メールを送ったように見えてしまいます。

見知らぬ他人のパソコンを犯罪に利用する「パソコン遠隔操作事件」(1) - 日本語版
 “他人のパソコン(PC)を遠隔操作し、インターネット上で無差別殺人などの犯罪を予告したとして、威力業務妨害などの罪に問われた元IT会社員、片山祐輔被告(32)の判決が4日、東京地裁であった。大野勝則裁判長は「見ず知らず…

もう対策済ですがFacebookの事例。

Facebookに脆弱性、「いいね!」や友達の情報が盗まれるおそれ--修正済み
Facebookの脆弱性により、ユーザーの設定に反して友達などに関する情報が盗まれる可能性があったが、すでに修正された。

「いいね」や「友達」の情報が第三者に盗まれるというもの。ログインした該当ユーザーしか実行できない処理を、悪意を持った第三者が実行できてしまう、というものです。

相当昔のものですが、もう一つはmixiの実例(大分昔なので恐らく既に対策済みでしょう)。

大量の「はまちちゃん」を生み出したCSRFの脆弱性とは?
「mixi」上で、あるURLをクリックすると「ぼくはまちちゃん!」という日記が勝手にアップされてしまうという現象が多発した。その原因はCSRFの脆弱性だ。

mixiにログインした状態のあるユーザーが、あるURLをクリックすると、勝手に日記をアップロードされてしまうというものです。

いずれも、ユーザーがURLを踏んでしまうことで、ユーザーの意図とは関係なく勝手にリクエストが行われてしまう、というもの。これにより、ユーザーが意図しない動作が実行されてしまいます。

CSRFではリクエスト偽装の仕掛けが用意されて罠を踏ませる、というものです。

まとめ

まとめると

  • XSS:ユーザーに悪意あるスクリプトを実行させる
  • CSRF:あるユーザーのリクエストであることを偽装する。

ということになります。

参考サイト

クロスサイトスクリプティング:
情報処理推進機構(IPA) – 2. クロスサイト・スクリプティング
https://www.ipa.go.jp/security/vuln/vuln_contents/xss.html
TREND MICRO – クロスサイトスクリプティング(XSS)
https://www.trendmicro.com/ja_jp/security-intelligence/research-reports/threat-solution/xss.html

ロスサイトリクエストフォージェリ:
IPA – 3. CSRF (クロスサイト・リクエスト・フォージェリ)
https://www.ipa.go.jp/security/vuln/vuln_contents/csrf.html
TREND MICRO – クロスサイトリクエストフォージェリ(CSRF)
https://www.trendmicro.com/ja_jp/security-intelligence/research-reports/threat-solution/csrf.html