Уязвимость в PHP подвергает опасности практически любой сайт

image

Теги: уязвимость, PHP, сайт

Брешь позволяет злоумышленникам скомпрометировать учетную запись пользователя.

Вице президент WhiteHat Labs из WhiteHat Security Роберт Хансен (Robert Hansen) обнаружил   уязвимость , которая получила название Magic Hash. Из-за ошибки в PHP при работе с хешами в некоторых ситуациях злоумышленник может подобрать пароль к учетной записи пользователя, обойти аутентификацию и другие средства обеспечения безопасности, полагающиеся на хеширование.

Проблема возникает при использовании оператора равно-равно (==) во время сравнения двух хешей. PHP использует кодировку base16, в результате получаем строку, подобную этой: “0e812389…”.

Если строка начинается с «0e» и после нее следуют только цифры, PHP будет интерпретировать эту строку как число с плавающей точкой. В итоге, условие if ('0e462097431906509019562988736854' == '0') будет истиной.

По мнению эксперта, эта брешь затрагивает миллионы сайтов и может стать действительно проблемой. Если хеш пароля пользователя в базе данных начинается с 0e, злоумышленник может воспользоваться любой строкой, которая при сравнении будет интерпретирована как 0, и успешно авторизоваться в системе без знания пароля.

В качестве временного решения эксперт предлагает использовать тройное равно (===) для подобных сравнений.

Эксперт также отмечает, что подобная проблема затрагивает не только PHP. Такие языки как Perl и JavaScript также подвержены уязвимости, поскольку не требуют обязательного объявления типа переменной перед ее использованием.

Telegram Подписывайтесь на канал "SecurityLab" в Telegram, чтобы первыми узнавать о новостях и эксклюзивных материалах по информационной безопасности.