Detalhes de uma vulnerabilidade de exclusão de arquivo adicional - corrigida no WordPress 4.9.7

Detalhes de uma vulnerabilidade de exclusão de arquivo adicional – Corrigida no WordPress 4.9.7

Hoje, o WordPress lançou a versão 4.9.7, uma versão de segurança que aborda duas vulnerabilidades arbitrárias de exclusão de arquivos que exigem privilégios de Autor. Alguns detalhes podem ser encontrados no blog WordPress.org .

A primeira vulnerabilidade de exclusão arbitrária de arquivos foi divulgada em 26 de junho de 2018 no blog do RIPS Tech sem nenhum patch oficial para o WordPress. Lançamos uma regra de firewall no mesmo dia para proteger os usuários do Wordfence contra ataques contra essa vulnerabilidade.

Uma segunda vulnerabilidade descoberta

Depois de desenvolver uma prova de conceito do ataque para ajudar a escrever a regra de firewall do Wordfence, decidimos examinar mais de perto o código usado para criar e excluir anexos. Durante esta revisão, descobrimos uma segunda vulnerabilidade de exclusão de arquivos arbitrários explorável pelos autores. Lançamos uma regra de firewall do Wordfence para nossos clientes Premium no dia 2 de julho para proteger contra essa vulnerabilidade.

Os detalhes da segunda vulnerabilidade são os seguintes: No núcleo do WordPress, há uma ação AJAX de “upload-attachment” usada pelo carregador de mídia. A chamada AJAX manipulará o upload do arquivo e transmitirá uma matriz de dados adicionais sobre o anexo wp_insert_post, já que os anexos de mídia são um tipo de postagem específico no WordPress.

function wp_ajax_upload_attachment() {
// Post data from user input.
$post_data = isset( $_REQUEST[‘post_data’] ) ? $_REQUEST[‘post_data’] : array();
// If the context is custom header or background, make sure the uploaded file is an image.
if ( isset( $post_data[‘context’] ) && in_array( $post_data[‘context’], array( ‘custom-header’, ‘custom-background’ ) ) ) {
$wp_filetype = wp_check_filetype_and_ext( $_FILES[‘async-upload’][‘tmp_name’], $_FILES[‘async-upload’][‘name’] );
}
$attachment_id = media_handle_upload( ‘async-upload’, $post_id, $post_data );

A vulnerabilidade está no modo de wp_insert_postpreencher os metadados do anexo. O caminho para o arquivo anexo é armazenado na chave meta _wp_attached_file. Ao fornecer post_data[meta_input][_wp_attached_file]a solicitação para a ação AJAX de “upload-attachment”, podemos passar em ../../wp-config.phpque o WordPress tratará como o arquivo de anexo.

Semelhante à primeira vulnerabilidade arbitrária de exclusão de arquivos, quando um autor exclui esse anexo, o arquivo wp-config.php é excluído, permitindo que o autor passe pelo processo inicial de instalação do WordPress, o que permite comprometer totalmente o site.

WordPress lança uma correção em 4.9.7

A equipe de segurança do WordPress acaba de lançar a versão 4.9.7, que aborda esses dois problemas, realizando algumas verificações adicionais antes de excluir os arquivos anexos. Especificamente, eles adicionaram a função wp_delete_file_from_directoryque eles usam para verificar se o arquivo está no diretório de uploads antes de excluí-lo.

/**
* Deletes a file if its path is within the given directory.
*
* @since 4.9.7
* @param string $file Absolute path to the file to delete.
* @param string $directory Absolute path to a directory.

* @return bool True on success, false on failure.
*/
function wp_delete_file_from_directory( $file, $directory ) {
$real_file = realpath( wp_normalize_path( $file ) );
$real_directory = realpath( wp_normalize_path( $directory ) );
if ( false === $real_file || false === $real_directory || strpos( wp_normalize_path( $real_file ), trailingslashit( wp_normalize_path( $real_directory ) ) ) !== 0 ) {
return false;
}
wp_delete_file( $file );
return true;
}

Timeline

  • 2018-06-29 11:26 AM (-500) – Relatório inicial da segunda vulnerabilidade de exclusão arbitrária de arquivos enviada à equipe de segurança do WordPress.
  • 2018-07-02 1:14 PM (-500) – Regra de firewall lançada para os clientes do Wordfence Premium para solucionar a segunda vulnerabilidade.
  • 2018-07-05 12:00 PM (-500) – O WordPress lança a versão 4.9.7, que corrige ambas as vulnerabilidades.

O que fazer

Nós encorajamos você a atualizar para o 4.9.7 o mais rápido possível. Se você tiver atualizações automáticas ativadas, seu site deverá ser atualizado nas próximas 24 horas. Atualizações automáticas são ativadas por padrão no WordPress para liberações menores.

hostcuritiba

A HOSTCURITIBA é uma empresa de Hospedagem de Sites, Registro de domínios e especializada em apoio técnico e proteção de servidores para hospedagem em nuvem. Apoio 24x7 e monitoramento grátis para seu site. Central de vendas (41) 3014-8891 - contato@hostcuritiba.net.br