Компрометация цепочки поставок BdThemes обошлась без подмены исходных файлов в официальном репозитории . Злоумышленники получили доступ на запись к удалённому хранилищу DigitalOcean Spaces и заменили штатные JSON-записи вредоносными. Плагины загружали эти данные для показа рекламных баннеров в панели управления, после чего XSS-уязвимость запускала JavaScript в браузере авторизованного администратора. Исследователь Wordfence Паоло Трессо описал механику так: «В отличие от традиционных атак на цепочку поставок программного обеспечения, ни один файл исходного кода в официальном репозитории не был изменён. Вместо этого злоумышленники отравили статический удалённый поток JSON, который загружался административным компонентом рекламных баннеров».

Под угрозой оказались семь продуктов BdThemes:
[]Live Copy Paste for Elementor – Cross Domain Copy Paste & Page Duplicator, live-copy-paste, более 6 000 установок.
[]Pixel Gallery Addons for Elementor – Easy Grid, Creative Gallery, Drag and Drop Grid, Custom Grid Layout, Portfolio Gallery, число установок не указано.
[]Prime Slider Addons for Elementor – Widgets, Templates & Elementor Addons, bdthemes-prime-slider-lite, число установок не указано.
[]Smart Admin Assistant – Dashboard and Site Enhancements, число установок не указано.
[]Ultimate Post Kit Addons for Elementor, число установок не указано.
[]Ultimate Store Kit – Addon For WooCommerce, EDD and Elementor, более 6 000 установок.
Изменение, открывшее путь атаке, впервые появилось 1 марта 2026 года в Prime Slider Addons for Elementor, bdthemes-prime-slider-lite, а затем попало в другие плагины BdThemes. 7 и 8 августа 2026 года, в зависимости от продукта, команда каталога WordPress закрыла затронутые страницы и временно отключила скачивание. Посетители видели уведомление о закрытии плагина на время «полной проверки».
Уязвимый внутренний компонент назывался Biggopti. Он обращался к API-серверу поставщика, забирал подходящие JSON-файлы из бакета DigitalOcean Spaces и выводил рекламные материалы в административной панели WordPress. Парсер недостаточно экранировал на стороне клиента параметр display_id, поступавший через Sigmative API. Тот, кто контролировал API либо связанное с ним хранилище, мог поместить в ответ произвольный веб-скрипт. Уязвимость получила 5,4 балла по CVSS, то есть среднюю оценку, хотя её расположение в общей системе распространения позволяло массово захватывать сайты.
Вредоносный код срабатывал на каждой загрузке страницы wp-admin. Администратору хватало открыть панель управления: не требовались обновление плагина, появление изменённых файлов на диске или новая версия в . Wordfence сообщил: «Злоумышленники получили доступ на запись к этому бакету, заменив законные JSON-ответы специально подготовленными полезными нагрузками для эксплуатации уязвимости». Далее всё происходило в браузере: «XSS срабатывает внутри браузера каждого вошедшего администратора, незаметно, при каждой загрузке страницы wp-admin. Затем внедрённый скрипт создаёт посторонние учётные записи администраторов, загружает плагин с веб-шеллом и связывается с командно-контрольным сервером C2».
Основная нагрузка поступала через API-конечную точку api-data-all-records. JavaScript передавал C2-серверу origin сайта и получал инструкции, предназначенные для конкретной жертвы. Если сервер отвечал статусом skip или done, операция прекращалась. В материалах сохранилась повреждённая либо усечённая ссылка на файл и адрес: «w2.]com/fz/c")», поэтому восстановить полный URL по этому фрагменту нельзя. При продолжении атаки скрипт через WordPress REST API создавал несанкционированного администратора и отправлял результаты оператору.
Следом с C2 загружался ZIP-архив поддельного плагина. Его устанавливали через штатную форму загрузки плагинов WordPress, что позволяло разместить PHP-веб-шелл emer-run.php и получить удалённое исполнение кода. Такой способ внешне напоминал обычные действия администратора и не требовал прямой записи в исходники уже установленного продукта.
Веб-шелл помещал два модуля постоянного доступа в каталог mu-plugins, предназначенный для Must-Use plugins. Первый создавал magic-login-бэкдор: запрос с параметром ?_wplogin=<token> открывал административный доступ без обычной аутентификации и выбирал администратора, зарегистрированного на сайте раньше остальных. Второй модуль вмешивался в запросы WordPress к базе данных, скрывал посторонних пользователей из административного списка и исправлял отображаемое общее число учётных записей так, чтобы вредоносные аккаунты в него не входили.
Исследователи нашли и запасную нагрузку x.js, размещённую прямо в инфраструктуре разработчика и выдававшуюся через другую конечную точку, api-data-records. Скрипт математически выводил имя администратора и пароль из hostname заражённого сайта. Для одного домена всегда получалась одна и та же пара учётных данных. Операторам не приходилось хранить центральный перечень сайтов и паролей, а специалисты по реагированию могли вычислить ожидаемые реквизиты для подозрительного домена и найти соответствующего пользователя. Wordfence сформулировал это так: «Поскольку учётные данные детерминированы, злоумышленникам не нужно централизованно хранить списки скомпрометированных сайтов, а специалисты по реагированию могут вычислить точные имя пользователя и пароль для поиска на подозреваемых доменах». В исходных материалах перед этой мыслью также остался усечённый фрагмент «адрес электронной почты org». Созданный аккаунт использовался для захвата управления, а результат отправлялся на C2.
Инфраструктуру командно-контрольного сервера связали с двумя недавними атаками на цепочки поставок WordPress: против Advanced Responsive Video Embedder, уязвимость CVE-2026-18072, и против OptinMonster. В тех эпизодах плагины снабжались бэкдорами, предоставлявшими неавторизованному атакующему полные административные права через единый жёстко заданный токен либо через скрытого администратора и замаскированный плагин. Учётная запись и плагин создавались лишь после входа законного администратора. Совпадение поведения и C2 указывает на связанную операцию или общую инфраструктуру.
Размещение вредоносных JSON-записей и x.js непосредственно в ресурсах поставщика заставило Wordfence говорить о компрометации выше по цепочке: «Тот факт, что вредоносные JSON-записи и вторичная нагрузка x.js были загружены непосредственно в собственный бакет поставщика, указывает на серьёзную компрометацию учётных данных облачного хранилища BdThemes либо внутренней инфраструктуры компании». Целью были скрытый административный доступ, долговременное присутствие и исполнение кода без необходимости вести централизованный список всех жертв.
Раскрытие истории BdThemes последовало через несколько дней после исправления отдельной уязвимости WordPress CVE-2026-64638, известной как XSS2Shell. Это отражённая XSS до аутентификации с оценкой CVSS 8,9. Для эксплуатации вошедший администратор должен был взаимодействовать со страницей под контролем атакующего; успешная атака позволяла перейти к исполнению PHP-кода на сервере WordPress. В случае BdThemes проверка не должна ограничиваться контрольными суммами плагинов: требуются поиск emer-run.php, аудит каталога mu-plugins, неизвестных администраторов и изменённого счётчика пользователей, анализ обращений к C2 и следов запросов ?_wplogin=, а также смена административных, облачных и инфраструктурных учётных данных.[/final]

Изображение носит иллюстративный характер
Под угрозой оказались семь продуктов BdThemes:
- []
[]Live Copy Paste for Elementor – Cross Domain Copy Paste & Page Duplicator, live-copy-paste, более 6 000 установок.
[]Pixel Gallery Addons for Elementor – Easy Grid, Creative Gallery, Drag and Drop Grid, Custom Grid Layout, Portfolio Gallery, число установок не указано.
[]Prime Slider Addons for Elementor – Widgets, Templates & Elementor Addons, bdthemes-prime-slider-lite, число установок не указано.
[]Smart Admin Assistant – Dashboard and Site Enhancements, число установок не указано.
[]Ultimate Post Kit Addons for Elementor, число установок не указано.
[]Ultimate Store Kit – Addon For WooCommerce, EDD and Elementor, более 6 000 установок.
Изменение, открывшее путь атаке, впервые появилось 1 марта 2026 года в Prime Slider Addons for Elementor, bdthemes-prime-slider-lite, а затем попало в другие плагины BdThemes. 7 и 8 августа 2026 года, в зависимости от продукта, команда каталога WordPress закрыла затронутые страницы и временно отключила скачивание. Посетители видели уведомление о закрытии плагина на время «полной проверки».
Уязвимый внутренний компонент назывался Biggopti. Он обращался к API-серверу поставщика, забирал подходящие JSON-файлы из бакета DigitalOcean Spaces и выводил рекламные материалы в административной панели WordPress. Парсер недостаточно экранировал на стороне клиента параметр display_id, поступавший через Sigmative API. Тот, кто контролировал API либо связанное с ним хранилище, мог поместить в ответ произвольный веб-скрипт. Уязвимость получила 5,4 балла по CVSS, то есть среднюю оценку, хотя её расположение в общей системе распространения позволяло массово захватывать сайты.
Вредоносный код срабатывал на каждой загрузке страницы wp-admin. Администратору хватало открыть панель управления: не требовались обновление плагина, появление изменённых файлов на диске или новая версия в . Wordfence сообщил: «Злоумышленники получили доступ на запись к этому бакету, заменив законные JSON-ответы специально подготовленными полезными нагрузками для эксплуатации уязвимости». Далее всё происходило в браузере: «XSS срабатывает внутри браузера каждого вошедшего администратора, незаметно, при каждой загрузке страницы wp-admin. Затем внедрённый скрипт создаёт посторонние учётные записи администраторов, загружает плагин с веб-шеллом и связывается с командно-контрольным сервером C2».
Основная нагрузка поступала через API-конечную точку api-data-all-records. JavaScript передавал C2-серверу origin сайта и получал инструкции, предназначенные для конкретной жертвы. Если сервер отвечал статусом skip или done, операция прекращалась. В материалах сохранилась повреждённая либо усечённая ссылка на файл и адрес: «w2.]com/fz/c")», поэтому восстановить полный URL по этому фрагменту нельзя. При продолжении атаки скрипт через WordPress REST API создавал несанкционированного администратора и отправлял результаты оператору.
Следом с C2 загружался ZIP-архив поддельного плагина. Его устанавливали через штатную форму загрузки плагинов WordPress, что позволяло разместить PHP-веб-шелл emer-run.php и получить удалённое исполнение кода. Такой способ внешне напоминал обычные действия администратора и не требовал прямой записи в исходники уже установленного продукта.
Веб-шелл помещал два модуля постоянного доступа в каталог mu-plugins, предназначенный для Must-Use plugins. Первый создавал magic-login-бэкдор: запрос с параметром ?_wplogin=<token> открывал административный доступ без обычной аутентификации и выбирал администратора, зарегистрированного на сайте раньше остальных. Второй модуль вмешивался в запросы WordPress к базе данных, скрывал посторонних пользователей из административного списка и исправлял отображаемое общее число учётных записей так, чтобы вредоносные аккаунты в него не входили.
Исследователи нашли и запасную нагрузку x.js, размещённую прямо в инфраструктуре разработчика и выдававшуюся через другую конечную точку, api-data-records. Скрипт математически выводил имя администратора и пароль из hostname заражённого сайта. Для одного домена всегда получалась одна и та же пара учётных данных. Операторам не приходилось хранить центральный перечень сайтов и паролей, а специалисты по реагированию могли вычислить ожидаемые реквизиты для подозрительного домена и найти соответствующего пользователя. Wordfence сформулировал это так: «Поскольку учётные данные детерминированы, злоумышленникам не нужно централизованно хранить списки скомпрометированных сайтов, а специалисты по реагированию могут вычислить точные имя пользователя и пароль для поиска на подозреваемых доменах». В исходных материалах перед этой мыслью также остался усечённый фрагмент «адрес электронной почты org». Созданный аккаунт использовался для захвата управления, а результат отправлялся на C2.
Инфраструктуру командно-контрольного сервера связали с двумя недавними атаками на цепочки поставок WordPress: против Advanced Responsive Video Embedder, уязвимость CVE-2026-18072, и против OptinMonster. В тех эпизодах плагины снабжались бэкдорами, предоставлявшими неавторизованному атакующему полные административные права через единый жёстко заданный токен либо через скрытого администратора и замаскированный плагин. Учётная запись и плагин создавались лишь после входа законного администратора. Совпадение поведения и C2 указывает на связанную операцию или общую инфраструктуру.
Размещение вредоносных JSON-записей и x.js непосредственно в ресурсах поставщика заставило Wordfence говорить о компрометации выше по цепочке: «Тот факт, что вредоносные JSON-записи и вторичная нагрузка x.js были загружены непосредственно в собственный бакет поставщика, указывает на серьёзную компрометацию учётных данных облачного хранилища BdThemes либо внутренней инфраструктуры компании». Целью были скрытый административный доступ, долговременное присутствие и исполнение кода без необходимости вести централизованный список всех жертв.
Раскрытие истории BdThemes последовало через несколько дней после исправления отдельной уязвимости WordPress CVE-2026-64638, известной как XSS2Shell. Это отражённая XSS до аутентификации с оценкой CVSS 8,9. Для эксплуатации вошедший администратор должен был взаимодействовать со страницей под контролем атакующего; успешная атака позволяла перейти к исполнению PHP-кода на сервере WordPress. В случае BdThemes проверка не должна ограничиваться контрольными суммами плагинов: требуются поиск emer-run.php, аудит каталога mu-plugins, неизвестных администраторов и изменённого счётчика пользователей, анализ обращений к C2 и следов запросов ?_wplogin=, а также смена административных, облачных и инфраструктурных учётных данных.[/final]