На 31 октомври 2026 г. Patchstack публикува уязвимост в плъгина за форми Contact Form 7, а на 8 ноември тя получи номер CVE-2026-114432. Засегнати са версиите от 6.2 до 6.2.3. През форма с поле за прикачен файл човек без акаунт може да качи на сървъра файл от какъвто тип пожелае. Поправката е във версия 6.2.4 от 29 октомври. Според wordpress.org плъгинът има над 10 милиона активни инсталации.
Уязвимостта засяга само сайтове, в които поне една форма има поле за файл, например за CV, снимка или документ към запитване. Най-тежкият случай, изпълнение на чужд код на сървъра, изисква и определена настройка на сървъра. Затова оценките на уязвимостта се различават, но обновлението е нужно на всеки сайт с версия от 6.2 до 6.2.3.
Как работи уязвимостта
Когато посетител изпрати форма с файл, Contact Form 7 премества файла във временната папка wp-content/uploads/wpcf7_uploads/, в подпапка с име от десет случайни цифри. Оттам го прикача към имейла и после го изтрива. Сравнихме кода на 6.1.7, 6.2.3 и 6.2.4. До 6.1.7 плъгинът проверяваше вида и размера на файла, преди да го премести. От 6.2 нататък първо го мести и чак след това го проверява.
Във версиите от 6.2 до 6.2.3 файл, който плъгинът вече е преместил, не се отбелязва за изтриване, ако обработката спре с грешка. Такъв файл остава в папката. Заглавието на записа в WPScan посочва, че атаката минава през име на файл с невалидни знаци (невалиден UTF-8). Списъкът със забранени разширения в тези версии е кратък (php, phtml, pl, py, rb, cgi, asp и aspx), а Patchstack отбелязва, че в него липсват например phar, pht, phps и .htaccess.
Версия 6.2.4 отбелязва за изтриване всеки преместен файл, дори обработката да спре с грешка. Тя почиства невалидните знаци от имената на файловете, преди да ги обработи. Освен това сменя списъка със забранени разширения със списък на разрешените (снимки, аудио, видео, PDF и TXT). Файл с друго разширение получава „_.txt“ в края на името и сървърът го приема за обикновен текст.
Уязвимостта откриха изследователите Shinya Murakami и Jakub Herman. В записа на CVE агенцията CISA я оценява с 9.8 по CVSS, „критична“. Patchstack дава 8.1, като отбелязва висока сложност на атаката, защото нападателят не вижда името на случайната подпапка. Какво значат тези оценки, е обяснено в ръководството за CVSS. Към 8 ноември CISA отбелязва, че няма данни за атаки, но че атаката може да се автоматизира. WPScan ще публикува примерния код (proof of concept) на 19 ноември 2026 г. Обновете преди тази дата.
Кои сайтове са засегнати
Засегнат е сайт с Contact Form 7 от 6.2 до 6.2.3, в който поне една форма има поле за файл. В редактора на формата това са таговете [file] и [file*]. Адресът, на който формите изпращат данните, приема заявки от всеки, както е нормално за форма. Той приема и номера на всяка форма от списъка, дори тя да не стои на никоя страница. Затова проверете всички форми в Contact > Contact Forms, а не само тези, които се виждат на сайта.
Според записа в CVE изпълнение на код е възможно при стандартната настройка на Apache в Debian и Ubuntu, която показва съдържанието на папките и изпълнява файловете .phar като PHP. При други настройки, например nginx или Apache, който чете файловете .htaccess, нападателят може само да остави файл в папката за качвания. Записът предупреждава, че и такъв файл може да се отвори от адреса на Вашия сайт, например като страница HTML или картинка SVG със скрипт в нея. Ако не знаете как е настроен сървърът Ви, приемете, че сайтът е уязвим.
Версия 6.2 изисква WordPress 7.1 и PHP 8.3. Сайт с по-стари версии обикновено е останал на 6.1.x, а тя не е засегната.
Засегнат ли е Вашият сайт?
Версията се вижда в Plugins > Installed Plugins. В Terminal на cPanel командата по-долу показва версията на Contact Form 7 и дали плъгинът е активен. Как се работи с WP-CLI, е описано в ръководството за WP-CLI.
# cPanel > Terminal, в папката на сайта
# Само чете. Показва версията на Contact Form 7.
wp plugin list --fields=name,status,version \
--skip-plugins --skip-themes | grep -i contact-form-7
Ако версията е 6.2.4 или по-нова, или пък 6.1.x и по-стара, тази уязвимост не Ви засяга. Ако е от 6.2 до 6.2.3, вижте кои форми имат поле за файл. Следващата команда изписва заглавията им.
# cPanel > Terminal, в папката на сайта
# Само чете. Формите на Contact Form 7 с поле за файл.
for id in $(wp post list --post_type=wpcf7_contact_form \
--post_status=any --format=ids); do
wp post get "$id" --field=post_content \
| grep -qE '\[file\*?[[:space:]]' \
&& wp post get "$id" --field=post_title
done
Празен отговор значи, че нито една форма няма поле за файл. Обновете въпреки това, защото такова поле може да се добави по всяко време.
Следващите две команди търсят следи от опит за атака. Първата търси в логовете на cPanel заявки към временната папка на плъгина, където нормален посетител няма работа.
# cPanel > Terminal
# Само чете. Заявки към временната папка на Contact Form 7.
zgrep -h "/wp-content/uploads/wpcf7_uploads/" ~/access-logs/* \
~/logs/*.gz 2>/dev/null | tail -n 20
Втората търси в папката за качвания файлове с разширение на PHP, появили се след 6 октомври, когато излезе версия 6.2.
# cPanel > Terminal, в папката на сайта
# Само чете. Файлове с разширение на PHP в папката за качвания.
find wp-content/uploads -type f \( -iname "*.php*" \
-o -iname "*.pht*" -o -iname "*.phar" \) -newermt 2026-10-06
Някои плъгини слагат празен index.php в своите папки и това е нормално. Всеки друг такъв файл проверете. Празен отговор на двете команди е добър знак, но не и доказателство, защото логовете пазят само последните седмици.
Какво да направите
- Направете бекъп на файловете и базата данни, както е описано в ръководството за бекъп.
- Обновете Contact Form 7 до 6.2.4.1 от
Dashboard > Updatesили отPlugins > Installed Plugins. Тя излезе в същия ден като 6.2.4 и съдържа поправката. След това проверете версията отново с първата команда. Как да обновявате плъгините без изненади, е описано в ръководството за обновяване на плъгини. - Изпратете пробно запитване през всяка форма с поле за файл и проверете дали имейлът пристига с прикачения файл. Според кода на 6.2.4 файл с разширение извън списъка на разрешените, например документ на Word или архив ZIP, пристига с добавка „_.txt“ в края на името. Получателят трябва да махне добавката, за да отвори файла. Списъкът може да се разшири с филтъра
wpcf7_file_extension_safelist, но това е работа за разработчик. - Ако проверките открият подозрителен файл или заявки към
wpcf7_uploads, прегледайтеUsersза непознати администратори, сменете паролите и следвайте ръководството за хакнат сайт. Ако сайтът е хакнат или не работи в момента, вижте спешната помощ.
Какво правим ние
При наблюдението на уязвимостите следим какво е инсталирано на сайта Ви и всеки ден го сверяваме с базите данни с уязвимости (CVE). Щом се появи уязвимост в нещо, което използвате, изпращаме Ви сигнал и обновяваме, като първо пробваме обновлението на копие в staging. Сайтът може да е хостнат където и да е. Ако искате да включим и Вашия сайт, пишете ни през формата за запитване.
Често задавани въпроси
Какво е CVE-2026-114432?
Уязвимост в плъгина Contact Form 7 за WordPress, във версиите от 6.2 до 6.2.3. През форма с поле за прикачен файл човек без акаунт може да качи на сървъра файл от какъвто тип пожелае. Patchstack я публикува на 31 октомври 2026 г., а номерът в CVE е от 8 ноември 2026 г.
Коя версия на Contact Form 7 поправя уязвимостта?
Версия 6.2.4 от 29 октомври 2026 г. В същия ден излезе и 6.2.4.1, която също съдържа поправката, затова обновете направо до нея. Версия 6.2.4 изтрива всеки качен файл дори след грешка, почиства невалидните знаци от имената и допуска само разширения от списък на разрешените.
Засегнат ли е сайтът ми, ако формите нямат поле за файл?
Не, уязвимият код в Contact Form 7 се изпълнява само за форми с поле за файл (таговете [file] и [file*]). Проверете всички форми в Contact > Contact Forms, защото адресът за изпращане приема номера на всяка форма, дори тя да не е на страница. Обновете въпреки това, защото такова поле може да се добави по всяко време.
Атакува ли се вече уязвимостта в Contact Form 7?
Към 8 ноември 2026 г. CISA отбелязва в записа на CVE-2026-114432, че няма данни за атаки, но че атаката може да се автоматизира. WPScan ще публикува примерния код на 19 ноември 2026 г. и оттогава всеки ще може да види как работи атаката. Обновете преди тази дата.
Може ли нападателят да изпълни собствен код на сървъра през Contact Form 7?
Според записа в CVE това е възможно при стандартната настройка на Apache в Debian и Ubuntu, която показва съдържанието на папките и изпълнява файловете .phar като PHP. При nginx или Apache, който чете .htaccess, нападателят може само да остави файл в папката за качвания, но и той може да се отвори от адреса на сайта като HTML или SVG. CISA оценява уязвимостта с 9.8 по CVSS, а Patchstack с 8.1.
Защо прикачените файлове пристигат като .txt след обновяването?
От версия 6.2.4 Contact Form 7 допуска непроменени само снимки, аудио, видео, PDF и TXT. Файл с друго разширение, например документ на Word или архив ZIP, се записва с добавка „_.txt“ в края на името и пристига така в имейла. Получателят трябва да махне добавката, а разработчик може да разшири списъка с филтъра wpcf7_file_extension_safelist.
Какво да направя, ако не мога да обновя Contact Form 7 веднага?
Махнете временно полето за файл от всяка форма в Contact > Contact Forms, като изтриете тага [file ...] и запишете. Не е достатъчно да махнете формата от страницата, защото адресът за изпращане приема номера на всяка форма. Това е временна мярка и не замества обновяването до 6.2.4.1.
Засегната ли е версия 6.1.7 на Contact Form 7?
Не. Уязвимостта е във версиите от 6.2 до 6.2.3, а 6.1.7 проверява вида и размера на файла, преди да го премести. Версия 6.2 изисква WordPress 7.1 и PHP 8.3, затова сайтове с по-стари версии обикновено са останали на 6.1.x.
Източници
- NVD, CVE-2026-114432
- CVE.org, CVE-2026-114432
- WPScan, Contact Form 7 6.2 - 6.2.3, Unauthenticated Arbitrary File Upload via Invalid UTF-8 Filename
- Patchstack, Contact Form 7 6.2-6.2.3, Unauthenticated Arbitrary File Upload
- WordPress.org, Contact Form 7
- WordPress.org Plugin SVN, Contact Form 7 6.1.7, includes/file.php
- WordPress.org Plugin SVN, Contact Form 7 6.2.3, includes/file.php
- WordPress.org Plugin SVN, Contact Form 7 6.2.4, includes/submission.php
- WordPress.org Plugin SVN, Contact Form 7 6.2.4, includes/formatting.php
- WP-CLI, wp plugin list
- WP-CLI, wp post list