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ż
Agent AI w sklepie: co oddać w tym kwartale, czego nie, i skąd biorą się ciche błędy
Agent to nie chatbot: dostaje zadanie, narzędzia i działa, dopóki nie skończy. Dzielę pracę w sklepie na to, co oddaję agentowi w tym kwartale (opisy z danych, sortowanie zgłoszeń, tygodniowy raport, szkice odpowiedzi na opinie, kontrola spójności feedu), to, czego nie oddam (ceny, prawo, budżet), i pokazuję, jak pisać instrukcje, żeby błąd nie był cichy.
Przycisk „Odstąp od umowy”: w Niemczech ruszyły wezwania, w Polsce ustawa utknęła
Niemieckie stowarzyszenia wysłały w sierpniu pierwsze wezwania do sklepów bez przycisku odstąpienia od umowy. Polska ustawa utknęła na etapie rządowym. Tłumaczę, kogo obowiązek już dotyczy, jaka jest realna sankcja i dlaczego warto wdrożyć funkcję, zanim zmusi Cię do tego prawo.
Rynek w liczbach do budżetu 2027: cztery źródła z metodologią, pięć liczb do wyrzucenia
Wrzesień to miesiąc arkusza z budżetem na 2027, a na slajdach krążą liczby bez źródła. Zbieram cztery serie, którym ufam, bo mają metodologię (IAB AdEx, GUS, UKE, Gemius), pokazuję, co z nich wynika dla założeń budżetu, i osobno pięć liczb, których do prezentacji nie wklejam.