研究者がPHPでハッシュ比較の問題を引き起こす数値を紹介
Darkreadingは5月9日(現地時間)、「PHP Hash Comparison Weakness A Threat To Websites, Researcher Says」において、WhiteHatの研究者であるRobert Hansen氏が、特定の条件下においてPHPで記述された認証コードが回避される危険性があると指摘していることを紹介した。この問題は以前から知られているが、具体的に該当する数字のサンプルが掲載されている点、問題が発生するための確率が示されている点が興味深い。
PHPでは比較に==または!=を使った場合、比較対象が0eから始まりそこに数字が続いている場合は、その値を0として処理するという特徴がある(この表記は0の累乗を意味)。このため、パスワードが数字で構成されており、かつ、その数字をハッシュ化した場合にハッシュ値が0eで始まっている場合、そのパスワードは0として評価されることになる。
つまり、たとえ異なる数値で構成されたパスワードだったとしても、==または!=でそのハッシュ値を比較するコードになっている場合、それらは0として処理されるため同じパスワードであると評価されることになる。