Sansec opisał StyleSmuggler: niezałataną lukę w Magento Open Source i Adobe Commerce, która pozwala wykonać kod na serwerze bez logowania. Pierwsze potwierdzone wykorzystanie: 4 września 2026. Analiza publiczna: 5 września. Do 7 września Adobe nie opublikowało poprawki na tę lukę. Kolejny biuletyn bezpieczeństwa Adobe jest zaplanowany na 8 września. Nie ma potwierdzenia, że obejmie właśnie StyleSmuggler.

Źródło faktów: analiza Sansec. Ten wpis streszcza skutek operacyjny i checklistę dla operatora sklepu.

Które wersje są podatne

Sansec odtworzył pełny łańcuch bez uwierzytelnienia na czystych instalacjach Magento Open Source 2.4.7, 2.4.8 i 2.4.9. Pierwsza znaleziona ofiara działała na 2.4.6-p15 z poprawkami z lipca i sierpnia 2026. Wynik security:patch-status był czysty.

Aktualna wersja i zielony status patchy nie chronią przed StyleSmuggler, dopóki nie ma poprawki Adobe albo skutecznej mitygacji na wejściu.

Jak wygląda łańcuch ataku

Luka siedzi w systemie szablonów. Właściwości styles pozwalają wprowadzić złośliwy kod PHP i ominąć istniejące zabezpieczenia. Sansec opisuje dwa etapy:

  • Wstrzyknięcie kodu PHP, na przykład przez odpowiednio przygotowany raport błędu.
  • Wykonanie tego kodu przy renderowaniu standardowej wiadomości Magento o nieudanej płatności.

W ruchu widać m.in. POST /graphql z parametrami styles oraz ścieżki związane z płatnością, w tym /paypal/transparent/response/. Atak celowo wywołuje mail „Payment Transaction Failed Reminder”. Kod wykonuje się przy generowaniu wiadomości. Nikt nie musi otworzyć maila. Atak może się udać także wtedy, gdy wysyłka maila się nie powiedzie.

Nagły wzrost takich maili to sygnał do sprawdzenia. Sam brak maili nie oznacza, że sklep jest czysty.

Co zostaje po udanym ataku

Po RCE na serwerze pojawia się implant w Rust. Łączy się z infrastrukturą C2 i czeka na polecenia. Sansec do 7 września nie potwierdził dalszego użycia implantu na ofiarach. Sam trwały dostęp już wystarczy, żeby traktować sprawę jak incydent.

Pierwszy wariant procesu udaje [kworker/u:8:0]. Od 6 września widać też wariant fc-cache: kopia w ~/.cache/fontconfig/fc-cache, cron o minutach 13 i 43, komunikacja UDP na port 123 do domen wyglądających jak serwery czasu (ntp.timesync.to i podobne). Ruch wygląda jak synchronizacja czasu. W pakietach są m.in. hostname, użytkownik, wersja systemu i zużycie zasobów.

7 września Sansec opisał też drugi, osobny wektor na tych samych ofiarach: krótki dropper PHP i webshell w cache obrazów produktów, pod ścieżką w stylu pub/media/catalog/product/cache/ss_<10hex>/sync_<10hex>.php. Usunięcie procesu w tle nie kończy sprawy. W mediach nie powinno być plików PHP.

Co zrobić teraz

Dopóki nie ma oficjalnej poprawki Adobe, równolegle ograniczasz wektor i sprawdzasz, czy sklep nie został już naruszony.

Mitygacja. Sansec wskazuje Shield albo tymczasowe wyłączenie GraphQL do czasu fixa. Wyłączenie GraphQL w sklepie headless albo z mocnym frontem na GraphQL może zatrzymać sprzedaż. Wtedy decyzję podejmujecie z deweloperami aplikacji. Na krawędzi warto blokować znane wzorce: POST /graphql z styles oraz aktywnie wykorzystywane ścieżki płatności opisane przez Sansec i hosterów. WAF ogranicza wejście. Nie zastępuje poprawki Magento.

Skan pod kątem kompromitacji. Na hoście Magento możesz odpalić nasz skrypt IoC (bez exploita, tylko sygnały z analizy Sansec):

curl -fsSL https://opselis.pl/scripts/stylesmuggler-check.sh -o stylesmuggler-check.sh
chmod +x stylesmuggler-check.sh
./stylesmuggler-check.sh /sciezka/do/magento

Albo ręcznie:

crontab -l | grep -i gvfsd
ls -la ~/.local/share/.gvfsd/ ~/.cache/fontconfig/fc-cache /tmp/.kw_* /tmp/.cache_* /tmp/.gvfsd-* /tmp/.fc-*/fc-cache /tmp/fc-cache 2>/dev/null
ps -eo pid,comm,args | grep -iE 'kworker|fc-cache'
grep -ril 'x_trace_' var/report/
find pub/media -name '*.php'

Sprawdź też ruch wychodzący UDP/123 z serwera aplikacji oraz IoC z analizy Sansec: domeny i adresy C2, ścieżki w /tmp, cron i procesy [kworker/u:8:0] oraz fc-cache.

Jeśli znajdziesz implant. Traktuj to jak incydent: izolacja, zmiana haseł i kluczy Magento, przegląd crona, mediów, raportów i logów od 4 września, ustalenie zakresu dostępu. Zabicie jednego procesu nie usuwa persistence.

Opieka warstw na sklepie: security. Utrzymanie Magento: ecommerce.

W skrócie: StyleSmuggler to RCE bez logowania, już w użyciu, bez oficjalnego fixa Adobe na dzień 7 września 2026. Najpierw mitygacja i skan pod kątem implantu. Potem poprawka producenta, gdy się pojawi.