Uma vulnerabilidade crítica no plug-in WPML (WordPress Multilingual) deixou mais de um milhão de sites WordPress suscetíveis a ataques de execução remota de código (RCE). A falha, identificada como CVE-2024-6386, afeta todas as versões do WPML até a 4.6.12.
Essa vulnerabilidade permite que usuários autenticados com permissões de colaborador ou superiores executem códigos arbitrários no servidor, potencialmente assumindo o controle completo do site. A falha foi descoberta pelo pesquisador de segurança “stealth copter” e comunicada por meio do programa de recompensas por bugs do Wordfence, resultando em uma recompensa de US$ 1.639 pela descoberta.
Análise Técnica
O problema origina-se da falta de validação e sanitização de entradas no uso do Twig, um popular mecanismo de modelagem utilizado pelo plug-in. Especificamente, a vulnerabilidade reside na função render() da classe WPML_LS_Public_API, que processa modelos Twig fornecidos pelo usuário sem sanitização adequada.
protected function render( $args, $twig_template = null ) {
$defaults_slot_args = $this->get_default_slot_args( $args );
$slot_args = array_merge( $defaults_slot_args, $args );
$slot = $this->get_slot_factory()->get_slot( $slot_args );
$slot->set( 'show', 1 );
$slot->set( 'template_string', $twig_template );
Se ( $slot->is_post_translations() ) {
$output = $this->render->post_translations_label( $slot );
} else {
$output = $this->render->render( $slot );
} return $output;
}
Essa função falha ao sanitizar o modelo Twig, permitindo que invasores injetem e executem códigos maliciosos no servidor.
Exploração de Prova de Conceito
Uma prova de conceito demonstra como a vulnerabilidade pode ser explorada. Utilizando o shortcode [wpml_language_switcher], invasores podem injetar código Twig que executa funções PHP, como phpinfo(), expondo informações sensíveis do servidor.
[wpml_language_switcher]
{% set call_user_func = c~a~l~l~_~u~s~e~r~_~f~u~n~c %}
{% set phpinfo = p~h~p~i~n~f~o %}
{{ {1: phpinfo}|filter(call_user_func) }}
[/wpml_language_switcher]
Este exemplo usa o filtro do Twig para chamar phpinfo(), ilustrando o potencial para explorações ainda mais prejudiciais.
Resposta e Mitigação
O Wordfence agiu rapidamente, implementando uma regra de firewall em 27 de junho de 2024 para proteger seus usuários premium. Em julho de 2024, a proteção foi estendida aos usuários gratuitos. A equipe de desenvolvimento do WPML lançou um patch em 20 de agosto de 2024, na versão 4.6.13, corrigindo a falha.
Recomenda-se que todos os usuários atualizem para a versão mais recente do WPML para mitigar o risco. A vulnerabilidade recebeu uma pontuação CVSS de 9,9, destacando a urgência da atualização. Este incidente sublinha a importância de práticas de segurança rigorosas e de manter os plug-ins sempre atualizados no ecossistema WordPress.
Com o crescente nível de complexidade dos plug-ins, vulnerabilidades como essa reforçam a necessidade de vigilância contínua e de medidas proativas para proteger a segurança dos sites.
Via - CN
留言