
Drop-in-WordPress-Plugin, das den verwundbaren Demo-Import-Handler in FunnelForms Pro blockiert, um Remote Code Execution (CVE-2026-39440) zu entschärfen.
| Feld | Wert |
|---|
| CVE-ID | CVE-2026-39440 |
| CVSS-Score | 9.9 (Kritisch) |
| Betroffen | FunnelForms Pro ≤ 3.8.1 |
| Berechtigungen | Niedrig (Abonnenten-Ebene) |
| Typ | Code-Injection → Remote Code Inclusion → RCE |
| Gepatcht? | Noch kein offizieller Vendor-Patch verfügbar |
| Entdeckt von | 3ele / Sebastian Weiss |
| Veröffentlicht | 21. Apr. 2026 (Patchstack) |
Der AJAX-Handler af2_demoimport (admin/menu_ajax_functions/demoimport.php) hat zwei fatale Schwachstellen:
unserialize() auf Angreifer-kontrollierte Daten$jsonFile = file_get_contents( $imp_exp_tmp_path . 'af2_export.txt' );
$toImport = unserialize( urldecode( $jsonFile ) );
Eine präparierte ZIP-Datei mit einer bösartigen af2_export.txt löst bei der Deserialisierung eine PHP-Object-Injection aus – was zu vollständiger Remote Code Execution führt.
$_POST['filename']$filename = $_POST['filename'];
$file = pathinfo( AF2_PLUGIN_DIR . '/demos/' . $locale . '/' . $filename . '.zip' );
Kein basename(), keine Whitelist. Ein Angreifer liefert ../../../uploads/evil und zieht eine beliebige ZIP-Datei von außerhalb des demos/-Verzeichnisses.
Ein authentifizierter Benutzer mit minimalen (Abonnenten-)Berechtigungen kann diese Kette ausnutzen.
cve-2026-39440-funnelforms-fix nach wp-content/plugins/ hochladenKopieren Sie cve-2026-39440-fix.php direkt nach wp-content/mu-plugins/. Keine Aktivierung nötig – MU-Plugins werden automatisch geladen.
| Aktion | Hook | Priorität |
|---|---|---|
| Blockiert AJAX-Handler | wp_ajax_af2_demoimport | 1 |
| Entfernt Admin-Untermenü | admin_menu | 999 |
| Entfernt Demoimport-JS/CSS | admin_enqueue_scripts | 20 |
Der verwundbare Codepfad wird niemals ausgeführt. wp_send_json_error() ruft intern wp_die() auf, sodass der Handler des Plugins nie erreicht wird.
Nach der Aktivierung:
admin-ajax.php?action=af2_demoimport gibt Folgendes zurück:
{
"success": false,
"data": { "message": "Demo import is temporarily disabled for security reasons (CVE-2026-39440)." }
}
Dieses Plugin kann deaktiviert und gelöscht werden, sobald FunnelForms Pro eine offizielle gepatchte Version (> 3.8.1) veröffentlicht, die:
unserialize() durch json_decode() ersetzt oder eine strenge Whitelist implementiertfilename-Parameter bereinigt (basename(), Whitelist bekannter Demos)