Visite também: Currículo ·  Efetividade BR-Mac

O que é LinuxDownload LinuxApostila LinuxEnviar notícia


Falha no Wordpress permite que a senha do administrador seja “resetada” por estranhos

Uma vulnerabilidade chata do WordPress pode permitir que qualquer estranho dê um reset na senha do administrador de blogs baseados neste sistema. A falha afeta inclusive a versão 2.8.3 (que é a atual, no momento em que redijo esta nota), e não permite propriamente o “roubo” da senha – o processo apenas faz com que o verdadeiro administrador perca a sua senha, e não seja notificado sobre a nova senha – ou seja, perca acesso ao sistema.

Se seu blog já foi vítima, a documentação do WordPress explica como você pode gerar uma nova senha de administração e recuperar assim o acesso – são vários métodos, incluindo um script que automatiza o processo – mas todos são relativamente trabalhosos e possivelmente complicados.

A notícia do Heise explica como alterar uma linha de código do WordPress para corrigir a falha, enquanto não sai uma nova versão.

Saiba mais (lists.grok.org.uk).

Atualização: A nova versão foi disponibilizada no final da terça-feira.


• Publicado por Augusto Campos em 2009-08-11

Comentários dos leitores

Os comentários são responsabilidade de seus autores, e não são analisados ou aprovados pelo BR-Linux. Leia os Termos de uso do BR-Linux.

    Rober Hoelscher (usuário não registrado) em 11/08/2009 às 11:20 pm

    O problema já foi corrigido! Atualize já seu blog com a versão 2.8.4

    Thiago Silva (usuário não registrado) em 12/08/2009 às 9:09 am

    Se alguém com embasamento técnico puder me explicar onde exatamente está este bug ficaria agradecido :)

    Tentei aplicar o exploit do jeito informado no bug report e não teve efeito nenhum… nada de senha resetada. Passou a primeira verificação, mas não a segunda verificação, a do banco de dados… a key conseguiria ser alterada se a query do banco de dados buscasse por uma string vazia na chave e assim retornaria vários resultados, então pegaria o primeiro registro retornado (do administrador, que tem o primeiro ID)… mas a impressão que tenho é que a query busca na chave por uma string “Array” (que é o array em forma de string), e continua não achando nada e não passando pela verificação… isso é feito via prepared query. Quebrei um pouco a cabeça e não entendi onde o bug está na versão que eu uso, que é a 2.8.3… mas por via das dúvidas apliquei a correção sugerida, que verifica se o dado passado é um array.

    Oscar (usuário não registrado) em 12/08/2009 às 11:07 am

    A falha se encontra em:

    wp-login.php:

    function reset_password($key, $login) {
    global $wpdb;

    $key = preg_replace(‘/[^a-z0-9]/i’, ”, $key);

    if ( empty( $key ) )

    ===============================================================

    Solução dada pelo WP:

    function reset_password($key, $login) {
    global $wpdb;

    $key = preg_replace(‘/[^a-z0-9]/i’, ”, $key);

    if ( empty( $key ) || !is_string( $key ) )

    ===============================================================

    E o patch que eu fiz:

    http://www.dunkelheit.com.br/download/wp-login.php.patch

    Em vez de is_string, eu coloquei is_array.

Este post é antigo (2009-08-11) e foi arquivado. O envio de novos comentários a este post já expirou.