栃木,Web,WordPress,スマートフォン,野球,ラグビーなど
ワンクリックで犯罪予告が書き込まれて誤認逮捕!?CSRF脆弱性は怖いんです。
つい先日話題になった大学生の誤認逮捕の件。
なりすまし事件、4人は誤認逮捕か 4都府県警が謝罪へ
遠隔操作事件・真犯人と称する者からのメール全文
結局このお方は犯罪予告を書き込んだわけではなく、
ただ、掲示板のリンクをクリックしただけです(震え声)
なんでそうなっちゃったかと言うと、
(1)まず、某市Webサイトの問い合わせフォームあたり(?)にCSRF脆弱性があり、
(2)犯人が、掲示板に罠を仕掛けたURLを貼り、
(3)大学生が、その掲示板のURLをクリックし、
(4)そのURLに含まれたJavascriptがブラウザ上で実行され、※実行するブラウザは大学生のPC
(5)ブラウザ、犯人が作ったページを表示し、
(6)某市Webサイトで犯行予告が書き込まれる。※書き込んだIPアドレスは大学生のPC
(7)IPアドレスを元に、大学生が逮捕される。
たぶん、こんな感じだと思われます
CSRF(クロスサイトリクエストフォージェリ)は、Webアプリケーションの脆弱性の一種。
WebアプリにCSRF脆弱性があると、攻撃者によって誘導されたユーザーが、意図しない機能を実行させられてしまうことが起きる。
上のケースに当てはめると、
”某市Webサイト”にCSRF脆弱性があって、
”犯人”が掲示板に貼ったURLをクリックした”大学生”が、
”意図しない犯罪予告の書き込み”を実行させられた、ってことになる。
CSRFは「機能そのもの」が攻撃対象になるので、サイトの機能によっては、
・ECサイトで買い物をさせられる
・会員サイトで退会させられたり、パスワードを変更させられる
など、怖いことが盛りだくさんです。
Webアプリ側の対策は、ページ間の遷移が不正でないことを判定するため、以下のような実装が必要。
全機能(すべての画面)でCSRF対策が必須なわけではなく、要件としてどの機能を対象にするかを決めた方が良いです。
(1)ワンタイム/固定トークンを使用する
→セッションIDとトークンをセットで使用する。
→ただし、セッションIDの値をトークンとして使うのはダメ。
→リクエストはGETではなくPOSTで。
(2)CAPTCHAを使用する ※ワンタイムトークンとして実装する
→これもセッションIDとセットで。
(3)パスワードの再入力を求める
ユーザー側の対策は…
「クリックしない」くらいしかないと思われ。。
むやみやたらにリンクを踏まないっつーことですね。
印刷 | この記事は ohsexybaby によって 2012/11/05 11:30 PM に投稿されました, Web 以下に保存されています。 RSS 2.0 を通してコメントをフォローする。 コメントを残すか、ご自分のサイトからトラックバックできます。 |