
Плагин WordPress, устанавливаемый без изменений, который блокирует уязвимый обработчик Demo Import в FunnelForms Pro для снижения риска удалённого выполнения кода (CVE-2026-39440).
| Поле | Значение |
|---|
| ID CVE | CVE-2026-39440 |
| Оценка CVSS | 9.9 (Критическая) |
| Затронутые версии | FunnelForms Pro ≤ 3.8.1 |
| Привилегии | Низкие (уровень подписчика) |
| Тип | Инъекция кода → удалённое включение кода → RCE |
| Исправлено? | Официального патча от вендора пока нет |
| Обнаружил | 3ele / Sebastian Weiss |
| Опубликовано | 21 апреля 2026 (Patchstack) |
AJAX-обработчик af2_demoimport (admin/menu_ajax_functions/demoimport.php) имеет два критических недостатка:
unserialize() для данных, контролируемых атакующим$jsonFile = file_get_contents( $imp_exp_tmp_path . 'af2_export.txt' );
$toImport = unserialize( urldecode( $jsonFile ) );
Специально созданный ZIP-файл, содержащий вредоносный af2_export.txt, вызывает инъекцию PHP-объектов при десериализации — что приводит к полному удалённому выполнению кода.
$_POST['filename']$filename = $_POST['filename'];
$file = pathinfo( AF2_PLUGIN_DIR . '/demos/' . $locale . '/' . $filename . '.zip' );
Нет basename(), нет белого списка. Атакующий указывает ../../../uploads/evil и извлекает произвольный ZIP-файл за пределами каталога demos/.
Аутентифицированный пользователь с минимальными правами (подписчик) может использовать эту цепочку уязвимостей.
cve-2026-39440-funnelforms-fix в wp-content/plugins/Скопируйте cve-2026-39440-fix.php напрямую в wp-content/mu-plugins/. Активация не требуется — MU-плагины загружаются автоматически.
| Действие | Хук | Приоритет |
|---|---|---|
| Блокирует AJAX-обработчик | wp_ajax_af2_demoimport | 1 |
| Удаляет подменю в админ-панели | admin_menu | 999 |
| Отключает JS/CSS demoimport | admin_enqueue_scripts | 20 |
Уязвимый путь выполнения кода никогда не запускается. wp_send_json_error() вызывает wp_die() внутри себя, поэтому обработчик плагина не достигается.
После активации:
admin-ajax.php?action=af2_demoimport возвращает:
{
"success": false,
"data": { "message": "Импорт демо-данных временно отключён по соображениям безопасности (CVE-2026-39440)." }
}
Этот плагин можно деактивировать и удалить после того, как FunnelForms Pro выпустит официальную исправленную версию (> 3.8.1), которая:
unserialize() на json_decode() или внедрит строгий белый списокfilename (basename(), белый список известных демо-данных)