Ktoś kupił 30 wtyczek WordPressa i wrzucił backdoora do każdej
Ktoś kupił 30 wtyczek WordPressa i wrzucił backdoora do każdej z nich. Na publicznym marketplace. Za sześć cyfr. A WordPress.org nie mrugnął okiem.
Essential Plugin — osiem lat zaufania
Essential Plugin (wcześniej WP Online Support) to zespół z Indii, który od 2015 roku budował darmowe wtyczki do WordPressa. Countdown Timer Ultimate, Popup Anything on Click, WP Testimonial, WP Team Showcase, FAQ — łącznie ponad 30 pluginów z setkami tysięcy aktywnych instalacji.
Pod koniec 2024 roku przychody spadły o 35-45%. Założyciel Minesh Shah wystawił całą firmę na Flippie. Kupił ktoś podpisany jako "Kris" — tło w SEO, krypto i marketingu hazardowym. Flippa opublikowało nawet case study o tej transakcji. Wzorcowy sukces.
Pierwszy commit nowego właściciela? Backdoor.
191 linii kłamstwa
Sierpień 2025, wersja 2.6.7 pluginu Countdown Timer Ultimate. Changelog: "Check compatibility with WordPress version 6.8.2."
Co naprawdę się zmieniło: plik class-anylc-admin.php urósł ze 473 do 664 linii. Nowy kod dodał trzy rzeczy:
fetch_ver_info()—file_get_contents()na serwer atakującego, odpowiedź trafia do@unserialize()version_info_clean()— wykonuje@$clean($this->version_cache, $this->changelog)gdzie nazwa funkcji i argumenty pochodzą z deserializowanych danych- Unauthenticated REST API endpoint z
permission_callback: __return_true
Klasyczny arbitrary function call. Serwer atakującego kontroluje nazwę funkcji, argumenty, wszystko. I ten kod siedział w repozytorium przez osiem miesięcy zanim został aktywowany.
Detonacja — 6 kwietnia 2026
Moduł wpos-analytics w każdej ze skompromitowanych wtyczek zadzwonił do analytics.essentialplugin.com, ściągnął plik wp-comments-posts.php (celowo podobna nazwa do wp-comments-post.php z core'a WordPressa) i wstrzyknął masywny blok PHP do wp-config.php.
Wstrzyknięty kod:
- Pobierał spam links, przekierowania i fake pages z serwera C2
- Wyświetlał je wyłącznie Googlebotowi — właściciel strony widział normalną witrynę
- Payload doklejany w tej samej linii co
require_once ABSPATH . 'wp-settings.php';— łatwo przeoczyć przy szybkim przeglądzie
Blockchain jako C2
I tu najciekawsza część techniczna. Domena C2 nie była hardcodowana w malware. Adres serwera rozwiązywany był przez smart contract na Ethereum, odpytując publiczne RPC endpointy blockchaina.
Tradycyjny takedown domeny? Bezcelowy. Atakujący zmienia adres w smart kontrakcie i infrastruktura działa dalej. To poważna ewolucja w stosunku do klasycznych botnetów z listą zakodowanych domen.
Reakcja WordPress.org
7 kwietnia 2026 — WordPress.org Plugins Team zamknął permanentnie 25+ wtyczek jednego dnia. Wszystkie od autora "essentialplugin". Dzień później wymusili auto-update do wersji 2.6.9.1, która dodaje return; przed backdoorowym kodem.
Ale jest haczyk: wymusiony update nie czyści wp-config.php. Kto miał wstrzyknięty payload — nadal go ma. Trzeba to naprawić ręcznie.
Lista zamkniętych wtyczek:
- Countdown Timer Ultimate
- Popup Anything on Click
- WP Testimonial with Widget
- WP Team Showcase and Slider
- WP FAQ (sp-faq)
- SP News and Widget
- WP Blog and Widgets
- Album and Image Gallery plus Lightbox
- Timeline and History Slider
- Featured Post Creative
- Post Grid and Filter Ultimate
- Footer Mega Grid Columns
- WP Responsive Recent Post Slider
- WP Slick Slider and Image Carousel
- WP Featured Content and Slider
- Hero Banner Ultimate
- Preloader for Website
- Accordion and Accordion Slider
- Portfolio and Projects
- Ticker Ultimate
- WP Trending Post Slider and Widget
- WooCommerce Product Slider and Carousel
- Audio Player with Playlist Ultimate
- Meta Slider and Carousel with Lightbox
- Post Category Image with Grid and Slider
- Product Categories Designs for WooCommerce
Ten sam playbook, większa skala
To nie jest nowy atak. W 2017 roku ktoś pod aliasem "Daley Tias" kupił wtyczkę Display Widgets (200 000 instalacji) za 15 000 dolarów i wstrzyknął spam z pożyczkami. Potem zrobił to samo z 9 kolejnymi pluginami.
Essential Plugin to ten sam schemat, ale na zupełnie inną skalę. 30+ wtyczek. Setki tysięcy aktywnych instalacji. Osiem lat budowania reputacji, sprzedanych w jednej transakcji na publicznym marketplace.
Problem systemowy
WordPress.org nie ma mechanizmu weryfikacji zmiany właściciela wtyczki. Żadnego "change of control" dla użytkowników. Żadnego dodatkowego code review gdy pojawia się nowy committer. Listing na Flippie był publiczny. Background kupującego był publiczny. Ekosystem oparty na zaufaniu przepuścił to bez mrugnięcia okiem.
Plugins Team zareagował szybko gdy atak został odkryty. Ale osiem miesięcy minęło między wrzuceniem backdoora a jego wykryciem.
Co zrobić
Jeśli zarządzasz stronami na WordPressie:
- Przeszukaj wtyczki pod kątem slugów z listy powyżej
- Sprawdź
wp-config.php— payload doklejany jest w tej samej linii corequire_once, więc plik może wyglądać normalnie. Jeśli waży ~6KB więcej niż powinien, masz problem - Usuń lub spatchuj wtyczki — samo zamknięcie na WordPress.org nie odinstalowuje ich z twojego serwera
- Jeśli znajdziesz payload w
wp-config.php— potrzebny jest pełny audyt bezpieczeństwa, nie tylko usunięcie wstrzykniętego kodu
Źródło: Austin Ginder — Someone Bought 30 WordPress Plugins and Planted a Backdoor in All of Them (9 kwietnia 2026)
Member discussion