hostsファイルに127.0.0.1を指定した場合のCSRF対策回避の可能性
@ockeghem same origin policyとクッキーのドメイン分離は別概念なので、127.0.0.1に外部のホスト名を指定することは、後者の分離を侵すと思います。なので、理屈の上では問題が発生する可能性があると思います(続く)
2012-09-25 09:45:57@ockeghem たとえば、cookieの値とhiddenフィールドの値の同一性を確認する方式のCSRF対策は、クッキーのドメイン分離が保証されている場合(hostsをいじっていない場合)有効な方法です。が、hostsをいじると攻撃が成立する可能性がでてきます
2012-09-25 09:47:34@kazuho ご指摘ありがとうございます。まだ具体的なシナリオが見えないのですが、考えてみます。ただ、あの記事は、「hostsをいじっても問題ない」という趣旨ではなく、「hostsをいじることの危険性は同意として、にーまるさんの主張はおかしいでしょ」という趣旨のものなのです。
2012-09-25 09:55:17@ockeghem はい。すみません、趣旨と内容には賛成です。危険か危険じゃないかについて、Same Origin Policy には抵触しないが domain cookie による fixation は可能になる可能性があるよ、という点が気になったので
2012-09-25 10:06:00@kazuho 恐れ入ります。CookieとSOPの条件の違いにより問題が発生するシナリオは興味があるので、もう少しヒントをいただけるとありがたいです。
2012-09-25 10:08:42127.0.0.1 example.jp というhostsファイルが書かれた状態で http://t.co/JTlYCV3R という外部サーバが exmaple.jp のドメインクッキーをセットして example.jp へフォームPOSTするウェブページを送出したらどうなるか
2012-09-25 10:14:21CSRF対策としてクッキーの値とhiddenフィールドの同一性を確認する手法が存在するが、それはクッキーのドメイン分離が有効に機能していることを前提としている。が、hostsファイルに当該エントリが記述されたことにより、その分離が機能しなくなり、CSRFが可能になる
2012-09-25 10:16:45@ockeghem たとえば http://t.co/o3wGwg4o http://t.co/oWt3WCbX のようなシナリオかなと思います
2012-09-25 10:17:21@kazuho そう来ましたかw まだ完全なシナリオが描けませんが、kazuhoさんのことなのできっとルートはあるのでしようね。ローカルの掲示板経由でトークンのCookieを盗み出すというシナリオであっていますか?
2012-09-25 10:30:24LANあるいはセルフホスト前提にログイン機能を省略したウェブアプリが書かれることはままあるし、そういうアプリにおいてはHostチェックしないことが多いし、CSRF対策でcookieの分離を前提にしても問題がないケースなのでそうなっていてもおかしくない、という確率をどう評価するか
2012-09-25 10:30:25@ockeghem いえ、盗み出すのではなく、ローカルの掲示板(あるいは何らかの機能)に対してCSRF攻撃が可能になる、ということです
2012-09-25 10:31:10@kazuho たびたびすみません。この場合、利用者はローカルの掲示板にexample.jpドメインでログインするのですよね。余談ですが、この前提だと、DNS Rebinding攻撃によりCookieが漏洩するという別の脅威もありますね
2012-09-25 10:44:56@ockeghem こちらこそすみません。そのようなウェブアプリはおっしゃるとおりrebinding脆弱性をもつとして扱うべきですね
2012-09-25 11:21:09結局イントラだろうがローカルホストだろうが、POST時には秘密情報をもちいた検証もしくはHostヘッダの確認が必須ってことなんかなー
2012-09-25 11:26:36