Sklepy na Magento włamane mimo kompletu łatek. Sam hotfix już nie wystarczy

Prowadzę sklep internetowy od dwudziestu lat i nauczyłem się, że najgorsze awarie to nie te, które widać na wykresie sprzedaży. W nocy z 4 na 5 września ktoś wszedł na serwery sklepów opartych na Magento, które miały wgrane wszystkie dostępne w tym momencie poprawki — a Adobe wydało łatkę dopiero trzy dni później. Pokazuję, co dokładnie zrobić w takim sklepie w tym tygodniu i dlaczego ta historia dotyczy też Ciebie, jeśli stoisz na PrestaShop albo WooCommerce.
Co się stało i dlaczego ocena 10.0 nie jest przesadą
Podatność ma numer CVE-2026-75650, a firma Sansec, która ją wykryła, nazwała ją StyleSmuggler. To nieuwierzytelnione wykonanie kodu: atakujący nie potrzebuje konta, hasła ani żadnego uprawnienia w sklepie. Stąd ocena CVSS 10.0 i priorytet 1 w klasyfikacji Adobe — wyżej się nie da.
Mechanizm jest dwuetapowy. Najpierw wstrzyknięcie kodu przez właściwości styles w silniku szablonów, potem wykonanie tego kodu w momencie, gdy Magento renderuje powiadomienie o nieudanej płatności. Napastnik sam wywołuje to powiadomienie, więc nie musi czekać, aż w sklepie coś się zepsuje.
Zasięg z komunikatu Adobe: Adobe Commerce 2.4.4 do 2.4.9, Adobe Commerce B2B 1.3.3 do 1.5.3 i Magento Open Source 2.4.4 do 2.4.9. Adobe pisze wprost, że podatność jest wykorzystywana w atakach na sklepy — to nie jest ostrzeżenie prewencyjne, tylko relacja z pola.
Trzy dni, w których nie było czego wgrać
Sansec datuje pierwsze potwierdzone wykorzystanie na 4 września, godzina 22:20 UTC. Hotfix VULN-39341 pojawił się 7 września o 20:20 UTC. Między jednym a drugim jest siedemdziesiąt godzin, w których żaden administrator nie mógł zrobić nic poza odcięciem sklepu albo pilnowaniem logów.
W tym oknie Sansec zaobserwował więcej niż jedną grupę. Jedna z prób nie powiodła się, a osiem sekund później druga weszła. Serwis BleepingComputer opisuje drugiego napastnika, który zostawił webshell w PHP o wielkości 485 bajtów, sprawdzał możliwość zapisu w katalogu pub/media i wyprowadzał dane przez subdomeny zewnętrznego serwisu. Backdoor maskował swój serwer sterujący jako zwykły serwer czasu NTP — ruch wychodzący wyglądał więc na najbardziej niewinną rzecz w całej infrastrukturze.
To jest sedno sprawy dla właściciela sklepu: sklepy, które ucierpiały, nie były zaniedbane. Miały wgrane wszystko, co istniało. Aktualność nie była w tym przypadku obroną, bo obrony jeszcze nie wyprodukowano.
Łatka to połowa roboty, a nie koniec
Adobe w tym samym komunikacie wymienia kroki, które trzeba wykonać po wgraniu hotfixa: wymiana klucza szyfrowania, zmiana haseł użytkowników panelu administracyjnego, regeneracja tokenów integracji, rotacja poświadczeń API, kluczy SSH i danych logowania do bazy. Logika jest prosta: jeśli ktoś wykonał kod na Twoim serwerze, to wyniósł z niego wszystko, co serwer wiedział. Zamknięcie drzwi nie odbiera mu kopii kluczy.
I tu zaczyna się część, o której nikt nie pisze w biuletynach bezpieczeństwa. Rotacja kluczy w sklepie z 15 tysiącami użytkowników miesięcznie to nie jedna komenda, tylko lista integracji, z których każda zaraz przestanie działać:
- feed produktowy do Merchant Center i do porównywarek,
- integracja z systemem magazynowym i księgowością,
- tokeny operatora płatności i bramki zwrotów,
- API firm kurierskich i generowanie etykiet,
- konektory analityczne, w tym wysyłka zdarzeń po stronie serwera,
- konta pracowników i wszystkie klucze w narzędziach zewnętrznych.
Zanim ruszysz pierwszy klucz, wypisz tę listę. Rotacja bez listy oznacza, że w piątek po południu sklep przestaje wysyłać zamówienia do magazynu, a Ty szukasz przyczyny w zupełnie innym miejscu.
Jak sprawdzić, czy ktoś już był
Najprostszy sygnał jest darmowy i nie wymaga żadnego narzędzia: e-maile „Payment Transaction Failed Reminder” wysyłane bez powodu. Atak celowo wywołuje to powiadomienie, więc nagły wysyp takich wiadomości w skrzynce sklepu albo w logu poczty jest realnym śladem. Poza tym:
- procesy o nazwach udających systemowe:
chronyd,fc-cache,[kworker/u:8:0], - pliki PHP w katalogu
pub/media, gdzie żaden plik wykonywalny nie ma prawa być, - ruch wychodzący do „serwera NTP”, którego nie ma w Twojej konfiguracji,
- zmiany w plikach rdzenia — porównanie sumy kontrolnej z czystą instalacją tej samej wersji.
Sansec udostępnia własny skaner integralności plików. Jeśli masz podejrzenie, że sklep był otwarty w tym oknie, samo wgranie hotfixa niczego nie potwierdzi ani nie wykluczy — trzeba przejść przez ślady.
Co z tego ma sklep na PrestaShop albo WooCommerce
Nie chodzi o Magento. Chodzi o czas reakcji, który każdy sklep ma zmierzony albo nie ma.
Zadaj sobie cztery pytania i zapisz odpowiedzi liczbami. Ile godzin od wydania poprawki krytycznej mija u Ciebie do wgrania jej na produkcję? Kiedy ostatni raz odtwarzałeś kopię zapasową na czystym środowisku, a nie tylko sprawdzałeś, że plik z kopią istnieje? Ilu ludzi ma dziś dostęp do panelu i ile z tych kont należy do osób, które już z Tobą nie pracują? Ile aktywnych tokenów API wisi w sklepie i kto je wystawił?
Druga rzecz to kolejki. Wielu sprzedawców zamraża zmiany przed Q4 i słusznie, bo listopad to nie czas na migrację. Ale zamrożenie zmian nie może obejmować poprawek bezpieczeństwa — to są dwie osobne kolejki i osobne procedury. Jeśli Twój wykonawca traktuje je tak samo, ustal to teraz, a nie 20 listopada.
Trzecia rzecz jest marketingowa i finansowa. Przejęty sklep to najczęściej skimmer w kasie, czyli podmieniony formularz płatności, który zbiera dane kart. Wtedy dochodzi zgłoszenie naruszenia do organu nadzorczego w ciągu 72 godzin, którego wymaga art. 33 RODO, zawiadomienie klientów, rozmowa z operatorem płatności i realne ryzyko, że stracisz przyjmowanie kart w środku sezonu. Do tego dane w analityce przestają być wiarygodne, bo część transakcji jest fałszywa albo nie dochodzi do systemu. Koszt liczy się wtedy nie w roboczogodzinach, tylko w wyłączonych kampaniach.
Co zrobić w najbliższym tygodniu
- Ustal wersję:
bin/magento --version. Jeśli mieści się w przedziale 2.4.4–2.4.9 (albo Adobe Commerce B2B 1.3.3–1.5.3), traktuj sklep jako podatny do czasu potwierdzenia łatki. - Wgraj hotfix VULN-39341 jako poprawkę Composera i potwierdź jego status, zamiast wierzyć, że „wykonawca wgrał”.
- Przejrzyj ślady włamania z listy wyżej — zanim uznasz temat za zamknięty. Kolejność ma znaczenie: najpierw łatka, potem dowody.
- Wypisz wszystkie integracje i konta, dopiero potem rotuj klucz szyfrowania, hasła administratorów, tokeny i poświadczenia API. Zaplanuj to na poniedziałek rano, nie na piątek.
- Sklepy na starszych gałęziach 2.2 i 2.3 nie dostaną oficjalnej poprawki. Jeśli tam jesteś, decyzja o aktualizacji przestaje być kwestią budżetu na przyszły rok.
- Nie stoisz na Magento? Zmierz swój czas od wydania poprawki do wdrożenia, na własnym przykładzie z ostatnich trzech miesięcy. Liczba w godzinach, nie w słowie „szybko”.
- Rozdziel z wykonawcą kolejkę zmian i kolejkę bezpieczeństwa na czas zamrożenia przed Q4. Na piśmie, z czasem reakcji.
Zamiast obaw wolę prewencję: koszt przygotowania takiej listy to jedno popołudnie, a koszt jej braku poznaje się dokładnie wtedy, kiedy najmniej można sobie na niego pozwolić. Jeśli chcesz, żeby ktoś przeszedł z Tobą przez integracje i plan rotacji, zanim ruszysz klucze, umów się na konsultację.

Marcin Janczewski
IT & e-commerce · Pro1.pl
Współzałożyciel Pro1.pl i DrTusz.pl. Z branżą ecommerce związany jest ponad 20 lat. Swoją karierę rozpoczynał od własnego sklepu internetowego z asortymentem do drukarek, który z sukcesami prowadzi do dziś. Obecnie DrTusz.pl jest nie tylko wiodącym ecommercem w branży, ale także marką samą w sobie, kojarzoną z najwyższym poziomem marketingu. Wspiera sklepy internetowe na każdym etapie ich rozwoju, od momentu wejścia w sprzedaż online po budowanie i optymalizację procesów. Programista z wykształcenia, marketer i sprzedawca z pasji.
Czytaj też
ChatGPT polecił Twój produkt, ale kupić kazał u konkurencji: jak wybiera sprzedawcę
Sklep sprzedający te same produkty co dziesiątki konkurentów nie pyta, czy AI zna produkt, tylko czy wskaże jego sklep. Pokazuję, jak ChatGPT buduje listę ofert dla jednego GTIN, co przepisuje po swojemu, skąd bierze błędne dane i które 10 pól feedu i karty produktu poprawić w 30 dni.
Sinsay dolicza 1,99 albo 9,99 zł za sztukę. Zanim skopiujesz dopłatę logistyczną, policz ją u siebie
Sinsay dolicza dopłatę logistyczną za każdą sztukę szkła, płynów i produktów gabarytowych. Pokazuję, jak policzyć taki koszt na własnych zamówieniach, gdzie ustawa stawia granicę, i dlaczego dopłata nie może wpaść do przychodu w GA4 ani do ceny w feedzie.
GUS: usługi drożeją o 5,6%, towary o 2,5%. Twoja marża jest po tej droższej stronie
GUS opublikował wskaźniki cen za sierpień. Towary podrożały o 2,5% rok do roku, usługi o 5,6%. Sklep internetowy stoi po obu stronach tej różnicy naraz — i to ona po cichu zjada marżę przed sezonem.