BLOGTIMES
2005/04/21

CSRF?

 
このエントリーをはてなブックマークに追加

セキュリティーホールメモを読んでいたら、CSRFという見慣れない用語を発見。どうやら、XSSとかと同じような脆弱性の一種のようなのですが、よく分からなかったので少し詳しく調べてみることにしました。

セキュリティホール memo

"ソーシャルネットワーク mixi に Cross-Site Request Forgeries (CSRF; クロスサイト・リクエスト偽造) 欠陥があった模様。"

参考として上げられている、てけとうなWeb開発者の雑記さんのCSRF - クロスサイトリクエストフォージェリを読んでみて分かったのですが、CSRFという僕が名前を知らなかっただけで、実はこの攻撃方法自体はすでに知っているものでした

名前の大切さ

最近の例だとajaxみたいなものがいい例なのかもしれませんが、内容は平凡でも名前がないと人に上手く物事を伝えられなかったりしますよね。概念にはやはりきちんと名前がないといけないと思いますし、それらを収集する能力の大切さみたいなものを感じます。

CSRFについて

CSRF - クロスサイトリクエストフォージェリ(てけとうなWeb開発者の雑記)

CSRFはサイトに対する正規のユーザーの権限を利用した攻撃です。
あるサイトのある処理を行うページに正規のユーザーを誘導し、強制的に望まない処理を発生させます。

と、書かれてもなんのことだかさっぱり分からなかったのですが、ログインの処理時にその情報をクッキーでもたせているサイトによくある脆弱性ですね。ログイン画面で「次回から自動的にログインする」というようなチェックボックスがあったり、いったんログインすると次回からはログイン画面が表示されないようなサイトの場合に適切な対策を行っていないと脆弱性があるかもしれません。

僕の理解で恐縮ですが、ちょっと絵を描いてみました*1

CSRF説明1 - CSRF?CSRF説明2 - CSRF?

例えば、とあるサイトで削除処理退会などの処理をするためのフローを考えてみます。この場合には「ログイン」→「メニュー画面」→「削除画面」→「削除完了画面」のようなフローになる場合が多いと思います。そのときに重要なポイントは、実際の削除処理が行われるタイミングで、そのタイミングは削除画面から出るリクエストをサーバーが受取ったとき(赤矢印)になります。当然ですが削除処理にはログインしているかどうかのチェックがありますから、リクエストの送信は当然ログインしているブラウザから行う必要があります。

CSRFは第3者のサーバに重大な処理(今回の例では削除処理)についてのリクエストを送信するためのコードを仕込んでおき、それをクリックさせることによって正規のユーザーに予期せずサーバに重大な処理をさせようとするためのものです。大半のユーザーは攻撃が成功した瞬間に何が起きたのかを理解することはおそらくできないのではないかと思います。

対策についてはてけとうなWeb開発者の雑記さんにも詳しく書かれているようですので、そちらをご覧ください。

確かNucleusでも一時期話題になったような

僕が始めて知ったのはNucleusのセキュリティ情報だったような気がします。
これを修正するためにNucleusではリクエストにTicketがつくようになりましたね。

  • *1: 間違いがあったらご指摘ください

トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/789
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン