hostsファイルに127.0.0.1を指定した場合のCSRF対策回避の可能性

hostsファイルに127.0.0.1を指定した場合のリスクについて、@kazuho さんから教えて頂きました
2
Kazuho Oku @kazuho

@ockeghem same origin policyとクッキーのドメイン分離は別概念なので、127.0.0.1に外部のホスト名を指定することは、後者の分離を侵すと思います。なので、理屈の上では問題が発生する可能性があると思います(続く)

2012-09-25 09:45:57
Kazuho Oku @kazuho

@ockeghem たとえば、cookieの値とhiddenフィールドの値の同一性を確認する方式のCSRF対策は、クッキーのドメイン分離が保証されている場合(hostsをいじっていない場合)有効な方法です。が、hostsをいじると攻撃が成立する可能性がでてきます

2012-09-25 09:47:34
Kazuho Oku @kazuho

現実的な仮定かと言われると微妙ですが

2012-09-25 09:48:02
徳丸 浩 @ockeghem

@kazuho ご指摘ありがとうございます。まだ具体的なシナリオが見えないのですが、考えてみます。ただ、あの記事は、「hostsをいじっても問題ない」という趣旨ではなく、「hostsをいじることの危険性は同意として、にーまるさんの主張はおかしいでしょ」という趣旨のものなのです。

2012-09-25 09:55:17
Kazuho Oku @kazuho

@ockeghem はい。すみません、趣旨と内容には賛成です。危険か危険じゃないかについて、Same Origin Policy には抵触しないが domain cookie による fixation は可能になる可能性があるよ、という点が気になったので

2012-09-25 10:06:00
徳丸 浩 @ockeghem

@kazuho 恐れ入ります。CookieとSOPの条件の違いにより問題が発生するシナリオは興味があるので、もう少しヒントをいただけるとありがたいです。

2012-09-25 10:08:42
Kazuho Oku @kazuho

127.0.0.1 example.jp というhostsファイルが書かれた状態で http://t.co/JTlYCV3R という外部サーバが exmaple.jp のドメインクッキーをセットして example.jp へフォームPOSTするウェブページを送出したらどうなるか

2012-09-25 10:14:21
Kazuho Oku @kazuho

CSRF対策としてクッキーの値とhiddenフィールドの同一性を確認する手法が存在するが、それはクッキーのドメイン分離が有効に機能していることを前提としている。が、hostsファイルに当該エントリが記述されたことにより、その分離が機能しなくなり、CSRFが可能になる

2012-09-25 10:16:45
Kazuho Oku @kazuho

@ockeghem たとえば http://t.co/o3wGwg4o http://t.co/oWt3WCbX のようなシナリオかなと思います

2012-09-25 10:17:21
徳丸 浩 @ockeghem

@kazuho それは考えてみたのですが、利用者端末のローカルhttpd上で悪意のあるコンテンツが動いている前提になりませんか?

2012-09-25 10:20:46
Kazuho Oku @kazuho

@ockeghem いえ、たとえばローカル端末が部署のウェブ掲示板をホストしているケース等を想定しうると思います

2012-09-25 10:23:30
徳丸 浩 @ockeghem

@kazuho そう来ましたかw まだ完全なシナリオが描けませんが、kazuhoさんのことなのできっとルートはあるのでしようね。ローカルの掲示板経由でトークンのCookieを盗み出すというシナリオであっていますか?

2012-09-25 10:30:24
Kazuho Oku @kazuho

LANあるいはセルフホスト前提にログイン機能を省略したウェブアプリが書かれることはままあるし、そういうアプリにおいてはHostチェックしないことが多いし、CSRF対策でcookieの分離を前提にしても問題がないケースなのでそうなっていてもおかしくない、という確率をどう評価するか

2012-09-25 10:30:25
Kazuho Oku @kazuho

@ockeghem いえ、盗み出すのではなく、ローカルの掲示板(あるいは何らかの機能)に対してCSRF攻撃が可能になる、ということです

2012-09-25 10:31:10
徳丸 浩 @ockeghem

@kazuho 了解しました。それなら可能ですね

2012-09-25 10:32:13
徳丸 浩 @ockeghem

@kazuho たびたびすみません。この場合、利用者はローカルの掲示板にexample.jpドメインでログインするのですよね。余談ですが、この前提だと、DNS Rebinding攻撃によりCookieが漏洩するという別の脅威もありますね

2012-09-25 10:44:56
Kazuho Oku @kazuho

@ockeghem いえ、ログインが不要な場合を考えています

2012-09-25 10:46:14
徳丸 浩 @ockeghem

@kazuho 了解しました。長々とありがとうございました

2012-09-25 10:49:57
Kazuho Oku @kazuho

@ockeghem こちらこそすみません。そのようなウェブアプリはおっしゃるとおりrebinding脆弱性をもつとして扱うべきですね

2012-09-25 11:21:09
Kazuho Oku @kazuho

結局イントラだろうがローカルホストだろうが、POST時には秘密情報をもちいた検証もしくはHostヘッダの確認が必須ってことなんかなー

2012-09-25 11:26:36