
Plugin WordPress drop-in que bloqueia o manipulador de importação de demonstração vulnerável no FunnelForms Pro para mitigar a Execução Remota de Código (CVE-2026-39440).
| Campo | Valor |
|---|
| ID CVE | CVE-2026-39440 |
| Pontuação CVSS | 9.9 (Crítico) |
| Afetados | FunnelForms Pro ≤ 3.8.1 |
| Privilégios | Baixo (nível de Assinante) |
| Tipo | Injeção de Código → Inclusão Remota de Código → RCE |
| Corrigido? | Nenhuma correção oficial do fornecedor disponível ainda |
| Descoberto por | 3ele / Sebastian Weiss |
| Publicado | 21 de abr. de 2026 (Patchstack) |
O manipulador AJAX af2_demoimport (admin/menu_ajax_functions/demoimport.php) tem duas falhas fatais:
unserialize() em Dados Controlados pelo Atacante$jsonFile = file_get_contents( $imp_exp_tmp_path . 'af2_export.txt' );
$toImport = unserialize( urldecode( $jsonFile ) );
Um arquivo ZIP manipulado contendo um af2_export.txt malicioso dispara Injeção de Objetos PHP na desserialização — levando à Execução Remota de Código completa.
$_POST['filename']$filename = $_POST['filename'];
$file = pathinfo( AF2_PLUGIN_DIR . '/demos/' . $locale . '/' . $filename . '.zip' );
Sem basename(), sem lista de permissões. Um atacante fornece ../../../uploads/evil e puxa um ZIP arbitrário de fora do diretório demos/.
Um usuário autenticado com privilégios mínimos (Assinante) pode explorar essa cadeia.
cve-2026-39440-funnelforms-fix para wp-content/plugins/Copie cve-2026-39440-fix.php diretamente para wp-content/mu-plugins/. Nenhuma ativação é necessária — os MU-Plugins carregam automaticamente.
| Ação | Hook | Prioridade |
|---|---|---|
| Bloqueia o manipulador AJAX | wp_ajax_af2_demoimport | 1 |
| Remove o submenu administrativo | admin_menu | 999 |
| Remove JS/CSS do demoimport | admin_enqueue_scripts | 20 |
O caminho de código vulnerável nunca é executado. wp_send_json_error() chama wp_die() internamente, então o manipulador do plugin nunca é alcançado.
Após a ativação:
admin-ajax.php?action=af2_demoimport retorna:
{
"success": false,
"data": { "message": "A importação de demonstração está temporariamente desativada por motivos de segurança (CVE-2026-39440)." }
}
Este plugin pode ser desativado e excluído assim que o FunnelForms Pro lançar uma versão oficial corrigida (> 3.8.1) que:
unserialize() por json_decode() ou implemente uma lista de permissões estritafilename (basename(), lista de permissões de demonstrações conhecidas)