HOME >> 情報セキュリティ >> 脆弱性対策 >> 知っていますか?脆弱性 (ぜいじゃくせい) >> 3. CSRF (クロスサイト・リクエスト・フォージェリ)

3. CSRF (クロスサイト・リクエスト・フォージェリ)

2007年7月12日 掲載

イントロダクション

彼女が現在一番利用しているのがW社が運営するSNS (ソーシャルネットワーキングサービス)。
日記を毎日楽しく更新して、同じ志向のユーザたちとコミュニケーションを図っていました。
W社のSNSは紹介制の会員サイトで、コミュニティの中で知り合った友人にのみ日記を公開するなどの設定ができます。
A子さんは、不特定多数の人がいるところは怖いと感じ、日記は登録した友達のみ公開、個人情報は非公開としています。

SNS画面のイメージ

A子さん 「そうだ、Bさんの掲示板もチェックしなきゃ。」
「面白そう!なにかしら?」

掲示板のイメージ

A子さんはリンクをクリックしましたが、【完了しました】というメッセージが表示され、画面には他に何も表示されませんでした。

A子さん 「なんにもないじゃない?」

翌日 ─

友人からのメールのイメージ

A子さん 「ええっ!」
「困ったわ。研究所の博士に相談してみましょう。」
「どうして個人情報や友達にしか公開していない日記がすべてのユーザに公開されてしまったの?」

博士 「公開は間違えてしたのではないのですね?」

A子さん 「公開するためには何回も確認ボタンを押さなきゃいけないので、間違えて公開することはないです。」

博士 「W社のSNSの利用中に、何かしたとか、変わったことはありましたか?」

A子さん 「そういえば、友達の掲示板に書かれた、面白そうな話題のリンクをクリックしたら、何の話題も表示もされずに、すぐに「完了しました」という画面が出てきたわ。」

博士 「あぁ、Bさんの掲示板のリンクは巧妙に細工されていますね。」
「これはCSRF(クロスサイト・リクエスト・フォージェリ)といいまして、ログインしているユーザ(A子さん)などに思ってもいない処理をさせてしまう攻撃方法なんですよ。」

“CSRF”=Cross-Site Request Forgeries

A子さん 「くろすさいとりくえすと?」


CSRF (クロスサイト・リクエスト・フォージェリ)とは?

博士
「例えば、SNSなどのウェブサイトにログイン中のユーザ(A子さん)が、並行して、掲示板などの別のウェブサイトやメール中に記載されている、悪意を持って細工されたリンクをクリックしたとします。」
「この細工されたリンク中の悪意ある要求(リクエスト)が、ユーザ(A子さん)の要求であるかのように偽って(フォージェリ)、ログイン中のウェブサイトに送信されます。」
「そうすると、ログイン中のウェブサイトで、ユーザ(A子さん)の意思とは別の操作をさせられてしまいます。」
「このような問題を、クロスサイト・リクエスト・フォージェリと呼びます。」
「今回のように、攻撃者に、非公開の個人情報を公開する設定に変える要求(リクエスト)をさせられてしまったりします。」
「また、パスワードの変更ができるウェブサイトでは、パスワードが書き換えられて、攻撃者が、ユーザになりすましてしまう場合もあるんですよ。」

A子さん 「ちゃんとログインしているのに…。」

博士 「ログインしているからこそすべての操作が可能なんですよ。」


CSRF (クロスサイト・リクエスト・フォージェリ)の具体的な攻撃例

ログイン中の処理のイメージ

図中の攻撃例の詳細

  1. 攻撃者がBさんの掲示板に罠を仕掛ける
  2. A子さんがBさんの掲示板を見る(SNSログイン済み)
  3. A子さんが罠のリンクが入ったページを表示し、リンクをクリックする
  4. Bさんの掲示板からW社のウェブサイトに移って(クロス)、ユーザの要求を偽って(フォージェリ)、悪意を持って細工された要求(リクエスト)が送られる
    結果、友達にのみ公開していた情報が全ての人に公開されてしまう
博士
「ログインしていることが前提となっている攻撃方法のため、ユーザの権限でできる範囲の操作が攻撃者に実行させられてしまいます。」
「例えば、秘密にしたい日記をすべてのユーザに公開させられてしまったり、非公開にしていた個人情報を公開をさせられてしまったり、ユーザの権限でできる操作の内容によって、被害が拡大する場合もありますね。」

博士 「対策は、IPAのウェブサイト内の脆弱性ごとの対策ページを参照してくださいね。」