クロスサイトリクエストフォージェリ : CSRF とは
Webアプリケーションの脆弱性のひとつであるCSRFは「Cross Site Request Forgery」の略で、 Webシステムを悪用し、ユーザーが意図していないリクエストを行わせるサイバー攻撃 の一種です。
ちなみに読み方は、「シーサーフ」と読むらしい。
CSRFの仕組み
0 : 攻撃者は罠となるWebサイトを作成。
1 : ユーザーは攻撃対象サービスにログイン(Cookieなどを用いてセッションIDを保持)
2 : 攻撃対象サービスにログイン済みのユーザーを巧みに罠サイトへと誘導。(メールやURLクリック等)
3 : ユーザーが保持しているセッションIDを用いて意図していないリクエストを送信
4 : 攻撃対象WebサービスはセッションIDにて正規ユーザーからのリクエストだと判断し実行。
罠サイトにアクセスしてしまったユーザーが攻撃対象のWebサービス(SNS等)に ログイン状態 になっていると、その Webサービスに偽のリクエストが投げられ・実行させる という仕組みになっています。
ログインが必要なWebサービスの多くはログイン処理を省くためにCookieを利用して自動ログイン機能を提供しているため、 一度ログインを行えばしばらくの間は自動ログインが可能な状態 になり、それ故CSFR攻撃の条件が成立してしまうわけです。
実際に起ったCSRFによる被害例
実際に起きた事例としては 「はまちちゃん事件」 や 「横浜CSRF事件」 などが有名です。
「はまちちゃん事件」
大手SNSの「mixi」にてある日突然 「ぼくははまちちゃん!!」 といった内容の書き込みが同日に数多くのユーザーの日記に投稿されたみたいです。
この投稿にはURLが貼られておりそのURLをクリックすることでそのユーザーも同じ投稿がされる ような仕組みになっており、連鎖的に数多くのユーザーが同じ投稿をした事で話題になったらしい。。
「横浜CSRF事件」
犯人が用意した罠サイトにクリックした男性Aが横浜市の小学校のホームページの投稿コーナーに「横浜市内の小学校を襲撃し、自動を大量虐殺する」と投稿された事件。
この事件では 別のWebサイトの掲示板に書き込まれたURLをクリックすることで勝手に書き込まえれてしまう仕組み で、真犯人ではなく書き込んだ男性Aが誤認逮捕されるなどの被害があったそうです。
なぜCSRFが防ぎづらいのか
CSRFでは正規ユーザーが罠サイトを開くことで成立するサイバー攻撃であるという特徴がある。
攻撃対象のWebサービスからすると正規ユーザーが正規のセッションIDを用いて 正規の機能を実行するリクエスト が投げられるので防ぐ事が難しく対処しずらいっぽい。
CSRFを防ぐには
ユーザー側
1.Webサービス後はログアウトする
CSRFは基本的にユーザーがWebサービスにログインしている状態が狙われています。
可能な限りログアウトすることで最低限防げそう。
2.怪しいサイトにアクセスしない
信頼性の低いWebサイトにはなるべくアクセスしないのが基本です。
アダルトサイトは危なそうなので男性の方は気をつけてねw
Webサービス側
1.重要な処理の前にパスワードを再入力させる
2.リクエストの発信元をチェックする
HTTPリクエストを受けたときにどこのWebサイトから発行されたものかを示す 「リファラー」 と呼ばれる情報を得る事ができる。
3.ワンタイムトークンを使用する
1.フォーム送信用ページ毎にランダムな文字列を生成し、送信用のhtmlに生成したトークンを埋め込む。
2.リクエストを受信時、トークンがない場合や、トークンが一致しない場合はリクエストを受け付けないようにプログラムを書く。
4.パズルや英数字・画像について答えさせる
よく見るやつですが、これもCSRF対策の一種だったんですね。
さいごに
今回CSRFについて調べてみましたが、 基本的に利用者側の立場で防ぐのはかなり難しい と思いました。
Webサービスやサイトを運営する側がしっかりと対策をすることで大半は防げそう。
いつかWebに触れる機会があればもう少ししっかりと調べて適切な対処をしたいっ!!
予定はないですが。w
ではまたっ!!