PHP5.4.8までにhashdos攻撃の危険性?
PHP5.4.9リリース…『max_input_vars doesn't filter variables when mbstring.encoding_translation = On』←げっ、こんなバグがあったのか(要確認) http://t.co/K8iEBeg2
2012-11-23 11:52:34【速報】PHP5.4.8にて、mbstring.encoding_translation=Offだとmax_input_varsのチェックが有効、mbstring.encoding_translation=Onだとmax_input_varsのチェックが無効であることを確認
2012-11-23 12:50:03平たく言うと、mbstring.encoding_translation=Onの環境だと、max_input_varsのチェックは働かず、hashdos攻撃を受けてしまう状態だということですね。PHP5.4.8までは
2012-11-23 13:02:27PHP5.4.9だと、mbstring.encoding_translationの値に関わらず、max_input_varsのチェックが有効のようですね。
2012-11-23 13:32:41その後、 @ockeghem さんと @kazuho さん、 @smbd さんが意見を交わします。
様々なウェブサーバやLLのハッシュ関数の衝突が脆弱性として扱われた理由ってなんだっけ? 外部由来の衝突でどの程度パフォーマンスがかわるとか、定量的評価だっけ
2012-11-23 13:11:11@kazuho Webアプリケーションに対する広範なDoS攻撃手法(hashdos)の影響と対策 | 徳丸浩の日記 http://t.co/nMrgyMK5 この辺にまとまっていますね
2012-11-23 14:04:36@smbd あざす。とりあえずPHPの場合は衝突時の処理量がキーの個数に対してO(n^2)だったようですね。最悪値がO(n)なら脆弱性として扱われない可能性とかもあると思うので色々読んでみます
2012-11-23 14:10:38@kazuho hashdosの場合、CPU99.9%とか行きますが、その間もサービスは割と普通に継続できるので、実害という点ではどうなのかなぁと私も思いました・思っています
2012-11-23 14:15:51@kazuho CPU性能にもよりますが、PoCの処理に6分くらいかかるので、MaxClients数分だけ同時に走らせたら、サービスを継続なるんでしょうかね
2012-11-23 14:17:57@ockeghem @smbd ハッシュ関数の処理量がキーが衝突した場合にO(n)になるのは一般に「仕様」ですよね。なのでhashdosが「脆弱性」ならば、衝突の有無が外部から推測でき、かつ、衝突の回数を外部から制御できることが「脆弱」だという判断なのかなと思いました
2012-11-23 14:32:56@kazuho @smbd hashdosのことを言われているのであれば、言語毎にハッシュ値が同一になるキー文字列が分かってますので、『衝突の有無が外部から推測でき、かつ、衝突の回数を外部から制御できる』ことになりますね。ruby1.9の奴はまだ見ていませんが
2012-11-23 14:38:04「衝突の回数を外部から制御できること」って条件を入れなかったら、テーブルをフルスキャンするクエリ発行したら脆弱ってことになっちゃうw
2012-11-23 14:35:27@kazuho 通常の使用法ならフルスキャンしないアプリで、特別な呼び出し方でフルスキャンになる場合、診断屋の多くは「脆弱性」として指摘すると思います。危険度は低いでしょうが。
2012-11-23 14:39:26あ、そうなんですね。勉強になります RT @ockeghem: @kazuho 通常の使用法ならフルスキャンしないアプリで、特別な呼び出し方でフルスキャンになる場合、診断屋の多くは「脆弱性」として指摘すると思います。危険度は低いでしょうが。
2012-11-23 14:40:04@kazuho @ockeghem POSTを解釈する、公開しているWebサーバーに対して(言語ごとに)均一の方法で、認証無しに過負荷状態に陥らせることができるから脆弱性なんじゃないですかね。
2012-11-23 14:40:17