Nowo ujawniona kampania Operation WrtHug kompromituje dziesiątki tysięcy domowych i SOHO routerów ASUS WRT, przede wszystkim urządzenia EoL (poza wsparciem). Badacze ze STRIKE (SecurityScorecard) szacują, że ponad 50 tys. unikatowych adresów IP należących do zainfekowanych routerów było widocznych w ciągu ostatnich 6 miesięcy. Wspólnym wskaźnikiem infekcji jest identyczny, samopodpisany certyfikat TLS na usłudze AiCloud z nietypowym 100-letnim terminem ważności od kwietnia 2022 r.. Kampania łączy się taktykami i zasięgiem z operacjami klasy ORB (Operational Relay Box), które służą do skrytego pośredniczenia w ruchu na potrzeby cyber-szpiegostwa.
W skrócie
Skala: ≥50 000 zainfekowanych routerów ASUS, głównie w Tajwanie i Azji Płd-Wsch., ale również w USA, Rosji i Europie.
Wektor: łańcuch n-day na AiCloud + zestaw błędów OS command injection i auth bypass w starszych firmware’ach ASUS WRT.
IoC: wspólny self-signed cert (AiCloud) z ważnością 100 lat.
Powiązania: zbieżność TTP z wcześniejszą kampanią AyySSHush na routery ASUS (GREYNOISE).
W maju 2025 r. GreyNoise opisał cichą kampanię AyySSHush: trwałe tylne wejście w tysiącach routerów ASUS, z wykorzystaniem CVE-2023-39780, modyfikacji konfiguracji SSH oraz przechowywania artefaktów w NVRAM (przetrwanie restartów i aktualizacji). WrtHug dzieli część TTP (wykorzystanie tych samych rodzin błędów i celów), ale STRIKE notuje zaledwie 7 hostów z nakładającą się infekcją, więc traktuje WrtHug jako oddzielną kampanię – potencjalnie tego samego lub skoordynowanych aktorów.
Analiza techniczna / szczegóły luki
Łańcuch ataku w WrtHug opiera się na publicznie znanych (n-day) błędach w ASUS WRT oraz podatnościach AiCloud:
OS command injection:
CVE-2023-41345 / 41346 / 41347 / 41348 – rodzina błędów powiązana z mechanizmami tokenowymi oraz „apply” w panelu, w praktyce skorelowana z CVE-2023-39780 (RT-AX55; wstrzyknięcie komend po uwierzytelnieniu).
AiCloud (arbitrary command / auth bypass):
CVE-2024-12912 – błąd w AiCloud pozwalający na wykonanie poleceń (CVSS 7.2, NVD).
CVE-2025-2492 – improper authentication control w AiCloud (CVSS 9.2); możliwe wywołanie funkcji bez autoryzacji przygotowanym żądaniem.
Artefakt/kondensator IoC: na zainfekowanych urządzeniach usługa AiCloud prezentuje ten sam certyfikat TLS, samopodpisany, z okresem ważności 100 lat (od 04.2022). To najprostszy punkt zaczepienia dla huntów i detekcji.
Modele na celowniku: raporty wymieniają m.in. 4G-AC55U/860U, DSL-AC68U, GT-AC5300, GT-AX11000, RT-AC1200HP/1300G+/1300UHP i inne starsze/EoL wersje. (Lista może nie być kompletna; kluczowe jest sprawdzenie statusu wsparcia danego modelu).
Praktyczne konsekwencje / ryzyko
Skryte proxy/relay (ORB): urządzenia stają się węzłami ukrywającymi ruch na potrzeby eksfiltracji i rozpoznania – mniejsze ryzyko DDoS, większy nacisk na szpiegostwo i pivoting.
Trwałość: atak często przetrwa aktualizacje firmware’u (konfiguracja w NVRAM, zmiany SSH), więc „patch ≠ remediacja”.
Ekspozycja MŚP i domów: domowe/SoHo routery bywają pomijane w procesach hardeningu, a AiCloud bywa wystawiony do Internetu bez MFA i segmentacji.
Rekomendacje operacyjne / co zrobić teraz
Szybki hunting IoC
Sprawdź, czy AiCloud prezentuje nietypowy, samopodpisany cert z datą ważności do 2122 r.. Jeśli tak – traktuj jako wysoki wskaźnik kompromitacji.
Weryfikacja AiCloud i dostępu zdalnego
Jeżeli urządzenie jest EoL lub brak łatki – wyłącz AiCloud i każdy zdalny dostęp z Internetu (HTTP/HTTPS, SSH, WAN admin).
Remediacja trwałości
Jeżeli podejrzewasz kompromitację: pełny factory reset, następnie ręczna, czysta konfiguracja (nie przywracaj kopii!), sprawdź authorized_keys, porty SSH (GREYNOISE raportował niestandardowy TCP/53282), usuń obce klucze.
Aktualizacje firmware’u
Zastosuj najnowsze firmware’y naprawiające m.in. CVE-2025-2492 (AiCloud) oraz luki z 2023 r. W przypadku EoL – wymiana urządzenia.
Hardening
Zmień hasła admina, włącz MFA (jeśli wspierane), ogranicz panel do LAN/VPN, wyłącz UPnP, stosuj ACL/geo-IP na brzegu, segmentuj sieć (IoT/Wi-Fi gości oddzielnie). (Dobre praktyki na bazie ogólnych zaleceń i obserwacji z raportów).
Monitoring i bloki
Blokuj znane IP/porty z raportów (np. 53282/TCP dla SSH), loguj odwołania do AiCloud, ustaw alerty na zmiany certyfikatów i włączenie SSH.
Różnice / porównania z innymi przypadkami (jeśli dotyczy)
WrtHug vs. AyySSHush: oba celują w ASUS WRT i łączą CVE-2023-39780, ale WrtHug ma wyraźny IoC TLS (100-letni cert) na AiCloud i inną dystrybucję geograficzną; AyySSHush akcentował trwałość przez NVRAM/SSH. Mało hostów z podwójną infekcją → różne klastry/etapy jednego lub skoordynowanych aktorów.
Botnet vs. ORB: klasyczne botnety = hałaśliwe DDoS/kripto-koparki; ORB = ciche szlaki ruchu dla operacji APT (maskowanie źródła, pivot). WrtHug ma profil ORB-like.
Podsumowanie / kluczowe wnioski
Słabe ogniwo #1: EoL routery z włączonym AiCloud i zdalnym dostępem.
Krytyczna podatność deserializacji w SAP NetWeaver AS Java (RMI‑P4) pozwala nieautoryzowanemu napastnikowi zdalnie wykonać dowolne komendy systemowe przez wysłanie złośliwych obiektów Java na otwarty port P4 (5NN04/50004). Należy załatać wg not SAP #3634501 oraz wdrożyć dodatkowe filtrowanie deserializacji JVM wg #3660659, a także ograniczyć ekspozycję portu P4 tylko do zaufowanych sieci. Brak publicznych dowodów eksploatacji/PoC w momencie publikacji dostawców, ale ryzyko jest maksymalne (CVSS 10).
Krótka definicja techniczna
CVE‑2025‑42944 to błąd deserializacji niezaufanych obiektów Java w module RMI‑P4 SAP NetWeaver AS Java. Wystawiony port P4 (np. 50004) przyjmuje obiekty, które po zdeserializowaniu mogą uruchomić dowolny kod/komendy OS w kontekście procesu aplikacyjnego — bez uwierzytelnienia.
Gdzie występuje / przykłady platform
Windows / Linux: serwery z SAP NetWeaver AS Java (procesy java, jstart, sapstartsrv).
AD / ESXi: pośrednio — jeśli hosty SAP są członkiem domeny/VM; wektor RMI‑P4 pozostaje usługą aplikacyjną.
Chmury (AWS/Azure/GCP): NetWeaver na IaaS — krytyczne są Security Groups/NSG, które mogą otworzyć 5NN04 na świat.
Kubernetes: rzadkie, ale jeśli AS Java działa w kontenerze, zagrożeniem jest Service/LoadBalancer/NodePort wystawiający 5NN04.
M365: brak bezpośredniego wpływu; telemetryka MDE może pomóc w detekcji skutków (procesy). Porty P4/P4S/P4HTTP zgodnie z dokumentacją SAP.
Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
RMI‑P4 to protokół zdalnych wywołań w AS Java. Usługa nasłuchuje na porcie 5NN04 (np. 50004) i obsługuje obiekty Java przesyłane do deserializacji. W CVE‑2025‑42944 brak właściwej walidacji powoduje, że przesłany złośliwy obiekt (tzw. gadget chain) zostaje zdeserializowany, co może zakończyć się wykonaniem komend systemowych (np. powłoki), skutkując pełnym naruszeniem C/I/A aplikacji. SAP wydał poprawkę (#3634501) oraz późniejsze zalecenia utwardzające z #3660659 — w tym zastosowanie JVM‑wide jdk.serialFilter dla klas dozwolonych/blokowanych, co ogranicza powierzchnię gadgetów.
Uwaga kontekstowa: niektóre źródła branżowe raportowały brak obserwacji PoC/eksploatacji w czasie publikacji, lecz historycznie luki RCE w SAP są szybko weaponizowane po ujawnieniu poprawek. Priorytet: patch + segmentacja + filtracja P4.
toPort w [50004..59904] (w przybliżeniu wzorzec 5NN04)
Wykrywa „otwarcie świata” na P4 w chmurze
K8s audit
Wystawienie P4 z klastra
create/patchService/Ingress
spec.ports.port: 5NN04 / nodePort kończący się …04
Jeśli NetWeaver w kontenerach
M365 Unified Audit Log
–
–
[brak zastosowania]
Detekcja skutków via MDE (telemetria endpoint)
Detekcja (praktyczne reguły)
Sigma (Windows – proces potomny od Javy/SAP)
title: SAP NetWeaver AS Java -> podejrzany interpreter poleceń (CVE-2025-42944)
id: 4c7b3c8b-7b5f-4f5f-9f1a-jnr-p4-rce
status: experimental
description: Wykrywa uruchomienie cmd/PowerShell przez procesy java/jstart/sapstartsrv (skutek RMI-P4 RCE).
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-42944
- https://onapsis.com/blog/sap-security-patch-day-october-2025/
logsource:
product: windows
category: process_creation
detection:
parent_java:
ParentImage|endswith:
- '\java.exe'
- '\jstart.exe'
- '\sapstartsrv.exe'
child_shell:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\wscript.exe'
- '\cscript.exe'
condition: parent_java and child_shell
fields:
- Image
- CommandLine
- ParentImage
- ParentCommandLine
- User
falsepositives:
- Rzadkie zadania serwisowe/upgrade AS Java wywołujące skrypty systemowe
level: high
tags:
- attack.t1059
- attack.t1190
- attack.t1210
Wariant Linux/auditd (skrót):
logsource:
product: linux
service: auditd
detection:
parent_java: selection where exe endswith "java" or "jstart" or "sapstartsrv"
child_shell: selection where a0 in ("sh","bash","zsh","ksh")
condition: parent_java and child_shell
Splunk (SPL)
A. Proces potomny od Javy/SAP (Win Security 4688 lub Sysmon 1)
(index=win* (sourcetype=WinEventLog:Security EventCode=4688)
OR (sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational EventCode=1))
| eval parent=coalesce(ParentImage, ParentProcessName)
| eval child=coalesce(Image, NewProcessName)
| where match(lower(parent), "(\\\\|/)java\\.exe$|(\\\\|/)jstart\\.exe$|(\\\\|/)sapstartsrv\\.exe$")
AND match(lower(child), "(\\\\|/)cmd\\.exe$|(\\\\|/)powershell\\.exe$|(\\\\|/)wscript\\.exe$|(\\\\|/)cscript\\.exe$")
| stats count min(_time) max(_time) values(CommandLine) by host parent child user
B. Połączenia przychodzące na P4 (Zeek/FW)
(index=net* OR index=zeek* OR index=firewall*)
| eval port_str=tostring(dest_port)
| where dest_port>=50004 AND dest_port<=59904 AND like(port_str,"%04")
| stats dc(src_ip) as uniq_src count by dest_ip dest_port
| sort - count
KQL (Microsoft Defender/Defender for Cloud)
A. Proces potomny od Javy/SAP
DeviceProcessEvents
| where InitiatingProcessFileName in~ ("java.exe","jstart.exe","sapstartsrv.exe")
| where FileName in~ ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","sh","bash")
| summarize cnt=count(), firstSeen=min(Timestamp), lastSeen=max(Timestamp)
by DeviceName, InitiatingProcessAccountName, InitiatingProcessFileName, FileName, ProcessCommandLine
B. Ruch na P4 (wejściowy)
DeviceNetworkEvents
| where RemotePort between (50004 .. 59904) and RemotePort % 100 == 4
| where Direction in ("Inbound","Listen") or Action =~ "Allowed"
| summarize cnt=count(), sources=dcount(RemoteIP) by DeviceName, RemotePort, Protocol, InitiatingProcessFileName
CloudTrail (AWS) — otwarcie portu 5NN04 w SG (CloudTrail Lake SQL)
SELECT eventTime, eventName, userIdentity.type AS actor,
requestParameters.groupId AS sg,
json_extract_scalar(requestParameters, '$.toPort') AS toPort,
sourceIPAddress
FROM aws_cloudtrail_events
WHERE eventSource='ec2.amazonaws.com'
AND eventName IN ('AuthorizeSecurityGroupIngress','AuthorizeSecurityGroupEgress','CreateSecurityGroup')
AND CAST(json_extract_scalar(requestParameters, '$.toPort') AS INT) BETWEEN 50004 AND 59904
AND LIKE(json_extract_scalar(requestParameters, '$.toPort'), '%04')
ORDER BY eventTime DESC;
Elastic / EQL
Proces potomny od Javy/SAP → interpreter poleceń
process where event.type == "start" and
(process.parent.name in ("java","jstart","sapstartsrv") or
process.parent.executable : "*\\java.exe") and
process.name in ("cmd.exe","powershell.exe","sh","bash","zsh","ksh")
Heurystyki / korelacje (co łączyć)
Inbound na P4 (5NN04/50004) z Internetu ⟶ w krótkim czasie dziecko cmd/sh od procesu java/jstart.
Materiały branżowe (Arctic Wolf) wskazywały brak obserwowanej eksploatacji i publicznego PoC w chwili publikacji, choć luki SAP są atrakcyjne i szybko weaponizowane po patchach.
Dodatkowy hardening (JVM jdk.serialFilter) został opisany przez Onapsis i powiązany z notą SAP #3660659 — warto wdrożyć nawet po aktualizacji.
Komunikaty prasowe/serwisy bezpieczeństwa szeroko opisywały wagę CVE‑2025‑42944 (CVSS 10.0) oraz że został ujęty w wrześniowych i październikowych poradnikach SAP.
Lab (bezpieczne testy) — przykładowe komendy
Tylko w odizolowanym labie. Celem jest weryfikacja detekcji, nie wykorzystanie luki.
Symulacja dziecka cmd od Javy (Windows):# skompiluj prostą klasę Java uruchamiającą bezpieczną komendę echo @" public class P4Echo { public static void main(String[] args) throws Exception { new ProcessBuilder("cmd.exe","/c","echo lab-test").inheritIO().start().waitFor(); } } "@ | Set-Content .\P4Echo.java javac P4Echo.java java P4Echo Oczekiwany efekt: trigger reguł Sigma/Splunk/KQL (rodzic java.exe → dziecko cmd.exe).
Ruch na port P4 (bez payloadu), do testu korelacji sieciowej:# Linux/WSL: próba TCP handshake do P4 nc -vz <host_sap> 50004 Oczekiwany efekt: wpisy w logach FW/Zeek; brak błędów aplikacji (brak payloadu).
Weryfikacja portów SAP wg dokumentacji: sprawdź, że P4 to 5NN04 (np. 50004).
Krytyczna luka w Atlassian Crowd i Crowd Data Center umożliwiała (bez uwierzytelnienia) przesłanie i zainstalowanie arbitralnego pluginu przez endpoint administracyjny — w efekcie zdalne wykonanie kodu (RCE). Wpływ: pełne przejęcie hosta aplikacyjnego/Tomcata, często zakończone doinstalowaniem webshella i dalszą penetracją sieci. Naprawa: aktualizacja do wersji 3.0.5/3.1.6/3.2.8/3.3.5/3.4.4 lub nowszej; doraźnie usunięcie paczki pdkinstall-plugin. Detekcja: szukaj żądań do /crowd/admin/uploadplugin.action oraz anomalii „java → sh/cmd” na hoście.
Krótka definicja techniczna
CVE‑2019‑11580 wynika z błędnie pozostawionego w buildach produkcyjnych pluginu developerskiego pdkinstall, który pozwalał (także bez autoryzacji) na upload i instalację komponentów OSGi/JAR. Umożliwia to instalację złośliwego pluginu i wykonanie kodu w kontekście procesu aplikacyjnego (Tomcat/Java), co skutkuje RCE.
Gdzie występuje / przykładowe platformy
Systemy: Linux/Unix (typowo), Windows (usługa Crowd/Tomcat).
Środowiska: bare metal, VM (ESXi/Hyper‑V), kontenery/K8s (Crowd w kontenerze lub jako Helm chart), reverse proxy (NGINX/Apache), WAF.
Tożsamość: Crowd integruje się z AD/LDAP/Azure AD/M365, ale sama luka dotyczy Crowd, nie tych usług.
Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
Przyczyna: w buildach Crowd błędnie włączono pdkinstall development plugin. Pozwalał on na instalację pluginów również na instancjach produkcyjnych.
Wektor: żądanie HTTP do endpointu administracyjnego odpowiedzialnego za upload pluginów (np. ścieżka zawierająca /crowd/admin/uploadplugin.action). Po stronie serwera plugin jest ładowany i wykonywany w kontekście aplikacji.
Skutki: wykonanie dowolnego kodu (Java/serwlety), możliwość dropu webshella, ruchu bocznego, kradzieży poświadczeń i pivotu. W praktyce technika była powszechnie wykorzystywana do instalacji webshelli.
Zasięg wersji: dotyczy wersji 2.1.0 ≤ v < 3.0.5, 3.1.0 ≤ v < 3.1.6, 3.2.0 ≤ v < 3.2.8, 3.3.0 ≤ v < 3.3.5, 3.4.0 ≤ v < 3.4.4; naprawione w 3.0.5 / 3.1.6 / 3.2.8 / 3.3.5 / 3.4.4. CVSS v3.1: 9.8 (CRITICAL).
Artefakty i logi (SOC „punkty zaczepienia”)
Źródło
EID / typ
Co obserwować
Przykłady / uwagi
Web access (NGINX/Apache/ALB/WAF)
HTTP access
Żądania do /crowd/admin/uploadplugin.action, metody POST/PUT, wzrost 4xx/5xx przed sukcesem
Endpoint potwierdzony w analizach; logi WAF/ALB/AGW zawierają URI/metodę.
Crowd integruje się z M365/IdP, ale luka jest po stronie Crowd
CloudTrail
—
nie dotyczy (aplikacyjny HTTP, nie API AWS)
Traktuj CloudTrail pobocznie (zmiany infra)
Detekcja (praktyczne reguły)
Sigma (webserver → próby uploadu pluginu)
title: Atlassian Crowd CVE-2019-11580 - Podejrzany upload pluginu
id: 4c8f5ee1-7f6a-4a7c-9b8e-cc9a2cfe9e9a
status: experimental
description: Wykrywa żądania do endpointu uploadu pluginów Crowd często nadużywanego w CVE-2019-11580.
references:
- https://confluence.atlassian.com/crowd/crowd-security-advisory-2019-05-22-970260700.html
- https://nvd.nist.gov/vuln/detail/CVE-2019-11580
- https://www.rapid7.com/db/modules/exploit/multi/http/atlassian_crowd_pdkinstall_plugin_upload_rce/
logsource:
category: webserver
detection:
sel_path:
url|contains: '/crowd/admin/uploadplugin.action'
cs-uri-stem|contains: '/crowd/admin/uploadplugin.action'
sel_method:
http_method|contains:
- POST
- PUT
cs-method|contains:
- POST
- PUT
condition: sel_path and sel_method
fields:
- src_ip
- url
- http_user_agent
- http_referer
- status
falsepositives:
- Legalna instalacja/aktualizacja pluginu przez admina (okno serwisowe)
level: high
tags:
- attack.T1190
- cve.2019-11580
(endpoint/metoda potwierdzone w źródłach)
Splunk (SPL) — logi www
index=web (sourcetype=access_combined OR sourcetype=aws:alb:accesslogs OR sourcetype=nginx:ingress)
| eval uri=coalesce(cs_uri_stem, uri_path, request, uri)
| eval method=coalesce(cs_method, method, http_method)
| search uri="/crowd/admin/uploadplugin.action" method IN ("POST","PUT")
| stats count min(_time) as first max(_time) as last values(status) as http_status by src_ip, uri, method, useragent
| where count>=1
KQL (Azure) — App Gateway/WAF
AzureDiagnostics
| where Category in ("ApplicationGatewayAccessLog","ApplicationGatewayFirewallLog")
| where requestUri_s has "/crowd/admin/uploadplugin.action"
| where httpMethod_s in ("POST","PUT")
| project TimeGenerated, clientIP_s, requestUri_s, httpMethod_s, httpStatus_d, userAgent_s
AWS — CloudWatch Logs Insights (WAF/ALB)
fields @timestamp, httpRequest.clientIp, httpRequest.uri, httpRequest.httpMethod, terminatingRuleId
| filter httpRequest.uri like '/crowd/admin/uploadplugin.action'
| filter httpRequest.httpMethod in ['POST','PUT']
| sort @timestamp desc
Elastic / EQL — post‑exploitation na hoście (Java → shell)
process where event.type == "start" and
process.parent.name : ("java","java.exe","tomcat","catalina.sh","catalina.bat") and
process.name : ("bash","sh","cmd.exe","powershell.exe","curl","wget","nc","socat")
Heurystyki / korelacje (co łączyć)
Łańcuch czasowy:(1) żądanie do /crowd/admin/uploadplugin.action → (2) nagły 200/302 lub 5xx→200 → (3) na hoście java uruchamia sh/cmd → (4)połączenie wychodzące na nietypowe IP/port.
Integracja z WAF: wysoki odsetek 4xx/5xx na tej ścieżce + próby multipart POST od pojedynczego źródła.
FIM/baseline: nowe .jar w katalogach pluginów Crowd; nagłe zmiany w atlassian-bundled-plugins.zip.
False positives / tuning
Legalne okna administracyjne (instalacja/aktualizacja pluginów) — stosuj allowlist IP/adminów oraz korelację z change window.
Skanery podatności/Nuclei — zwykle GET/HEAD i brak dalszych artefaktów hostowych.
Reverse proxy health checks — nie używają POST/PUT na admin‑endpointach. Tuning: ogranicz alerty do POST/PUT + 2xx/3xx i wyklucz znane sieci adminów; koreluj z host‑EDR (Java→shell).
Playbook reagowania (IR) — kroki & komendy
Kontekst tylko defensywny. Wykonuj wyłącznie w środowisku, którego jesteś administratorem.
Triage & potwierdzenie
Sprawdź wersję Crowd (podatne pasma); jeżeli poniżej 3.4.4 (lub odpowiedni fix dla linii), traktuj jako incydent krytyczny.
Przejrzyj WAF/ALB/NGINX: żądania do /crowd/admin/uploadplugin.action.
Izolacja
Tymczasowo zablokuj dostęp do ścieżki na WAF/reverse proxy (rule deny URI).
Rozważ odłączenie hosta od Internetu (zachowując dostęp IR).
Krytyczna luka w Adobe Flash Player (CVE‑2015‑3113) umożliwiała zdalne wykonanie kodu poprzez przepełnienie bufora na stercie, m.in. po wejściu na złośliwą stronę lub kliknięciu odsyłacza w kampanii phishingowej. Zero‑day wykorzystywany był w operacji Clandestine Wolf (APT3), z łańcuchem: e‑mail → profilowanie JS → załadowanie pliku SWF/FLV → ROP/DEP/ASLR bypass → zrzut backdoora (SHOTPUT). Detekcja: obserwuj pobrania .swf, procesy/załadowane moduły Flash oraz nietypowe dzieci procesów Flash (cmd/powershell/wscript). Ponieważ Flash jest EOL (12.2020), każde użycie Flash w 2025 r. jest co najmniej podejrzane.
Krótka definicja techniczna
CVE‑2015‑3113 to luka typu heap‑based buffer overflow w Adobe Flash Player (przed 13.0.0.296; 14.x–18.x < 18.0.0.194 dla Windows/OS X; Linux < 11.2.202.468), pozwalająca zdalnie wykonać kod przy przetwarzaniu specjalnie spreparowanych treści Flash; w czerwcu 2015 była aktywnie wykorzystywana na wolności.
Gdzie występuje / przykłady platform
Endpointy: Windows (IE/Edge Legacy/Chrome/Firefox), macOS (Safari/Firefox/Chrome), Linux (Firefox/Chromium – PPAPI/NPAPI).
Scenariusze ataku: phishing z linkiem do serwisu z exploitem, drive‑by po wejściu na zainfekowaną stronę; znane cele zawierały m.in. Windows 7 (IE) i Firefox na XP.
Stan dzisiaj: Flash Player zakończył życie 31.12.2020 (blokada uruchomienia od 12.01.2021) — użycie w sieci produkcyjnej to incydent ryzyka.
Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
Kampania Operation Clandestine Wolf przypisywana APT3 wykorzystywała e‑maile z odsyłaczami do przejętych witryn. Po kliknięciu ofiara była przekierowywana do skryptów profilujących (JS), które sprawdzały wersje przeglądarki/wtyczek. Następnie serwer dostarczał parę plików SWF + FLV wykorzystujących CVE‑2015‑3113. Exploit uzyskiwał arbitralny zapis/odczyt, wykonywał łańcuch ROP omijający DEP/ASLR, a finalnie odpalał shellcode i zrzucał backdoora SHOTPUT. Efekt: zdalne RCE i trwała kontrola hosta.
Dlaczego skuteczna? (1) popularność Flash w 2015, (2) atak drive‑by nie wymagał pobierania plików przez użytkownika, (3) łańcuch exploitów obchodził mechanizmy łagodzące (DEP/ASLR), (4) szybka adopcja w ekosystemie exploit kitów (np. Magnitude).
Nagłe crashe Flash niedługo przed nietypowym procesem‑dzieckiem.
Proxy/NGFW/DNS
Dostęp HTTP/S do *.swf, MIME application/x-shockwave-flash
url, mime, user_agent, referrer
Koreluj z kliknięciami z e‑maila (M365).
M365 Defender
EmailUrlInfo, UrlClickEvents
Url, UrlDomain, kliknięcia Safe Links
Łącz URL .swf z hostami, które uruchomiły procesy Flash.
MITRE ATT&CK (kontekst)
APT3 + SHOTPUT
Profilowanie, dostarczenie backdoora
Do korelacji z TTP grupy.
AWS (opcjonalnie)
CloudTrail Lake (S3 Data Events)
GetObject na kluczach %.swf
Wymaga włączonych data events.
CDN
CloudFront Access Logs / Athena
cs-uri-stem like '%.swf', sc-content-type
Przy hostowaniu/pośrednictwie treści.
Detekcja (praktyczne reguły)
Sigma (Windows / Sysmon – anomalie dzieci procesów Flash)
title: Flash Plugin Spawns Suspicious Child (CVE-2015-3113 Context)
id: 5a8b2f3b-8ce3-49d0-9f1f-6a2e1d1f3f31
status: experimental
description: Wykrywa nietypowe dzieci procesów Flash (cmd/powershell/skrpty), co bywa obserwowane przy RCE (np. CVE-2015-3113).
references:
- https://nvd.nist.gov/vuln/detail/CVE-2015-3113
- https://cloud.google.com/blog/topics/threat-intelligence/operation-clandestine-wolf-adobe-flash-zero-day/
tags:
- attack.t1203
- attack.t1189
- attack.t1566.002
- cve.2015-3113
logsource:
category: process_creation
product: windows
detection:
sel_parent:
ParentImage|contains:
- '\FlashPlayer'
- '\FlashUtil'
- '\FlashPlayerPlugin'
sel_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\rundll32.exe'
- '\regsvr32.exe'
condition: sel_parent and sel_child
fields:
- ParentImage
- ParentCommandLine
- Image
- CommandLine
falsepositives:
- Rzadkie narzędzia korporacyjne wołane z aplikacji opartej na Flash (dziś skrajnie rzadkie)
level: high
Splunk (SPL)
1) Flash uruchomiony przez przeglądarkę
index=sysmon EventCode=1
(ParentImage="*\\iexplore.exe" OR ParentImage="*\\chrome.exe" OR ParentImage="*\\firefox.exe" OR ParentImage="*\\msedge.exe")
(Image="*\\FlashPlayer*.exe" OR Image="*\\FlashUtil*.exe" OR Image="*\\FlashPlayerPlugin*.exe")
| stats count min(_time) max(_time) by host, ParentImage, Image, CommandLine, ParentCommandLine
2) Dzieci procesów Flash
index=sysmon EventCode=1
(ParentImage="*\\FlashPlayer*.exe" OR ParentImage="*\\FlashUtil*.exe" OR ParentImage="*\\FlashPlayerPlugin*.exe")
(Image="*\\cmd.exe" OR Image="*\\powershell.exe" OR Image="*\\wscript.exe" OR Image="*\\rundll32.exe" OR Image="*\\regsvr32.exe")
| table _time host ParentImage Image CommandLine
3) Proxy/HTTP — pobrania .swf
index=proxy (uri_path="*.swf" OR mime_type="application/x-shockwave-flash")
| stats count by src_ip, user, uri, http_status, user_agent, referrer
KQL (Microsoft Defender / M365)
Defender for Endpoint — dzieci procesów Flash
DeviceProcessEvents
| where InitiatingProcessFileName in~ ("FlashPlayer.exe","FlashPlayerPlugin.exe","FlashUtil32.exe","FlashUtil64.exe")
| where FileName in~ ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","rundll32.exe","regsvr32.exe")
| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, InitiatingProcessCommandLine
MDO — kliknięcia linków .swf
UrlClickEvents
| where Url endswith ".swf" or Url has ".swf?"
| summarize Clicks=count() by UrlDomain, Url, AccountUpn, Timestamp
MDO — adresy URL w wiadomościach
EmailUrlInfo
| where Url endswith ".swf" or Url has ".swf?"
| join kind=leftouter EmailEvents on NetworkMessageId
| project Timestamp, SenderFromAddress, RecipientEmailAddress, Url, UrlDomain, Subject, ThreatTypes
Założenie: włączone S3 Data Events lub logi CloudFront.
CloudTrail Lake SQL (AWS CLI): wyszukaj pobrania *.swf z bucketów
SELECT eventTime, sourceIPAddress, userIdentity.principalId, requestParameters.bucketName AS bucket,
requestParameters.key AS objectKey
FROM event_data_store
WHERE eventSource = 's3.amazonaws.com'
AND eventName = 'GetObject'
AND requestParameters.key LIKE '%.swf'
AND eventTime > TIMESTAMP '2025-11-01 00:00:00';
(Wymaga włączonych data events).
CloudFront / Athena (przykład):
SELECT date, time, cs_host, cs_uri_stem, sc_status, sc_content_type, c_ip, cs_user_agent
FROM cloudfront_logs
WHERE cs_uri_stem LIKE '%.swf'
ORDER BY date, time DESC;
Elastic EQL
process where
process.parent.name in ("FlashPlayer.exe","FlashPlayerPlugin.exe","FlashUtil32.exe","FlashUtil64.exe") and
process.name in ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","rundll32.exe","regsvr32.exe")
Heurystyki / korelacje
Klik .swf ⇒ proces Flash ⇒ podejrzane dziecko ⇒ połączenie wychodzące (czasowo blisko) — korelacja M365 (UrlClickEvents / EmailUrlInfo) + EDR + egress DNS/HTTP.
Załadowanie pepflashplayer.dll przez przeglądarkę, następnie nietypowe zachowanie (np. nagłe powershell.exe).
Rzadko używane dziś MIME application/x-shockwave-flash w ruchu web — traktuj jako anomalię.
Artefakty APT3/SHOTPUT (nietypowe rozpoznanie hosta/użytkowników/sieci po kompromitacji) jako sygnały post‑exploitation do korelacji (np. lista kont, netstat).
False positives / tuning
Dziedzictwo wewnętrzne: pojedyncze kioski/offline‑aplikacje z zawartością SWF (dziś wyjątkowe). Użyj allowlist domen/aplikacji biznesowych i ogranicz reguły do organizacji/OU, gdzie jakiekolwiek Flash jest dopuszczone.
Narzędzia administracyjne mogą incydentalnie wywołać interpretery (np. skrypty logowania), ale rodzicem nie powinien być proces Flash.
Ustal okno czasowe (np. ±5 min od kliknięcia URL .swf) i filtruj znane testy w labie.
Playbook reagowania (SOC/IR)
Zablokuj źródło: domenę/URL z .swf w proxy/DNS firewall; wypchnij blokadę przez EDR.
Izoluj host z alertem (EDR quarantine).
Triage artefaktów:
Procesy potomne Flash, dropy w %APPDATA%, połączenia C2.
Zrzut pamięci procesu przeglądarki/Flash (jeśli polityka na to pozwala).
Hunting rozprzestrzenienie: użyj zapytań (SPL/KQL/EQL powyżej) w horyzoncie 7–30 dni.
Patch & harden: potwierdź brak Flash w flocie (wycofanie EOL), wymuś aktualizacje przeglądarek.
Eradykacja: usuń artefakty, przeinstaluj przeglądarkę, unieważnij poświadczenia pozyskane po kompromitacji.
Lessons learned: blokada typów/MIME, EDR policy na podejrzane dzieci procesów, kampania edukacyjna „nie klikaj .swf”.
Przykłady z kampanii / case studies
Operation Clandestine Wolf (APT3/UPS) — phishing z odsyłaczami do przejętych witryn; profilowanie JS; exploit CVE‑2015‑3113; backdoor SHOTPUT (Backdoor.APT.CookieCutter). Branże: A&D, telco, high‑tech, transport, budownictwo.
Eksploatacja na szeroką skalę — szybka adopcja w exploit kitach (np. Magnitude) w 2015 r.
Lab (bezpieczne testy) — tylko w kontrolowanym środowisku
Nie instaluj Flash w produkcji. Nie testujemy exploitu — jedynie łańcuch detekcji.
Test penetracyjny (ang. penetration test, potocznie pentest) to kontrolowany, celowy atak symulowany na system informatyczny, aplikację lub sieć, przeprowadzany w celu oceny bezpieczeństwa tego systemu. Innymi słowy, jest to zaplanowane “hakowanie” własnej infrastruktury – etyczny atak wykonywany za zgodą właściciela systemu.
Google wydał awaryjną aktualizację przeglądarki Chrome, aby usunąć wysokiej wagi lukę CVE-2025-13223 w silniku JavaScript V8. Błąd ma charakter type confusion i jest już aktywnie wykorzystywany („exploit in the wild”). Łatka została udostępniona w wersjach 142.0.7444.175/.176 dla Windows, 142.0.7444.176 dla macOS oraz 142.0.7444.175 dla Linuksa.
W skrócie
Co: CVE-2025-13223 – błąd type confusion w V8 (możliwa korupcja sterty, potencjalne RCE).
Status: aktywnie wykorzystywany; Google ogranicza szczegóły do czasu zaktualizowania większości użytkowników.
Wersje z poprawką: 142.0.7444.175/.176 (Win), 142.0.7444.176 (macOS), 142.0.7444.175 (Linux).
Ocena wstępna: media branżowe raportują CVSS ~8.8 (wysoka).
Kontekst / historia / powiązania
To już siódmy zero-day w Chrome w 2025 r., jaki Google musiał łatać awaryjnie. Poprzednie przypadki obejmowały m.in. inne błędy w V8 oraz luki umożliwiające eskalację uprawnień lub ominięcie piaskownicy. Google tradycyjnie wstrzymuje publikację szczegółów technicznych do czasu rozpowszechnienia aktualizacji.
Analiza techniczna / szczegóły luki
CVE-2025-13223 to błąd klasy type confusion w V8 (JS/WebAssembly). Tego typu podatności wynikają z nieprawidłowych założeń co do typu obiektu w czasie wykonania, co może prowadzić do błędów pamięci (heap corruption). W praktyce możliwe jest wyzwolenie podatności poprzez spreparowaną stronę HTML i uzyskanie zdalnego odczytu/zapisu pamięci procesu przeglądarki — w określonych warunkach aż do zdalnego wykonania kodu (RCE) lub obejścia izolacji.
Zakres dotkniętych wersji: Chrome przed 142.0.7444.175/176 (desktop). Dystrybucje i advisories (NVD, Ubuntu, NHS) potwierdzają charakter podatności i progi wersji.
Praktyczne konsekwencje / ryzyko
Atak bezplikowy przez przeglądarkę: wystarczy wejście na złośliwą stronę lub wczytanie złośliwej reklamy/iframe, aby wyzwolić błąd.
Potencjalne RCE/eskalacja w łańcuchu exploitów: luki V8 są często łączone z innymi błędami (np. sandbox escape) w pełne łańcuchy ataków.
Profil celów: TAG często wiąże zero-daye z kampaniami APT/spyware wymierzonymi w osoby wysokiego ryzyka (dziennikarze, opozycja). Choć w tym przypadku brak jeszcze szczegółów atrybucji, Google potwierdza aktywną eksploatację.
Rekomendacje operacyjne / co zrobić teraz
Natychmiastowa aktualizacja przeglądarki na stacjach roboczych i serwerach z GUI:
Chrome → Menu → Pomoc → Informacje o Google Chrome → Aktualizuj i Uruchom ponownie. Wersja docelowa: 142.0.7444.175/.176 (zależnie od OS).
Zarządzanie flotą (Intune/Google Admin/Jamf): wymuś roll-out kanału Stable 142.0.7444.175/176; monitoruj wskaźnik zgodności. (Na podstawie wersji z ogłoszenia Stable Channel.)
Chromium-based: sprawdź aktualizacje w przeglądarkach pochodnych (Edge, Brave, Opera), ponieważ podatność dotyczy V8. (Wniosek z charakteru luki; weryfikuj advisories vendorów).
Hardening przeglądarki do czasu pełnej zgodności:
włącz Site Isolation, ogranicz uprawnienia JS dla niezaufanych domen (np. polityki ExtensionInstallBlacklist/URLBlacklist), rozważ uBO/NoScript w środowiskach wrażliwych;
egzekwuj automatyczne aktualizacje i restart przeglądarki (GPO/MDM).
Detekcja i reagowanie:
monitoruj anomalia w procesach chrome.exe/chromium (spawn nieoczekiwanych child-processów, zrzuty pamięci, niepodpisane DLL);
telemetria przeglądania: nietypowe crashe V8, błędy Render Process gone po wejściu na daną domenę mogą wskazywać na testowanie exploitów.
Zarządzanie ryzykiem:
zaktualizuj rejestr podatności i KPI patchowania;
jeśli organizacja stosuje allowlistę stron, tymczasowo ogranicz odwiedzanie nieznanych domen na stanowiskach o wysokiej wrażliwości.
Różnice / porównania z innymi przypadkami
Google w 2025 r. kilkukrotnie łatał zero-daye w V8. W odróżnieniu od wrześniowej luki CVE-2025-10585 (również type confusion), obecna podatność dotyczy gałęzi 142 i ma podobny wektor (spreparowany HTML/JS). W obu przypadkach Google ogranicza szczegóły do czasu powszechnego wdrożenia łatki.
Podsumowanie / kluczowe wnioski
Zaktualizuj Chrome do 142.0.7444.175/.176 jak najszybciej — exploit już krąży.
Luka dotyczy V8 (type confusion) i może prowadzić do RCE w odpowiednich warunkach.
Organizacje powinny wymusić restart przeglądarki po instalacji oraz audytować zgodność floty.
Źródła / bibliografia
Chrome Releases – Stable Channel Update for Desktop (17 listopada 2025): wersje i status exploitu. (Chrome Releases)
BleepingComputer – omówienie i kontekst siódmego zero-daya w 2025 r. (BleepingComputer)
NVD (NIST) – opis techniczny CVE-2025-13223 (V8, type confusion, heap corruption). (NVD)
SecurityWeek – wzmianka o CVSS 8.8 i implikacjach dla RCE. (SecurityWeek)
NHS Digital Cyber Alert – wersje zawierające poprawkę i status „exploited”. (NHS England Digital)
19 listopada 2025 r. Fortinet potwierdził nową podatność w FortiWeb — CVE-2025-58034 — która jest już wykorzystywana w atakach. Błąd sklasyfikowano jako CWE-78 (command injection) i oceniono na CVSS 6.7 (średnia). Atak wymaga autoryzacji napastnika, ale pozwala wykonywać nieautoryzowane komendy systemowe poprzez spreparowane żądania HTTP lub komendy CLI. Fortinet wydał poprawki w najnowszych wydaniach FortiWeb i zaleca pilną aktualizację.
W skrócie
Nowa luka: CVE-2025-58034 (command injection, CVSS 6.7) — aktywnie wykorzystywana. Wymaga autoryzacji.
Wpływ: wykonanie poleceń OS na urządzeniu FortiWeb przez autoryzowanego atakującego.
Wersje do aktualizacji (wg Fortinet/THN):
8.0.0–8.0.1 → zaktualizuj do 8.0.2+
7.6.0–7.6.5 → zaktualizuj do 7.6.6+
7.4.0–7.4.10 → zaktualizuj do 7.4.11+
7.2.0–7.2.11 → zaktualizuj do 7.2.12+
7.0.0–7.0.11 → zaktualizuj do 7.0.12+
Powiązana krytyczna luka: CVE-2025-64446 (path traversal, bez autoryzacji, wykorzystywana w atakach; naprawiona w 8.0.2; dodana do CISA KEV).
Kontekst / historia / powiązania
Zaledwie kilka dni wcześniej społeczność bezpieczeństwa nagłaśniała CVE-2025-64446 w FortiWeb, którą Fortinet naprawił w wersji 8.0.2. Ta luka umożliwia niezalogowanemu napastnikowi uruchamianie poleceń administracyjnych i tworzenie kont admina — stąd jej krytyczność i szybkie dodanie do katalogu CISA KEV. Dzisiejsze ogłoszenie o CVE-2025-58034 dokłada kolejny wektor, tym razem wymagający autoryzacji i klasyfikowany jako command injection. Organizacje powinny traktować oba problemy łącznie i planować skoordynowane działania naprawcze.
Analiza techniczna / szczegóły luki
CVE-2025-58034 (command injection)
Mechanizm: niewłaściwa neutralizacja specjalnych znaków w kontekście wywołań systemowych (CWE-78).
Warunek: napastnik musi być uwierzytelniony (np. przejęte konto, reuse haseł, inne luki łańcuchowe).
Skutek: wykonanie komend OS na urządzeniu FortiWeb przez HTTP/CLI.
Lateral movement i trwałość: w obu przypadkach wykonanie komend OS może posłużyć do instalacji backdoorów, pivotu w sieci i kradzieży sekretów/API keys.
Podmiana konfiguracji WAF: atakujący mogą wyłączyć reguły, dodać wyjątki, modyfikować polityki — co otwiera drogę do dalszych włamań przez aplikacje chronione przez FortiWeb.
Ucieczka z wykrycia: z poziomu OS możliwe jest czyszczenie logów, modyfikacja syslog/forwardingu i ukrywanie aktywności.
Ryzyko łańcuchowe: CVE-2025-58034 może być łączona z kradzieżą poświadczeń lub innymi błędami w celu eskalacji (np. przerzucenie się z autoryzowanego na uprzywilejowany kontekst).
Rekomendacje operacyjne / co zrobić teraz
Natychmiastowa aktualizacja FortiWeb do wersji 8.0.2 lub wyższej (dla gałęzi 8.0) oraz odpowiednio: 7.6.6+ / 7.4.11+ / 7.2.12+ / 7.0.12+. Priorytet dla urządzeń z GUI/HTTP wystawionym do internetu.
Ogranicz ekspozycję zarządzania: jeśli nie możesz patchować od razu, zablokuj HTTP/HTTPS na interfejsach zewnętrznych; dostęp administracyjny tuneluj przez VPN/SSH z allow-listą adresów.
Hunting po incydencie (post-patch):
przejrzyj logi systemowe i konfigurację pod kątem niespodziewanych zmian;
sprawdź nowe/zmodyfikowane konta admina, nieznane obiekty polityk i harmonogramy zadań;
Telemetria i detekcje: ustaw reguły na nietypowe żądania do GUI/CGI (CVE-2025-64446) i anomalie w CLI/websocket; monitoruj komendy systemowe wychodzące z FortiWeb.
Segmentacja i zasada najmniejszych uprawnień: ogranicz, do jakich zasobów FortiWeb ma dostęp (np. bazy sygnatur, repo backupów), aby ograniczyć skutki kompromitacji.
Różnice / porównania z innymi przypadkami
Model ataku:
CVE-2025-58034 – wymaga autoryzacji, zatem często jest drugi etap łańcucha (po przejęciu konta).
CVE-2025-64446 – bez autoryzacji, może być wektorem wejściowym z internetu.
Krytyczność: 6.7 vs 9.8 i dodanie do CISA KEV w przypadku 64446 (obowiązek szybkiego patchowania w instytucjach federalnych USA).
Skutki ataku: obie luki prowadzą do wykonywania poleceń, ale 64446 łatwiej zautomatyzować i masowo skanować; 58034 zwiększa głębokość kompromitacji po uzyskaniu konta.
Podsumowanie / kluczowe wnioski
Dwa równoległe zagrożenia dla FortiWeb — CVE-2025-58034 (auth RCE przez command injection) i CVE-2025-64446 (unauth path traversal → admin commands) — wymagają natychmiastowych aktualizacji.
Priorytetyzuj 8.0.2+ (oraz odpowiednie wersje maintenance) i zamykanie publicznego zarządzania do czasu wdrożenia poprawek.
Po aktualizacji wykonaj aktywny threat hunting i weryfikację konfiguracji, zwłaszcza kont administracyjnych.
Źródła / bibliografia
The Hacker News — ogłoszenie Fortinet/zakres wersji dla CVE-2025-58034 (19.11.2025). (The Hacker News)
GitHub Advisory — opis CVE-2025-58034 (CWE-78, wersje podatne). (GitHub)
HKCERT — biuletyn: CVE-2025-58034 wykorzystywana w atakach. (hkcert.org)