На 6 октомври 2026 г. Patchstack описа кампания, която създава скрит администратор в сайтове с WordPress. Тя използва две уязвимости от вида съхранен XSS, за които не е нужен акаунт. Едната е в Ninja Forms до версия 3.15.3 (CVE-2026-94504), а другата в WPC Product Bundles за WooCommerce до версия 8.6.6 (CVE-2026-93836). Поправките са в Ninja Forms 3.15.4 и WPC Product Bundles 8.6.7, а първите атаки са засечени на 4 октомври.
Как работи атаката със скрития админ
Нападателят записва вреден скрипт в данни, които администраторът отваря в работата си, например поръчка в WooCommerce или попълнена форма на Ninja Forms. Скриптът се изпълнява в браузъра на администратора в момента, в който той погледне данните. Според Patchstack скриптът не краде бисквитката за вход, а ползва вече отворената сесия.
С тази сесия скриптът качва плъгин с име wp-smart-thumbnails през инсталатора на самия WordPress и създава видим администратор. После създава втори администратор, който не се показва в Users > All Users, нито във филтъра по роля, нито в броячите над списъка. Скрива го плъгин от тип mu-plugin (must-use) в папката wp-content/mu-plugins.
Това са два от четирите начина за повторен достъп, които описва Patchstack. Другите два са адрес, през който се влиза като най-стария администратор, и файлов мениджър в качения плъгин без никаква проверка на достъпа. Затова не е достатъчно да махнете скрипта. Според Patchstack дори да махнете уязвимия или качения плъгин, скритият администратор, адресът за вход и файловият мениджър остават.
Двете уязвимости са публични от 22 септември. Patchstack видя първия опит на 4 октомври срещу WPC Product Bundles, а на следващия ден същия код през Ninja Forms. По данни на Patchstack атаките засега не са много. Patchstack пише, че към момента са потвърдени две уязвимости, но не очаква да останат само толкова. Оценката по CVSS е 7.1 според Patchstack и 7.2 в записите на NVD, подадени от Wordfence.
Засегнат ли е Вашият сайт?
Засегнат е, ако на него работи Ninja Forms до 3.15.3 включително или WPC Product Bundles до 8.6.6 включително. Според страниците им в wordpress.org Ninja Forms има над 500 000 активни инсталации, а WPC Product Bundles над 30 000. Версиите се виждат в Plugins > Installed Plugins, а в Terminal на cPanel ги показва една команда. Как се работи с WP-CLI, е описано в ръководството за WP-CLI.
# cPanel > Terminal, в папката на сайта
# Само чете. Показва версиите на двата плъгина.
wp plugin list --fields=name,status,version \
| grep -E "ninja-forms|woo-product-bundle"
Обновлението затваря дупката, но не маха вече каченото. Затова потърсете и следите от кампанията. Те са:
- папката
wp-content/plugins/wp-smart-thumbnails, която Patchstack описва като „WP Smart Thumbnails“ 1.2.4 от „MediaPress Labs“; - непознати файлове в
wp-content/mu-plugins, най-вечеclass-wp-token-validate.phpи файл, чието име започва сclass-wp-query-; - администратор, който е в базата, но го няма в екрана
Users > All Users; - опциите
fz_emer_done_v1иfz_emer_login_tokensв таблицата с опциите.
Командите по-долу само четат. Ако префиксът на Вашите таблици не е wp_, заменете го със своя. Същите заявки работят и в phpMyAdmin в cPanel.
# cPanel > Terminal, в папката на сайта
# Само чете. Търси следите на кампанията.
ls -d wp-content/plugins/wp-smart-thumbnails
ls -la wp-content/mu-plugins
wp db query 'SELECT u.ID, u.user_login, u.user_email, u.user_registered
FROM wp_users u
JOIN wp_usermeta m ON m.user_id = u.ID
WHERE m.meta_key = "wp_capabilities"
AND m.meta_value LIKE "%administrator%"'
wp db query 'SELECT option_name FROM wp_options
WHERE option_name IN ("fz_emer_done_v1", "fz_emer_login_tokens")'
Сравнете администраторите от базата с тези в екрана Users > All Users. Patchstack пише, че името на скрития акаунт е обикновена дума като support, updater, maintenance или backup, а имейлът му е на @wordpress.org. Администратор, който е в базата, но го няма в екрана, е повод да действате веднага.
Какво да направите
- Обновете Ninja Forms до 3.15.4 или по-нова и WPC Product Bundles до 8.6.7 или по-нова. Ninja Forms 3.15.5 от 28 септември добавя допълнителна защита срещу XSS. Ако не можете да обновите веднага, изключете плъгина дотогава и не отваряйте в администрацията поръчки и форми, които не познавате.
- Направете проверката по-горе, дори да сте обновили отдавна.
- Ако откриете следа, приемете, че сайтът е компрометиран. Първо запазете копие на сайта, както е описано в ръководството за бекъп. После махнете непознатите администратори, плъгина
wp-smart-thumbnails, файловете вmu-pluginsи двете опции и сменете паролите и секретните стойности (salts) в wp-config.php. Сменете и паролата на най-стария администратор, защото през адреса за вход се влиза като него, макар паролата му да не е открадната. - Пишете на поддръжката на хостинга, ако не можете да прецените какво виждате.
Какво правим ние
Ако откриете следи от кампанията, при почистването на хакнат сайт махаме скрития администратор, задните врати и зловредния код и затваряме пробива, където и да е хостнат сайтът. Какво сте открили, можете да опишете във формата за запитване. Ако следи няма, с наблюдението на уязвимостите ще знаете какво да обновите, преди следващата кампания да се възползва от слабото място.
Често задавани въпроси
Каква е атаката със скрития администратор в WordPress?
Кампания, описана от Patchstack на 6 октомври 2026 г., която създава скрит администратор в сайтове на WordPress. Тя използва две уязвимости за съхранен XSS, за които не е нужен акаунт, в Ninja Forms до версия 3.15.3 (CVE-2026-94504) и в WPC Product Bundles for WooCommerce до версия 8.6.6 (CVE-2026-93836). Първите атаки са записани на 4 октомври.
Кои версии на Ninja Forms и WPC Product Bundles поправят уязвимостите?
Ninja Forms 3.15.4 и WPC Product Bundles 8.6.7. Ninja Forms 3.15.5 от 28 септември 2026 г. добавя и още защита срещу XSS. Версиите се виждат в Plugins > Installed Plugins.
Как се стига до скрит администратор, без да се открадне паролата?
Нападателят записва вреден скрипт в данни, които администраторът отваря по работа, например поръчка в WooCommerce или изпратена форма на Ninja Forms. Скриптът се изпълнява в браузъра на администратора и използва вече отворената му сесия, без да краде бисквитката за вход. С нея качва плъгина wp-smart-thumbnails и създава администратори, единият от които е скрит.
Защо скритият администратор не се вижда в Users?
Must-use плъгин в папката wp-content/mu-plugins го скрива от Users > All Users, от филтъра по роли и от броячите над списъка. Затова питайте направо базата данни. Сравнете администраторите в таблицата с потребителите с това, което показва екранът Users, и всеки, който липсва на екрана, е причина да действате веднага.
Достатъчно ли е да обновя или да изтрия уязвимия плъгин?
Не. Обновяването на Ninja Forms или WPC Product Bundles затваря дупката, но не маха вече поставеното. Според Patchstack кампанията оставя четири пътя обратно, включително скрития администратор, адрес за вход като най-стария администратор и файлов мениджър без проверка за достъп, и премахването на плъгина не затваря нито един от тях.
Как да проверя дали сайтът ми е засегнат от кампанията?
Потърсете папката wp-content/plugins/wp-smart-thumbnails, непознати файлове в wp-content/mu-plugins като class-wp-token-validate.php и опциите fz_emer_done_v1 и fz_emer_login_tokens в таблицата с опциите. Датите на файловете не помагат, защото кампанията им дава най-старата дата от основната папка на WordPress. Според Patchstack скритият акаунт е с обикновена дума за име, например support или backup, и с имейл на @wordpress.org.
Какво да направя, ако намеря следи от скрития администратор?
Приемете, че сайтът е пробит, и първо запазете копие. После махнете непознатите администратори, плъгина wp-smart-thumbnails, файловете в mu-plugins и двете опции и сменете паролите и тайните стойности (salts) в wp-config.php. Сменете паролата и на най-стария администратор, защото адресът за вход влиза като него, макар паролата му да не е открадната.
Какво да направя, ако не мога да обновя Ninja Forms или WPC Product Bundles веднага?
Изключете засегнатия плъгин, докато успеете да го обновите. Дотогава не отваряйте в админа поръчки и форми, които не разпознавате, защото скриптът се изпълнява в момента, в който администраторът погледне данните.