Брешь позволяет злоумышленникам скомпрометировать учетную запись пользователя.
Вице президент WhiteHat Labs из WhiteHat Security Роберт Хансен (Robert Hansen) обнаружил уязвимость , которая получила название Magic Hash. Из-за ошибки в PHP при работе с хешами в некоторых ситуациях злоумышленник может подобрать пароль к учетной записи пользователя, обойти аутентификацию и другие средства обеспечения безопасности, полагающиеся на хеширование.
Проблема возникает при использовании оператора равно-равно (==) во время сравнения двух хешей. PHP использует кодировку base16, в результате получаем строку, подобную этой: “0e812389…”.
Если строка начинается с «0e» и после нее следуют только цифры, PHP будет интерпретировать эту строку как число с плавающей точкой. В итоге, условие if ('0e462097431906509019562988736854' == '0') будет истиной.
По мнению эксперта, эта брешь затрагивает миллионы сайтов и может стать действительно проблемой. Если хеш пароля пользователя в базе данных начинается с 0e, злоумышленник может воспользоваться любой строкой, которая при сравнении будет интерпретирована как 0, и успешно авторизоваться в системе без знания пароля.
В качестве временного решения эксперт предлагает использовать тройное равно (===) для подобных сравнений.
Эксперт также отмечает, что подобная проблема затрагивает не только PHP. Такие языки как Perl и JavaScript также подвержены уязвимости, поскольку не требуют обязательного объявления типа переменной перед ее использованием.
Наш канал — питательная среда для вашего интеллекта