WordPress <= 2.8.3 Remote admin reset password

Внимание! Найдена уязвимость в WordPress. Уязвимость заключается в том что любой недоброжелатель может сбросить пароль администратора блога на WordPress версии <= 2.8.3 (то есть любых версий на данный момент существующих).
Любой посетитель вашего блога на WordPress может попытаться зайти в админку блога и попытаться набрать пароль. Кроме того он может также нажать ссылку «Забыл пароль», после чего на e-mail администратора придёт письмо с просьбой подтвердить намерение пересоздать пароль и хитрой ссылкой вида:

http://DOMAIN_NAME.TLD/wp-login.php?action=rp&key=o7naCKN3OoeU2KJMMsag

Обычный пользователь конечно же не сможет прочитать чужого письма, более того, не в состоянии угадать с трёх раз длинный секретный код. Но оказывается проверка кода пропустит ссылку вида:

http://DOMAIN_NAME.TLD/wp-login.php?action=rp&key[]=

И пароль будет сброшен без дополнительного подтверждения. Ничего приятного. Хотя вроде и не смертельно.
В моём представлении

Как спастись

Исправленной версии WordPress пока нет. Но исправить ситуацию можно вручную.
Достаточно найти в wp-login.php функцию reset_password, в которой найти строчку

if ( empty( $key ) ) 

и заменить на

if ( empty( $key ) || is_array( $key ) ) 

В версиях 2.8.х это должна быть строчка 190. У меня в 2.7.1 это строчка 169.

Кстати всё никак не соберусь обновляться. Подожду, когда версии утрясутся.

Источники
Всё вышенаписанное — это свободный пересказ нижеперечисленных источников

PS: Если я что-то напутал — поправьте меня.

WordPress <= 2.8.3 Remote admin reset password: 10 комментариев

  1. qosys

    На самом деле классная дыра, как её только не углядели ;)

  2. zeleboba

    А вроде про 2.8.3 что-то писали, что она как раз это фиксит? Я, правда, мельком по заголовкам сделал такой вывод. Или все же не прав?

  3. altesack Автор записи

    @ zeleboba:
    Баг свежий. Буквально вчерашний. По-любому не успевают
    @ qosys:
    Кстати в одном заброшенном непропаченом 2.7.1 я не смог воспроизвести сброс пароля.
    O_O

  4. zeleboba

    @ Накукрыскин:
    и правда =) в админке еще предлагает 2.8.3, но в новостях в админке уже 2.8.4 трубят =) Пойду обновляться.

  5. Евгений

    Баги не пропускают — их порождают те же программисты.
    Как с такими руками вообще писать код можно…

Комментарии запрещены.