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

Материал из Викиновостей, свободного источника новостей
Перейти к навигации Перейти к поиску

14 мая 2015

JavaScript

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

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

Проблема возникает при использовании оператора равно-равно (==) во время сравнения двух хешей. PHP использует кодировку base16, в результате получаем строку, подобную этой: “0e812389…”. Если строка начинается с «0e» и после нее следуют только цифры, PHP будет интерпретировать эту строку как число с плавающей точкой. В итоге условие if ('0e462097431906509019562988736854' == '0') будет истинно.

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

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

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

 

Источники[править]


 

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.