
Plugin WordPress drop-in che blocca il gestore Demo Import vulnerabile in FunnelForms Pro per mitigare l'esecuzione remota di codice (CVE-2026-39440).
| Campo | Valore |
|---|
| ID CVE | CVE-2026-39440 |
| Punteggio CVSS | 9.9 (Critico) |
| Versioni interessate | FunnelForms Pro ≤ 3.8.1 |
| Privilegi | Bassi (livello Subscriber) |
| Tipo | Iniezione di codice → Inclusione remota di codice → RCE |
| Patch disponibile? | Nessuna patch ufficiale del vendor disponibile al momento |
| Scoperta da | 3ele / Sebastian Weiss |
| Pubblicazione | 21 apr 2026 (Patchstack) |
Il gestore AJAX af2_demoimport (admin/menu_ajax_functions/demoimport.php) presenta due difetti fatali:
unserialize() su dati controllati dall'attaccante$jsonFile = file_get_contents( $imp_exp_tmp_path . 'af2_export.txt' );
$toImport = unserialize( urldecode( $jsonFile ) );
Un file ZIP appositamente creato contenente un af2_export.txt dannoso innesca un'iniezione di oggetti PHP durante la deserializzazione, portando alla piena esecuzione remota di codice.
$_POST['filename']$filename = $_POST['filename'];
$file = pathinfo( AF2_PLUGIN_DIR . '/demos/' . $locale . '/' . $filename . '.zip' );
Nessun basename(), nessuna whitelist. Un attaccante fornisce ../../../uploads/evil e recupera uno ZIP arbitrario dall'esterno della directory demos/.
Un utente autenticato con privilegi minimi (Subscriber) può sfruttare questa catena.
cve-2026-39440-funnelforms-fix in wp-content/plugins/Copia cve-2026-39440-fix.php direttamente in wp-content/mu-plugins/. Nessuna attivazione necessaria: gli MU-Plugin vengono caricati automaticamente.
| Azione | Hook | Priorità |
|---|---|---|
| Blocca il gestore AJAX | wp_ajax_af2_demoimport | 1 |
| Rimuove il sottomenu admin | admin_menu | 999 |
| Rimuove JS/CSS di demoimport | admin_enqueue_scripts | 20 |
Il percorso di codice vulnerabile non viene mai eseguito. wp_send_json_error() chiama internamente wp_die(), quindi il gestore del plugin non viene mai raggiunto.
Dopo l'attivazione:
admin-ajax.php?action=af2_demoimport restituisce:
{
"success": false,
"data": { "message": "Demo import is temporarily disabled for security reasons (CVE-2026-39440)." }
}
Questo plugin può essere disattivato ed eliminato quando FunnelForms Pro rilascerà una versione ufficiale con patch (> 3.8.1) che:
unserialize() con json_decode() o implementa una whitelist rigorosafilename (basename(), whitelist delle demo note)