
Plugin WordPress prêt à l’emploi qui bloque le gestionnaire d’import de démo vulnérable dans FunnelForms Pro afin d’atténuer l’exécution de code à distance (CVE-2026-39440).
| Champ | Valeur |
|---|
| ID CVE | CVE-2026-39440 |
| Score CVSS | 9.9 (Critique) |
| Version affectée | FunnelForms Pro ≤ 3.8.1 |
| Privilèges | Faibles (niveau Abonné) |
| Type | Injection de code → Inclusion de code à distance → RCE |
| Corrigé ? | Aucun correctif officiel du fournisseur disponible pour le moment |
| Découvert par | 3ele / Sebastian Weiss |
| Publié | 21 avril 2026 (Patchstack) |
Le gestionnaire AJAX af2_demoimport (admin/menu_ajax_functions/demoimport.php) présente deux défauts fatals :
unserialize() sur des données contrôlées par l'attaquant$jsonFile = file_get_contents( $imp_exp_tmp_path . 'af2_export.txt' );
$toImport = unserialize( urldecode( $jsonFile ) );
Un fichier ZIP conçu contenant un af2_export.txt malveillant déclenche une injection d'objets PHP lors de la désérialisation — conduisant à une exécution complète de code à distance.
$_POST['filename']$filename = $_POST['filename'];
$file = pathinfo( AF2_PLUGIN_DIR . '/demos/' . $locale . '/' . $filename . '.zip' );
Pas de basename(), pas de liste blanche. Un attaquant fournit ../../../uploads/evil et extrait un ZIP arbitraire en dehors du répertoire demos/.
Un utilisateur authentifié disposant de privilèges minimaux (Abonné) peut exploiter cette chaîne.
cve-2026-39440-funnelforms-fix dans wp-content/plugins/Copiez cve-2026-39440-fix.php directement dans wp-content/mu-plugins/. Aucune activation nécessaire — les MU-Plugins se chargent automatiquement.
| Action | Hook | Priorité |
|---|---|---|
| Bloque le gestionnaire AJAX | wp_ajax_af2_demoimport | 1 |
| Supprime le sous-menu admin | admin_menu | 999 |
| Retire le JS/CSS de demoimport | admin_enqueue_scripts | 20 |
Le chemin de code vulnérable n'est jamais exécuté. wp_send_json_error() appelle wp_die() en interne, donc le gestionnaire du plugin n'est jamais atteint.
Après activation :
admin-ajax.php?action=af2_demoimport renvoie :
{
"success": false,
"data": { "message": "L'import de démo est temporairement désactivé pour des raisons de sécurité (CVE-2026-39440)." }
}
Ce plugin peut être désactivé et supprimé une fois que FunnelForms Pro publie une version corrigée officielle (> 3.8.1) qui :
unserialize() par json_decode() ou implémente une liste blanche strictefilename (basename(), liste blanche des démos connues)