FuelPHPのCSRF対策トークンは何が問題だったのか
- tanakahisateru
- 23124
- 38
- 32
- 28
PHP の uniqid() と time() の組ってどっちも時刻情報に基づくので割と予測可能なのでは……
2012-06-06 12:05:35話題のFuelPHPのCSRFの件は https://t.co/e2Wh7p5p あたりかな。 uniqid() がもうすでに時刻に準拠した値なのに time() 付けてもねぇ、このソース公開しちゃってるしねぇということ?
2012-06-06 14:06:50あー、あと hidden と Set-Cookie に同じ文字列が登場しないかなこれ。サーバ側でsalt使って暗号化してる、クライアント側では絶対に作れないものじゃないと、セキュリティ的にサーバ側のセッションと等価なものにならない。って、たしかCIでもやってたと思う。
2012-06-06 14:16:31さきほどのFulePHP1.2のCSRF問題を訂正。Cookieとhiddenが同じ値になってる事が問題ではなく推測不可能なユニークな文字列になっていないことが問題ということか。
2012-06-06 14:17:50@tanakahisateru @brtriver 同じになるのは問題だと思います。第三者が cookie の値を知れば CSRF が成立してしまいます
2012-06-06 14:20:40@ounziw ということは、postとcookieのcsrfになんか適当に同じ値を入れたら、ホントのフォームからもらった券じゃなくても、通ってしまうのですか?
2012-06-06 14:25:37@ounziw @tanakahisateru cookieの値を攻撃者が知り得る脆弱性があれば駄目と思いますが。無いという前提で。セッションCookieのように。
2012-06-06 14:27:26@tanakahisateru おそらく通ってしまいますね。post の値だけでなく、cookie を操作するので、攻撃の手間は増えますけど
2012-06-06 14:28:22@brtriver @ounziw えと、コードを見ると、攻撃者は本当のcookieの値を知る必要はなくて、それっぽく捏造したものを使えば済むと思います。
2012-06-06 14:30:59@tanakahisateru @brtriver core/classes/security.php を見ると単純に===なので、cookie と post の両方を書き換えれば攻撃成立ですね
2012-06-06 14:34:45@brtriver @ounziw これ https://t.co/xzkdQAgP とこれ https://t.co/zkfMC0fi をこう https://t.co/8INW7yY0 してますが、大丈夫なんですか?
2012-06-06 14:34:52@brtriver まあ、 cookie がどうこうというより、任意の CSRF トークンがクライアント側のみでなんとかすれば指定できてしまう状況というのは依然として問題だと思いますね。同じタイミングで直せるならついでに直してもらいたいところですが……
2012-06-06 14:35:53なんかこれってつまり、hiddenとcookieに違うsailtでmcryptかけて与えて、サーバでそれ復号してから照合したら済むんじゃないのかな?
2012-06-06 14:44:11@tanakahisateru @ounziw 秘密情報が正しいかのチェックですよね?(十分予測不可能な秘密情報になってないけど) http://t.co/uDZkcGUF
2012-06-06 14:56:39@kenji_s @ounziw @brtriver もし、罠サイトのフォームがプロキシにpostして、それがhiddenとcookieに適当な値を書いて対象サイトにpostしたら攻撃できないですかね?
2012-06-06 15:07:59@kenji_s @ounziw @brtriver CSRFっていう用語が、罠サイトにあるフォームのactionに、直接攻撃対象のURIが書いてあるものだけを指すのでしょうか? だとすると僕の理解が及んでないだけなんですみません。
2012-06-06 15:10:30@tanakahisateru @ounziw @brtriver 罠のサイトのフォームから別のサイト(Proxy)にPOSTしたら、Cookieが飛ばないのでは?
2012-06-06 15:19:05@tanakahisateru @kenji_s @brtriver 具体的なcookie書き換え方法は分からない(無いかもしれない)ですが、単に同じ値をセットすれば攻撃成功、という状況は避けるべきだと思います。
2012-06-06 15:22:19