Osmého srpna 2026 odhalil bezpečnostní tým Wordfence sofistikovaný supply chain útok na ekosystém BdThemes, vývojáře populárních WordPress pluginů pro tvorbu webdesignu. Útočníci neupravili jediný řádek kódu v oficiálním repozitáři – místo toho otrávili vzdálený JSON datový kanál, který pluginy používají k zobrazování propagačních bannerů. Výsledek? Během pár vteřin od načtení administrační stránky vzniknul na napadeném webu nový administrátorský účet.
Jak se útok liší od běžných kompromitací pluginů
Většina supply chain útoků ve WordPress světě funguje tak, že se útočníkovi podaří propašovat škodlivý kód přímo do zdrojových souborů pluginu – ať už přes kompromitovaný vývojářský účet, nebo skrze napadený aktualizační mechanismus. To se stalo například v červenci 2026 u pluginů ShapedPlugin, kde útočníci backdoorovali aktualizace prémiových pluginů.
Útok na BdThemes je ovšem odlišný v principu. Pluginy z dílny BdThemes obsahují komponentu nazvanou Biggopti, která při každém načtení administrační stránky stahuje z API serveru výrobce JSON soubor s propagačními bannery. Tento JSON je hostovaný na statickém DigitalOcean Spaces bucketu chráněném Cloudflare – nejedná se o dynamický aplikační server, nýbrž o ploché JSON soubory v object storage.
Útočník získal práva k zápisu do tohoto bucketu a nahradil legitimní JSON odpovědi vlastními upravenými daty. Protože vývojáři pluginů zanesli do parsovacího kódu JSON zranitelnost typu XSS (Cross-Site Scripting), stačilo upravit jedinou hodnotu v JSON souboru a škodlivý kód se provedl v prohlížeči každého přihlášeného administrátora.
Technický rozbor: zranitelnost v řádku kódu
Problém sahá až do března 2026, konkrétně do verze 4.1.9 pluginu Prime Slider (SVN revize r3471891). Vývojáři v komponentě Biggopti použili hodnotu display_id z JSON odpovědi přímo do HTML atributu id bez jakéhokoliv escapování:
var f = t.display_id || t.id || "default";
var m = "bdt-admin-biggopti-api-biggopti-" + f;
A = 'id="' + m + '"';
Přitom na stejném místě o pár řádků dál správně escapovali atribut data-display-id – což ukazuje, že šlo o přehlédnutí, nikoliv o systematickou chybu. Útočník této díry využil a do hodnoty display_id vložil kód, který při průniku do HTML atributu id aktivoval onanimationstart událost:
display_id: "SAFE\" onanimationstart=eval(String.fromCharCode(...))
Tento handler se spustí během 10 milisekund po načtení stránky díky CSS animaci wrapperSlideInTop. Žádný soubor na disku není modifikován, žádný plugin není aktualizován – útok je zcela API-driven a neviditelný pro nástroje kontrolující integritu souborů.
Co se děje po infiltraci – dvě vlny payloadů
Wordfence identifikoval dva typy payloadů, které se liší podle použitého API endpointu:
Primární payload (w2.js) je doručován přes endpoint api-data-all-records. Po načtení provede následující kroky:
- Ověření C2 serveru – kontaktuje server
ia-cdn[.]com/fz/cs informací o cílovém webu. Pokud server vrátí stav “skip” nebo “done”, útok se přeruší. - Vytvoření administrátora – pomocí
X-WP-Noncez aktivní administrátorské session vytvoří přes WordPress REST API nového administrátora. - Instalace webshellu – stáhne falešný plugin (např.
wp-smart-thumbnails) a nainstaluje ho standardním plugin uploadem. Tento falešný plugin obsahuje webshell s názvememer-run.php. - MU-plugin backdoory – webshell nainstaluje dva moduly do adresáře Must-Use plugins. První je magic-login backdoor umožňující neautentizovaný přístup přes URL parametr
?_wplogin=<token>. Druhý je stealth modul, který v dotazech do databáze skrývá vytvořené falešné účty před výpisem uživatelů. - Exfiltrace – výsledky všech fází jsou odeslány na C2 server pomocí
navigator.sendBeacon.
Alternativní payload (x.js) je hostovaný přímo na infrastruktuře BdThemes a používaný endpointem api-data-records. Jeho nejzajímavější vlastnost: generuje deterministické administrátorské přihlašovací údaje.
function makeCreds(){
var host = siteKey();
var hash = 0;
for (var i = 0; i < host.length; i++) {
hash = ((hash << 5) - hash + host.charCodeAt(i)) | 0;
}
var n = Math.abs(hash).toString(36).slice(0, 6);
var user = 'bd_' + n;
var pass = 'Bd@26!' + n + 'x';
return {user:user, pass:pass};
}
Díky této funkci má každý napadený web uživatelské jméno ve formátu bd_XXXXXX (kde XXXXXX je 6znakový base36 hash hostname) a heslo Bd@26!XXXXXXx. To je důležité pro forenzní analýzu – incident responderi mohou snadno spočítat, jaké přihlašovací údaje na konkrétní doméně hledat.
Kdo za útokem stojí a jaký je rozsah
Podle Wordfence je C2 doména spojena se stejnými hráči, kteří stojí za útokem na plugin Advanced Responsive Video Embedder (ARVE) z července 2026 a také za kompromitací služby OptinMonster z června 2026. Jedná se tedy o stejnou skupinu, která systematicky útočí na WordPress ekosystém.
Seznam postižených pluginů zahrnuje:
– Element Pack Addons for Elementor (bdthemes-element-pack-lite) – vlajková loď s více než 100 000 aktivními instalacemi na WordPress.org
– Prime Slider Addons for Elementor (bdthemes-prime-slider-lite)
– Pixel Gallery Addons for Elementor (pixel-gallery)
– Ultimate Post Kit Addons for Elementor (ultimate-post-kit)
– Ultimate Store Kit – Addon pro WooCommerce, EDD a Elementor (ultimate-store-kit)
– Live Copy Paste for Elementor (live-copy-paste)
– Smart Admin Assistant (smart-admin-assistant)
Vývojář BdThemes na svých stránkách uvádí portfolio s více než 350 000 aktivními instalacemi napříč všemi produkty.
WordPress Plugins tým v sobotu 8. srpna všechny postižené pluginy uzavřel a stáhl z oficiálního adresáře. K 10. srpnu nebyly k dispozici ke stažení.
Časová osa událostí
- 1. března 2026 – Vývojáři přidávají Biggopti API JavaScript do Prime Slider 4.1.9. Hodnota
display_idzůstává neescapovaná v atributuid. - 10. května 2026 – Mění se endpoint na
api-data-all-records. Přidává se DOMParser sanitizer pro obsah bannerů, ale atributidstále není escapovaný. - 23. června 2026 – Nejstarší možné datum, kdy útočníci začali servírovat otrávenou JSON odpověď (propagační kampaň “Summer Sale”).
- 6.–7. srpna 2026 – Útočníci aktualizují otrávené JSON soubory na obou endpointech.
- 7. srpna 2026 – Wordfence Threat Intelligence je informován o útoku. Pluginy jsou uzavřeny v adresáři WordPress.org.
- 8. srpna 2026 – Oba API endpointy vracejí čistá JSON data. Wordfence publikuje podrobný report.
- 10. srpna 2026 – BleepingComputer publikuje souhrnný článek.
Co by měli uživatelé BdThemes udělat
Pokud na svém webu používáte některý z výše uvedených pluginů, podnikněte následující kroky:
- Zkontrolujte uživatele – Projděte seznam uživatelů ve WordPress administraci a hledejte účty se jménem začínajícím na
bd_nebo s e-mailem končícím na@wordpress.org. - Prohledejte databázi – Hledejte databázové option
fz_emer_login_tokensnebofz_emer_done_v1, které indikují dokončenou kompromitaci. - Zkontrolujte MU-pluginy – Podívejte se do adresáře
wp-content/mu-plugins/na podezřelé soubory jakoclass-wp-token-validate.php,class-wp-query-*.phpnebowp-cache-optimizer.php. - Vyhledejte webshell – Hledejte soubor
emer-run.phpv adresářích pluginů. - Změňte všechna hesla – Po odstranění backdoorů změňte administrátorská hesla a ideálně i klíče API.
- Smažte postižené pluginy – Dokud nebudou pluginy prověřeny a znovu publikovány, nepoužívejte je.
- Použijte bezpečnostní plugin – Wordfence nebo podobný nástroj, který detekuje známé signatury této kampaně.
Zdroje
Zdroj: BleepingComputer – BdThemes plugins supply-chain hack creates rogue WordPress admins (10. 8. 2026)
Potřebujete s WordPress webem pomoct? Kontakt najdete přes formulář na stránce Kontakt.