Marquis Software Solutions – dostawca oprogramowania i usług marketingowo-analitycznych dla sektora finansowego w USA – poinformował o naruszeniu bezpieczeństwa, które dotknęło co najmniej 74 banki i unie kredytowe. Do incydentu doszło 14 sierpnia 2025 r. po włamaniu przez urządzenie SonicWall, a atak miał charakter ransomware. W plikach skradzionych z systemów Marquis znajdowały się dane osobowe klientów instytucji finansowych (m.in. SSN/Tax ID, daty urodzenia, adresy, numery kont) – na razie bez dowodów na ich publiczne ujawnienie.
W skrócie
Skala: ponad 74 instytucje, >400 tys. klientów w różnych stanach USA.
Wejście: kompromitacja dostępu przez SonicWall (SSL VPN / firewall).
Wektor powiązany z trendem: od 2024/2025 gang Akira intensywnie nadużywa podatności CVE-2024-40766 i wykradzionych sekretów do logowania przez VPN, czasem mimo MFA.
Ryzyko dla klientów: kradzież tożsamości, fraudy finansowe, dalsze spear-phishingi.
Status: Marquis rozsyła zawiadomienia w imieniu klientów-instytucji; część pism AG (prokuratorów generalnych stanów) jest publicznie dostępna.
Kontekst / historia / powiązania
Marquis obsługuje >700 banków, unii i pożyczkodawców hipotecznych w USA jako zewnętrzny dostawca narzędzi CRM, analityki danych, zgodności i marketingu. Oznacza to klasyczny scenariusz ryzyka łańcucha dostaw (third-party risk): incydent u jednego vendora skutkuje seriami notyfikacji po stronie wielu niezależnych instytucji. W pierwszych publicznych materiałach pojawiły się wzmianki, że Marquis zapłacił okup (informacja z pisma jednej z unii; wzmianka następnie usunięta z publicznego notice, ale odnotowana przez media).
Analiza techniczna / szczegóły luki
Według zgłoszeń do urzędów stanowych, atak rozpoczął się 14.08.2025 od „nieautoryzowanego dostępu” przez firewall/VPN SonicWall, po czym napastnicy wynieśli wybrane pliki i wdrożyli ransomware. Zawiadomienia wymieniają typowe PII: imię i nazwisko, adres, telefon, SSN/ITIN, numery kont (bez kodów dostępu), daty urodzenia. Niektóre instytucje publikują własne listy typów danych i wielkości populacji objętej powiadomieniem.
Od strony „pierwszej bramy” do sieci wielu ofiar widzimy ciągłość z kampaniami Akira: wykorzystanie CVE-2024-40766 (błąd kontroli dostępu w SonicOS/SSLVPN, ogłoszony w VIII 2024 r.) oraz ponowne logowania przy użyciu wcześniej wykradzionych poświadczeń / nasion OTP, nawet przy włączonym MFA. Vendor potwierdzał korelację z CVE-2024-40766 oraz zalecał reset haseł i sekretów MFA po aktualizacji.
Praktyczne konsekwencje / ryzyko
Klienci banków/uni: realne ryzyko kradzieży tożsamości (otwieranie kont na cudze dane, zwroty podatkowe, wnioski kredytowe), account takeover oraz targetowane oszustwa (phishing na podstawie dokładnych danych).
Instytucje finansowe: koszty notyfikacji i monitoringu (często Epiq/inne pakiety 12–24 mies.), obsługa sporów KYC/AML, potencjalne postępowania regulacyjne, wzrost obciążenia SOC.
Ekosystem: kolejny dowód, że urządzenia perymetryczne i ich sekrety uwierzytelniania są dziś jednym z najsłabszych ogniw łańcucha bezpieczeństwa.
Rekomendacje operacyjne / co zrobić teraz
Dla banków/uni i innych klientów Marquis (i podobnych vendorów):
IR & notyfikacje: zsynchronizować treści pism z vendor-em; ująć precyzyjny zakres danych i daty (od 14.08.2025). Zweryfikować, czy notice w danym stanie nie wymaga dodatkowych elementów.
Zarządzanie dostępem do VPN/Firewalli:
Upewnić się, że SonicWall ma wersje eliminujące CVE-2024-40766 oraz pozostałe poprawki.
Zresetować: hasła VPN/Local Admin, seed/sekrety OTP i klucze API; wymusić MFA z phishing-resistant (FIDO2/Passkeys, gdzie możliwe).
Włączyć geo-IP filtering, lockout policy, dłuższą retencję logów oraz listy blokad C2 (zgodnie z praktykami opisywanymi w notyfikacjach).
Telemetria i myślenie o „dwell time”: hunting pod kątem nietypowych logowań SSLVPN (również z legalnymi kredencjałami), korelacja ze zmianami konfiguracji, enumeracją AD i exfiltracją.
Procesy vendor-risk: wymagać od dostawców: regularnego rotowania sekretów, planów „credential refresh” po każdej kampanii na urządzenia brzegowe, oraz testów odtworzeniowych kopii zapasowych pod scenariusze ransomware.
Dla klientów indywidualnych:
Założyć zamrożenie kredytowe (credit freeze) i alerty w biurach kredytowych; skorzystać z oferowanego monitoringu tożsamości.
Uważać na wiadomości podszywające się pod bank/unię – nadmiar wiedzy (SSN, data urodzenia) pozwala tworzyć bardzo wiarygodne spear-phishingi.
Różnice / porównania z innymi przypadkami
W odróżnieniu od incydentów czysto „aplikacyjnych”, tutaj o skuteczności ataku przesądził kompromitowany dostęp perymetryczny (SSLVPN) i sekrety MFA, co wpisuje się w ewolucję ransomware: logowanie jak „prawowity” użytkownik, szybki rekonesans/eskalacja, exfiltracja, a dopiero potem szyfrowanie/okup. Dodatkowo, z racji roli Marquis jako vendora dla setek podmiotów, powstał efekt kaskadowy – wiele odrębnych notyfikacji w stanach, choć incydent źródłowo dotyczył jednego środowiska.
Podsumowanie / kluczowe wnioski
Incydent w Marquis to kolejny case łańcucha dostaw – pojedynczy vendor = dziesiątki dotkniętych instytucji i setki tysięcy osób.
Wektor wejścia koreluje z kampaniami przeciw SonicWall (CVE-2024-40766) i przejętymi sekretami MFA, co potwierdza, że samo „MFA” nie wystarczy bez rotacji seedów i pełnego „credential hygiene”.
Priorytetem jest rotacja wszystkich sekretów związanych z perymetrem, twarde MFA (FIDO2), pełne logowanie i monitoring dostępu VPN oraz dojrzały program vendor-risk.
Źródła / bibliografia
BleepingComputer: „Marquis data breach impacts over 74 US banks, credit unions”, 3 grudnia 2025. (BleepingComputer)
Reuters: „Fintech firm Marquis notifies affected business after ransomware breach”, 3 grudnia 2025. (Reuters)
Maine AG – rekord „Marquis Management LLC” (Data Breach Notifications). (maine.gov)
New Hampshire AG – pismo CoVantage CU dot. incydentu u Marquis (PDF). (mm.nh.gov)
SonicWall / NVD – CVE-2024-40766 (opis i zalecenia) oraz advisory o korelacji incydentów SSLVPN. (NVD)
Co można zrobić po przeskanowaniu sieci i znalezieniu otwartych portów HTTP/HTTPS? Załóżmy, że Nmap pokazał nam hosty nasłuchujące na porcie 80 lub 443 – chcemy teraz szybko sprawdzić, jakie aplikacje webowe tam działają. Oczywiście można ręcznie wklepać każdy adres w przeglądarce, ale inżynierska ciekawość i lenistwo podsuwają lepsze rozwiązanie: użyjmy możliwości Nmap Scripting Engine (NSE).
BlueKeep (CVE‑2019‑0708) to przed‑autentykacyjna podatność RCE w usłudze Remote Desktop Services/TermService (RDP) w starszych Windows (XP, Vista, 7; Server 2003/2008/2008 R2). Umożliwia zdalne wykonanie kodu bez interakcji użytkownika i ma potencjał „wormowalny”. NLA redukuje ryzyko automatycznej propagacji, ale nie eliminuje RCE jeśli atakujący ma ważne poświadczenia — łatka jest obowiązkowa (np. KB4499164/KB4499175, KB4499180, KB4500331). CVSS v3.1: 9.8 (Critical).
Krótka definicja techniczna
CVE‑2019‑0708 to błąd w implementacji RDP w komponencie jądra (m.in. termdd.sys/RDS), który pozwala niezalogowanemu napastnikowi na wysłanie specjalnie przygotowanych PDU w fazie zestawiania kanałów RDP i osiągnięcie zdalnego wykonania kodu w kontekście systemowym. W praktyce umożliwia to wejście (Initial Access) lub ruch boczny (Lateral Movement) przez RDP.
Gdzie występuje / przykłady platform
Windows XP SP3 (x86/x64/Embedded), Server 2003 (SP2/R2), Vista SP2, Windows 7 SP1, Windows Server 2008 / 2008 R2 — podatne bez aktualizacji. Microsoft wydał poprawki, łącznie dla systemów EoL. Windows 8/10/11 nienarażone.
Środowiska chmurowe (AWS/Azure/GCP) — ryzyko ekspozycji dotyczy głównie instancji z otwartym 3389/TCP na Internet (Security Groups/NSG). To mapuje się do T1190/T1021.001 i wymaga kontroli reguł sieciowych. (Źródło ogólne — ATT&CK).
AD/ESXi/K8s/M365 — sama podatność dotyczy Windows; dla tych platform istotne są punkty ekspozycji RDP (jump/bastion), polityki segmentacji i bram RDP.
Szczegółowy opis techniki (jak działa, cele, dlaczego jest skuteczna)
BlueKeep wykorzystuje błąd w przetwarzaniu kanałów/strumienia RDP podczas handshake’u (przed uwierzytelnieniem). Atakujący nawiązuje połączenie do 3389/TCP i wysyła sekwencję PDU, które prowadzą do korupcji pamięci jądra i przejęcia kontroli nad wykonaniem. Skuteczność wynika z:
Pre‑auth RCE (brak logowania / brak interakcji),
Wormowalności (możliwa automatyczna propagacja),
Powszechnej ekspozycji RDP w sieciach firmowych oraz często w Internecie. NLA wymaga uwierzytelnienia przed dotarciem do podatnej ścieżki i utrudnia automatyczne rozprzestrzenianie, ale nie chroni, jeśli napastnik ma ważne poświadczenia (np. z wycieku). Dlatego aktualizacja pozostaje jedyną trwałą mitigacją.
Artefakty i logi (tabela)
Źródło
Artefakt / pole
Co obserwować
Wartość dla detekcji
Windows/System
Event ID 56, Provider: TermDD
„The Terminal Server security layer detected an error in the protocol stream…”; skoki liczby błędów z jednego źródłowego IP
Indykator skanów/nieudanych exploitów BlueKeep; korelować z 3389/TCP i restartami usług.
Windows/Security
4624/4625 (LogonType=10)
Udane/nieudane logowania RDP; źródłowe IP
Do odróżnienia legalnych adminów od zewnętrznych adresów; koreluj z ekspozycją portu.
title: Windows RDP TermDD Protocol Errors Burst (BlueKeep/Scan)
id: 2f2f8e8a-6a1a-45d2-9b6f-td56-burst
status: experimental
description: Wykrywa nagłe skoki błędów TermDD (EventID 56) sugerujące skany lub nieudane próby eksploatacji CVE-2019-0708.
author: Badacz CVE
logsource:
product: windows
service: system
detection:
selection:
EventID: 56
Provider_Name: 'TermDD'
timeframe: 5m
condition: selection
# Uwaga: Agregacje zależą od backendu. Zalecane korelowanie: >=20 zdarzeń/5min z jednego SourceIP/hostu.
level: medium
tags:
- attack.T1210
- attack.T1021.001
- cve.2019-0708
B) Wyłączenie NLA — modyfikacja rejestru (Sysmon)
title: RDP NLA Disabled via Registry
id: 3a6eaeee-1f6b-4592-a1a1-nla-off
status: stable
description: Wykrywa ustawienie UserAuthentication=0 dla RDP-Tcp (wyłączenie NLA).
author: Badacz CVE
logsource:
product: windows
service: sysmon
detection:
sel_path:
EventID: 13
TargetObject|endswith: '\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\UserAuthentication'
sel_val:
Details|contains: 'DWORD (0x00000000)'
condition: sel_path and sel_val
level: high
tags:
- attack.T1021.001
- attack.T1112
falsepositives:
- Rzadkie legalne zmiany GPO/Intune
(NLA/UserAuthentication = 1 włącza NLA; 0 ją wyłącza).
Splunk (SPL)
A) Skoki TermDD (Event 56):
index=wineventlog sourcetype="WinEventLog:System" EventCode=56 SourceName=TermDD
| stats count by host, Message, _time, ComputerName, dest
| timechart span=5m count by host
B) RDP sukcesy spoza prywatnych adresów (4624, LogonType=10):
index=wineventlog sourcetype="WinEventLog:Security" EventCode=4624 Logon_Type=10
| eval isPublic=if(cidrmatch("10.0.0.0/8", Source_Network_Address) OR cidrmatch("172.16.0.0/12", Source_Network_Address) OR cidrmatch("192.168.0.0/16", Source_Network_Address), 0, 1)
| search isPublic=1
| stats count values(Source_Network_Address) as src_ip by ComputerName, Target_User_Name
| where count>0
KQL (Azure/Microsoft Sentinel)
A) Udane logowania RDP spoza prywatnych podsieci:
SecurityEvent
| where EventID == 4624 and LogonType == 10
| extend SrcIp = iff(isempty(IpAddress), tostring(parse_xml(EventData).EventData.Data[?(@.Name=="IpAddress")][0]."#text"), IpAddress)
| where SrcIp !startswith "10." and SrcIp !startswith "172.16." and SrcIp !startswith "192.168."
| summarize dcount(SrcIp) by Computer, TargetUserName, bin(TimeGenerated, 1h)
B) Zmiany NSG otwierające 3389 na Internet (Azure Activity):
AzureActivity
| where OperationNameValue =~ "MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/SECURITYRULES/WRITE"
| extend p=parse_json(Properties)
| extend src=tostring(p.responseBody.properties.sourceAddressPrefix),
dport=tostring(p.responseBody.properties.destinationPortRange),
access=tostring(p.responseBody.properties.access)
| where dport in ("3389","*") and src in ("Internet","0.0.0.0/0","Any") and access == "Allow"
| project TimeGenerated, Caller, ResourceGroup, Resource, src, dport, access
CloudTrail query (CloudWatch Logs Insights)
Otwieranie 3389/TCP na 0.0.0.0/0 (EC2 Security Groups):
fields @timestamp, userIdentity.arn, sourceIPAddress, eventName, requestParameters
| filter eventSource="ec2.amazonaws.com"
| filter eventName in ["AuthorizeSecurityGroupIngress","ModifySecurityGroupRules","UpdateSecurityGroupRuleDescriptionsIngress"]
| filter requestParameters like /3389/ and requestParameters like /0\.0\.0\.0\/0/
| sort @timestamp desc
Elastic / EQL
A) Wyłączenie NLA w rejestrze (Elastic EQL):
registry where
registry.path :
"*\\System\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp\\UserAuthentication" and
registry.data.strings : ("0","0x00000000")
B) RDP z Internetu (Elastic Query DSL – Beats flow):
network where destination.port == 3389 and
not cidrmatch(source.ip, ["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"])
Heurystyki / korelacje (co łączyć)
Wejście → błąd protokołu → restart usługi: Inbound 3389 z nowego publicznego IP + TermDD/56 burst + SCM/7031 dla TermService ⇒ podejrzenie skanów/nieudanych exploitów BlueKeep.
Wejście → sukces logowania → nietypowe procesy: 3389 z Internetu + 4624/LogonType=10 + svchost.exe (TermService) spawnujący cmd.exe/powershell.exe ⇒ post‑exploitation.
NLA: zmiana UserAuthentication na 0 + wzrost 4625/LogonType=10 ⇒ próby brute‑force lub przygotowanie do eksploatacji (chociaż BlueKeep jest pre‑auth, wyłączenie NLA bywa celem operatorów, aby ułatwić dalsze działania).
False positives / tuning
Event 56 (TermDD) może wynikać z błędów sieciowych/starych klientów RDP — filtrować progiem (np. ≥20/5min per źródłowe IP) i utrzymywać listę zaufanych skanerów.
4624/10: legalne logowania adminów/jumphostów — whitelisty dla źródeł ASN/VPN, kont serwisowych i okien serwisowych.
7031: restart różnych usług — koreluj wąsko z TermService i 56.
Zmiany rejestru: wdrożenia GPO/Intune — taguj „change windows” i weryfikuj źródło (PID/Signer).
Playbook reagowania (IR)
Triaging & izolacja
Odłącz host od sieci lub przełącz do VLAN kwarantanny.
Listopad 2019 — pierwsze potwierdzone wykorzystanie BlueKeep in‑the‑wild do kryptominera (kampania masowa, niestabilne exploity).
Fortinet/Microsoft potwierdzają ataki oraz apelują o natychmiastowe łatanie.
Szacunki ekspozycji: setki tysięcy hostów publicznie podatnych po publikacji (2019). (kontekst historyczny)
Lab (bezpieczne testy)
Wyłącznie w odizolowanym labie. Brak exploitów. Celem jest weryfikacja ekspozycji i telemetrii.
Sprawdzenie stanu RDP/NLA na hoście:
# Czy RDP jest włączone
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections
# Czy NLA jest włączona
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication
Weryfikacja łatek (Win7/2008 R2):
Get-HotFix -Id KB4499164,KB4499175
Skan bezpieczny z zewnątrz (wersja RDP, bez exploitów):
Czy backup to wystarczająca tarcza przed ransomware?
Jeszcze do niedawna wiele firm spało spokojnie, wierząc, że regularne kopie zapasowe uchronią je przed każdym atakiem. W końcu, jeśli dane zostaną zaszyfrowane, zawsze można je odzyskać z backupu, prawda? Niestety, nowa generacja ransomware – tzw. Ransomware 2.0 – brutalnie weryfikuje to założenie.
ASUS wydał nowe aktualizacje firmware’u łatające dziewięć podatności, w tym krytyczną lukę obejścia uwierzytelniania w funkcji AiCloud dostępnej w wielu routerach tej marki. Błąd śledzony jako CVE-2025-59366 może pozwolić atakującym na wykonywanie określonych funkcji bez autoryzacji. Według producenta, podatność wynika z „niezamierzonego efektu ubocznego” integracji z usługą Samba. ASUS zaleca natychmiastową aktualizację firmware’u lub — w przypadku modeli EoL — wyłączenie usług dostępnych z Internetu.
W skrócie
Identyfikator: CVE-2025-59366 (AiCloud, ASUS)
Wpływ: obejście uwierzytelniania → możliwość uruchamiania wybranych funkcji bez logowania
Kompleksowość ataku: niska; możliwe łańcuchowanie z path traversal + OS command injection (zdalnie, bez interakcji użytkownika)
Stan poprawek: dostępne nowe wersje firmware’u dla gałęzi 3.0.0.4_386 / 3.0.0.4_388 / 3.0.0.6_102 (lista wg linii firmware, nie konkretnych modeli)
Mitigacje dla EoL: wyłączyć z WAN: zdalny dostęp, port forwarding, DDNS, VPN server, DMZ, port triggering, FTP; ograniczyć zdalny dostęp do hostów z AiCloud; stosować silne hasła.
Kontekst / historia / powiązania
To nie pierwsza poważna podatność w AiCloud w tym roku. W kwietniu 2025 r. ASUS załatał inną krytyczną lukę CVE-2025-2492 (CVSS v4: 9.2), która umożliwiała nieautoryzowane wykonywanie funkcji po wysłaniu spreparowanego żądania. Luka ta była wiązana z kampanią przejęć EoL-owych routerów ASUS (m.in. „Operation WrtHug”).
W czerwcu 2024 r. głośno było także o CVE-2024-3080 (również auth bypass), która według danych Censys mogła wystawiać na ryzyko ok. 147 tys. routerów w Internecie — co pokazuje, że funkcje zdalnego dostępu w SOHO są stałym celem ataków.
Źródło błędu: interakcja AiCloud ↔ Samba prowadząca do stanu, w którym kontrola dostępu może zostać ominięta. W praktyce da się zainicjować wykonanie specyficznych funkcji bez poprawnych poświadczeń.
Łańcuchowanie: w aktualnej fali poprawek ASUS wskazuje, że atakujący mogą łączyć path traversal oraz OS command injection w celu zdalnego nadużycia. To znacząco obniża barierę wejścia (brak konieczności interakcji użytkownika).
Zakres dotkniętych urządzeń: ASUS nie podał precyzyjnej listy modeli; komunikacja skupia się na gałęziach firmware’u (m.in. 386, 388, 3.0.0.6_102), które zawierają poprawki. W przypadku urządzeń EoL producent rekomenduje wyłączenie usług wystawionych do Internetu.
Praktyczne konsekwencje / ryzyko
Przejęcie kontroli nad funkcjami routera (np. modyfikacja konfiguracji, dostęp do zasobów udostępnianych przez AiCloud).
Włączanie urządzeń do botnetów/DDoS lub tworzenie węzłów proxy/ORB na potrzeby ukrywania infrastruktury C2 — taktyka obserwowana w kampaniach przeciwko routerom ASUS w 2025 r. (m.in. WrtHug).
Ryzyko lateral movement do sieci LAN, eksfiltracja danych z udziałów udostępnianych przez Sambę/AiCloud. (Wniosek z charakteru luki i typowych technik ataku na SOHO.)
Rekomendacje operacyjne / co zrobić teraz
Aktualizuj firmware natychmiast do najnowszej wersji dostępnej dla Twojej gałęzi firmware’u (386/388/3.0.0.6_102). Sprawdź panel administracyjny routera lub stronę wsparcia.
Jeśli urządzenie jest EoL lub brak łatki:
Wyłącz wszystkie usługi dostępne z Internetu: zdalny dostęp z WAN, port forwarding, DDNS, VPN server, DMZ, port triggering, FTP.
Ogranicz/wyłącz AiCloud i zdalny dostęp do hostów z AiCloud.
Zasady haseł i dostępów: zastosuj silne, unikalne hasła dla panelu administratora i Wi-Fi; rozważ zmianę domyślnej nazwy użytkownika (jeśli wspierane).
Twarde utwardzanie konfiguracji: wyłącz UPnP, ogranicz administrację z WAN, włącz auto-update jeśli dostępne; monitoruj logi routera. (Najlepsze praktyki bezpieczeństwa SOHO.)
Segmentacja i monitoring: umieść urządzenia IoT w oddzielnej sieci (VLAN/Guest), monitoruj anomalie (nietypowe wyjścia TCP/UDP, stałe połączenia TLS).
Incident response dla już narażonych: jeśli zauważasz objawy kompromitacji (spowolnienie, nieznane reguły NAT, nieznane konta):
wykonaj factory reset,
zainstaluj najświeższy firmware,
zmień hasła,
sprawdź, czy nie utrzymują się nietypowe certyfikaty/klucze lub zasady firewall/NAT. (Wniosek z taktyk obserwowanych w kampaniach na routery ASUS).
Różnice / porównania z innymi przypadkami (jeśli dotyczy)
CVE-2025-59366 vs CVE-2025-2492: obie dotyczą AiCloud i skutkują nieautoryzowanym wykonaniem funkcji, ale wektor techniczny jest inny (Samba/alternate path & chainowanie w nowej luce vs. crafted request w starszej). Obie uzyskały ocenę krytyczną w NVD.
CVE-2025-59366 vs CVE-2024-3080: starsza luka z 2024 r. dotyczyła wybranych modeli/serii i również skutkowała obejściem logowania — pokazując ciągłość ryzyka przy udostępnianiu usług zdalnych na SOHO.
Podsumowanie / kluczowe wnioski
CVE-2025-59366 to świeża, krytyczna podatność w AiCloud, łata dostępna — zaktualizuj teraz.
Jeśli masz sprzęt EoL, wyłącz usługi z WAN i AiCloud, aby zredukować powierzchnię ataku.
Historia (CVE-2025-2492, CVE-2024-3080) i ostatnie kampanie na routery ASUS pokazują, że SOHO to atrakcyjny cel — utrzymuj higienę konfiguracji i regularne aktualizacje.
Źródła / bibliografia
BleepingComputer: „ASUS warns of new critical auth bypass flaw in AiCloud routers” (26 listopada 2025) — szczegóły o łańcuchu ataku, gałęziach firmware i mitigacjach dla EoL. (BleepingComputer)
NVD: CVE-2025-59366 — opis techniczny (AiCloud/Samba, auth bypass). (NVD)
NVD: CVE-2025-2492 — wcześniejsza krytyczna luka w AiCloud (kwiecień 2025). (NVD)
IT Pro: raport o kampanii „Operation WrtHug” na routery ASUS (listopad 2025). (IT Pro)
Błąd w WebUI PAN‑OS pozwala bez uwierzytelnienia wywołać określone skrypty PHP, jeśli atakujący ma sieciowy dostęp do portu zarządzania (typowo 443/4443). Nie daje sam w sobie RCE, ale narusza poufność/integralność i bywa łańcuszkowany z innymi lukami (np. CVE‑2024‑9474, CVE‑2025‑0111) do pełnego przejęcia.
Największe ryzyko: publicznie dostępny interfejs zarządzania lub profil zarządzania na interfejsie dataplane. GlobalProtect portale/bramy nie są podatne (chyba że ma profil zarządzania).
Naprawa: aktualizacje do wersji hotfix wymienionych niżej + ograniczenie dostępu IP/segmentacja. Dodatkowo abonenci Threat Prevention mogą blokować próby sygnaturami Threat ID 510000/510001.
ATT&CK: T1190 (Exploitation of public‑facing admin UI). Priorytet: krytyczny, jeśli WebUI jest osiągalne z Internetu.
Krótka definicja techniczna
CVE‑2025‑0108 to obejście uwierzytelniania w WebUI PAN‑OS, umożliwiające niezalogowanemu napastnikowi z dostępem sieciowym do WebUI wywołanie wybranych skryptów PHP. Samo wywołanie nie daje RCE, ale może ujawniać/zmieniać informacje, a w praktycznych łańcuchach z CVE‑2024‑9474 (PE/CI) i CVE‑2025‑0111 (file read) prowadzi do eskalacji.
Gdzie występuje / platformy
Palo Alto Networks: PA‑Series, VM‑Series, CN‑Series, Panorama — wersje PAN‑OS wymienione jako podatne; Cloud NGFW i Prisma Access — niepodatne.
Środowiska uruchomieniowe: sprzęt on‑prem, ESXi/KVM/Hyper‑V (VM‑Series), chmury AWS/Azure/GCP (VM‑Series).
Usługi powiązane: GlobalProtect portale/gateways nie są podatne, ale profil zarządzania na takim interfejsie naraża urządzenie (często port 4443).
Szczegółowy opis techniki (jak działa i dlaczego skuteczna)
Atakujący wysyła specjalnie ułożone żądania HTTP/S do publicznie osiągalnego WebUI PAN‑OS. Błąd w ścieżce uwierzytelniania pozwala ominąć kontrolę logowania i wołać część skryptów PHP zaplecza WebUI. Choć producent podkreśla, że samo to nie daje RCE, realnie umożliwia pozyskanie wrażliwych informacji lub zmianę stanu (konf./sesje), co w połączeniu z innymi błędami (np. CVE‑2024‑9474, CVE‑2025‑0111) bywa wykorzystywane do pełnego przejęcia administracyjnego. Lukę uznano za atakowaną (observed exploit attempts) i wpisano do CISA KEV. Skuteczność wynika z: (1) powszechności błędnych ekspozycji WebUI, (2) niska złożoność i brak wymagań uprawnień/UI, (3) możliwość łańcuchowania.
Wersje/fixy (skrót):
10.1: podatne < 10.1.14‑h9; naprawa ≥ 10.1.14‑h9
10.2: podatne niższe niż 10.2.7‑h24 / 10.2.8‑h21 / 10.2.9‑h21 / 10.2.10‑h14 / 10.2.11‑h12 / 10.2.12‑h6 / 10.2.13‑h3; naprawy ≥ tych wersji
11.1: podatne < 11.1.2‑h18 / < 11.1.4‑h13 / < 11.1.6‑h1; naprawy ≥ tych wersji
Nie dotyczy tej luki (brak lokalnych EID/M365/K8s).
Detekcja (praktyczne reguły)
Sigma — próby CVE‑2025‑0108 (Threat Prevention lub ślady WebUI)
title: PAN-OS WebUI Auth Bypass Attempt (CVE-2025-0108)
id: 0a0d2c8b-3c7a-4d0e-9a7e-0d9b5b7f0108
status: experimental
description: Wykrywa próby obejścia uwierzytelniania WebUI PAN-OS (CVE-2025-0108) na podstawie sygnatur TP lub nietypowych wywołań WebUI.
references:
- https://security.paloaltonetworks.com/CVE-2025-0108
logsource:
category: firewall
product: paloalto
detection:
tp_ids:
threat_id|contains:
- '510000'
- '510001'
action|contains:
- 'block'
- 'reset'
webui_suspicious:
dst_port|in: [443, 4443]
app|contains:
- 'ssl'
- 'web-browsing'
url|endswith: '.php'
user|isempty: true
condition: tp_ids OR webui_suspicious
falsepositives:
- Skanery podatności/monitoring pochodzące z dozwolonych adresów
level: high
tags:
- attack.t1190
- cve.2025-0108
Uwaga: dopasuj nazwy pól do Twojego parsera (np. threatid/threat_id, url, dstport). Sygnatury 510000/510001 wg advisora producenta.
Splunk (SPL)
A) Trafienia sygnatur 510000/510001 (pan:threat)
index=pan_logs sourcetype=pan:threat
| search threatid IN (510000, 510001)
| stats count min(_time) as firstSeen max(_time) as lastSeen values(src_ip) values(dst_ip) by threatid, threat, action
(„threatid”/„threat” mogą się różnić w zależności od Add‑on; sprawdź normalizację pól).
B) Dostępy do WebUI z Internetu (pan:traffic)
index=pan_logs sourcetype=pan:traffic (dest_port=443 OR dest_port=4443)
| eval isPublic=if(cidrmatch("0.0.0.0/0", src_ip) AND NOT
(cidrmatch("10.0.0.0/8", src_ip) OR cidrmatch("172.16.0.0/12", src_ip) OR cidrmatch("192.168.0.0/16", src_ip)), 1, 0)
| where isPublic=1
| stats dc(src_ip) as uniqIPs values(app) values(rule) by dest_ip, dest_port
C) Korelacja: po ruchu na WebUI następuje Config change
(index=pan_logs sourcetype=pan:traffic (dest_port=443 OR dest_port=4443) src_ip!=10.0.0.0/8)
| bin _time span=5m
| stats values(src_ip) as srcs values(dest_ip) as mgmtIPs by _time
| join _time [ search index=pan_logs sourcetype=pan:config result="Succeeded"
| stats values(admin) as admins values(client) as clients by _time ]
| table _time mgmtIPs srcs admins clients
Microsoft Sentinel / KQL (CommonSecurityLog)
A) Sygnatury TP (CEF)
CommonSecurityLog
| where DeviceVendor =~ "Palo Alto Networks" and DeviceProduct has "PAN-OS"
| where DeviceEventClassID =~ "threat"
| extend kv = parse_kv(AdditionalExtensions, ";", "=")
| where tostring(kv.threatid) in ("510000","510001") or tostring(kv.ThreatID) in ("510000","510001")
| summarize count(), FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated) by SourceIP, DestinationIP, tostring(kv.threat_name)
B) Dostęp do WebUI z niezaufanych adresów
CommonSecurityLog
| where DeviceVendor =~ "Palo Alto Networks" and DeviceProduct has "PAN-OS"
| where DestinationPort in ("443","4443") and ApplicationProtocol in ("ssl","http","https")
| where not(ipv4_is_private(SourceIP))
| summarize dcount(SourceIP), make_set(SourceIP, 5) by DestinationIP, DestinationPort
AWS (CloudTrail/CLI/Flow Logs)
A) Zmiany SG otwierające WebUI na świat (CloudTrail)
AWSCloudTrail
| where EventName in ("AuthorizeSecurityGroupIngress","ModifyNetworkInterfaceAttribute")
| extend open443 = tostring(parse_json(RequestParameters).ipPermissions) has "fromPort\":443"
| extend open4443 = tostring(parse_json(RequestParameters).ipPermissions) has "fromPort\":4443"
| where open443 or open4443
| where tostring(parse_json(RequestParameters).ipPermissions) has "0.0.0.0/0"
C) VPC Flow Logs (CloudWatch Logs Insights) – ruch do 4443
fields @timestamp, srcAddr, dstAddr, dstPort, action
| filter dstPort in [443,4443] and action="ACCEPT"
| sort @timestamp desc
| limit 100
Elastic (EQL / KQL)
EQL – ruch do WebUI z Internetu + ślady PHP w URL
any where observer.vendor == "Palo Alto Networks" and
event.dataset in ("panw.traffic","panw.threat") and
destination.port in (443, 4443) and
(url.path regex ".*\\.php(\\?|$)") and
not cidrmatch(source.ip, "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16")
Heurystyki / korelacje
Łańcuch czasowy (T1190 → konfiguracja): (1) wzrost 4xx/5xx/nieudanych prób na WebUI → (2) trafienia sygnatur 510000/510001 → (3) Config/System z nietypowych IP → (4) nowe sesje admina/zmiany polityk.
Ekspozycja → atak: zdarzenia CloudTrail/SG otwierające 443/4443 dla 0.0.0.0/0 w VPC z VM‑Series + ruch do WebUI + zmiany w PAN‑OS.
Łańcuch z innymi CVE: obserwuj następujące wzorce po nieudanym logowaniu: wywołania prowadzące do PE/CI (CVE‑2024‑9474) i file read (CVE‑2025‑0111).
False positives / tuning
Skanery podatności / monitoring (np. z adresów skanerów wewnętrznych).
Automaty / API do kopii konfiguracji działające z uprzywilejowanych podsieci.
CDN/Proxy: pole XFF może maskować źródło — uwzględnij parsowanie XFF. Tuning: biała lista skanerów; zawężenie do dest_ip = znane IP zarządzania; korelacja z action != allow lub z sygnaturami TP.
Playbook reagowania (IR)
Izoluj ekspozycję: natychmiast zablokuj dostęp do WebUI z Internetu (ACL/SG/WAF), ogranicz do jump‑boxa/VPN i adresów zaufanych.
show system info
show admins
show config running | match management
show session all filter dst port 4443
show log system direction equal backward query '( subtype eq general )'
show log config direction equal backward
Przykłady z kampanii / case studies
Producent: „Palo Alto Networks zaobserwował próby łańcuchowania CVE‑2025‑0108 z CVE‑2024‑9474 i CVE‑2025‑0111 na niezałatanych i źle zabezpieczonych WebUI.”
KEV: wpis CISA KEV z datą dodania 2025‑02‑18 potwierdza eksploatację w praktyce.
Niezależne analizy: raporty Armis/FortiGuard omawiają aktywne wykorzystanie i łańcuszkowanie.
Lab (bezpieczne testy)
Cel: zweryfikować detekcję i twarde zasady bez ujawniania szczegółów exploitu. Wykonuj w odseparowanym labie.
Ekspozycja kontrolowana: tymczasowo otwórz 4443 tylko dla jump‑host; potwierdź, że „Internet” jest blokowany.
Generacja ruchu: z „Internet” wyślij neutralne żądania HTTPS do WebUI (np. curl -k https://FW:4443/) i obserwuj logi Traffic/Threat.
Sygnatury: zaktualizuj Applications and Threats do wersji ≥ 8943 i zweryfikuj, że blokady 510000/510001 pojawiają się przy próbach wzorcowych (narzędzie skanujące w labie).
Kwerendy: uruchom reguły SPL/KQL/EQL z pkt 7 i sprawdź alarmy.
(Nie wykonujemy czynności ukierunkowanych na obejście zabezpieczeń ani odtwarzania łańcucha exploitu.)
Co: Pre‑auth RCE w FortiOS/FortiProxy SSL‑VPN (FortiGate) — CVE‑2023‑27997 („XORtigate”).
Jak: nadpisanie bufora (heap) poprzez parametr enc w endpointzie /remote/hostcheck_validate, co umożliwia wykonanie kodu bez logowania.
Ryzyko: krytyczne, aktywnie wykorzystywane, w KEV (CISA).
Naprawa: aktualizacja co najmniej do FortiOS 6.0.17 / 6.2.15 / 6.4.13 / 7.0.12 / 7.2.5 oraz odpowiednie wersje FortiProxy; w razie potrzeby tymczasowo wyłączyć SSL‑VPN.
ATT&CK: T1190 (Initial Access). Wskazane korelacje z T1133 (External Remote Services) oraz T1210 (Exploitation of Remote Services) dla ruchu/powykorzystaniowych zachowań.
Krótka definicja techniczna
CVE‑2023‑27997 to błąd heap‑based buffer overflow (CWE‑122/CWE‑787) w komponencie SSL‑VPN FortiOS/FortiProxy umożliwiający zdalne wykonanie kodu na urządzeniu bez uwierzytelnienia poprzez „specjalnie spreparowane” żądania HTTP/HTTPS do publicznego interfejsu VPN.
Gdzie występuje / przykłady platform
Network Devices (FortiGate/FortiProxy) — urządzenia brzegowe z włączonym SSL‑VPN. (Matryca ATT&CK obejmuje „Network Devices”).
Chmura/edge: gdy FortiGate stoi za ALB/WAF (AWS/Azure/GCP), ślady ataków w logach ALB/WAF/Load Balancer. [Mimo że sama podatność dotyczy urządzenia, telemetria może być w logach chmurowych.]
Windows/AD/Azure/M365/K8s/ESXi: pośrednio — jako dalsze cele po początkowym włamaniu (lateral movement), nie jako wektor podatności.
Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
Atakujący składa pre‑auth żądania HTTP(S) do portalu SSL‑VPN FortiGate. Kluczową rolę odgrywa endpoint /remote/hostcheck_validate i parametr enc, którego długość i dekodowanie są błędnie weryfikowane. Błąd pozwala na nadpisanie pamięci sterty i w konsekwencji wykonanie kodu. Badanie LEXFO opisuje też zależności od /remote/info (do pobrania „salt”) oraz charakter „XOR‑overflow” wykorzystywany do manipulacji pamięcią. W praktyce umożliwia to początkowy dostęp (Initial Access) i często ominięcie MFA, ponieważ atak następuje przed uwierzytelnieniem.
Fortinet potwierdził krytyczność problemu (FG‑IR‑23‑097), publikując łatki i zalecając niezwłoczną aktualizację; CISA dodała CVE do KEV (Known Exploited Vulnerabilities).
Żądania do /remote/hostcheck_validate z parametrem enc=; skoki 4xx/5xx
Najlepiej zbierać jako syslog/CEF do SIEM.
FortiGate Event (log IDs)
logid, action, user
Zalew SSL‑VPN login fail (np. ...user-ssl-login-fail...) lub niestandardowe wzorce
Przydatne do korelacji szumu skanowania z exploitami.
Crashlog
diag debug crashlog read
Wpisy o sslvpnd, sygnały, restarty
Materiał dowodowy na awarie procesu.
ALB/WAF/Reverse Proxy
request_uri, user_agent, status, bytes
/remote/hostcheck_validate, enc=; piki z pojedynczych IP
Gdy urządzenie stoi za LB/WAF.
Windows EID
—
[nie dotyczy]
Bezpośrednio brak artefaktów Windows.
AWS CloudTrail
—
[nie dotyczy]
CloudTrail nie rejestruje treści HTTP; szukaj w ALB/WAF (CloudWatch Logs).
K8s audit
—
[nie dotyczy]
M365 audit
—
[nie dotyczy]
Detekcja (praktyczne reguły)
Sigma (FortiGate / proxy logs)
title: FortiGate SSL-VPN hostcheck_validate enc Anomaly (CVE-2023-27997)
id: 4d6f70b0-6b8a-4a3a-9be1-enc-hostcheck
status: experimental
description: Wykrywa żądania do /remote/hostcheck_validate z parametrem enc= (pre-auth) – możliwe wykorzystanie CVE-2023-27997.
references:
- https://nvd.nist.gov/vuln/detail/cve-2023-27997
- https://blog.lexfo.fr/xortigate-cve-2023-27997.html
- https://www.cisa.gov/news-events/alerts/2023/06/13/cisa-adds-one-known-exploited-vulnerability-catalog
tags:
- attack.t1190
- cve.2023-27997
logsource:
category: firewall
product: fortinet
detection:
sel_path:
url|contains: "/remote/hostcheck_validate"
sel_param:
url|contains: "enc="
# alternatywne pola spotykane w CEF/LEEF
sel_alt1:
cs-uri-stem|contains: "/remote/hostcheck_validate"
sel_alt2:
cs-uri-query|contains: "enc="
condition: (sel_path and sel_param) or (sel_alt1 and sel_alt2)
fields:
- src_ip
- dst_ip
- url
- http_method
- http_status
falsepositives:
- Starsze klienty FortiClient wykonujące host-check (rzadkie)
level: high
Splunk (SPL)
Wyszukaj podejrzane żądania i skoki błędów:
index=network (sourcetype=fortigate* OR sourcetype=proxy*)
("|/remote/hostcheck_validate" OR cs_uri_stem="/remote/hostcheck_validate")
("enc=" OR cs_uri_query="*enc=*")
| bin _time span=5m
| stats count count(eval(http_status>=400 AND http_status<600)) AS errs
values(http_method) AS methods
values(http_status) AS statuses
by _time, src_ip, dest_ip, uri, user
| where count>=5 OR errs>=3
Crashes sslvpnd (system events):
index=network sourcetype=fortigate:syslog ("sslvpnd" OR "SSL VPN Watchdog" OR "daemon crash")
| stats count latest(msg) AS any_message by _time, host
KQL (Microsoft Sentinel — CommonSecurityLog lub CEF z FortiGate)
let t = 5m;
CommonSecurityLog
| where DeviceVendor =~ "Fortinet"
| where RequestURL has "/remote/hostcheck_validate" and RequestURL has "enc="
| summarize cnt = count(), statuses = make_set(FlexString1) by bin(TimeGenerated, t), SourceIP, DestinationIP, RequestURL
| where cnt >= 5
AWS — CloudWatch Logs Insights (ALB/WAF access logs; nie CloudTrail)
fields @timestamp, @message, httpRequest.clientIp as src
| filter requestURI like /\/remote\/hostcheck_validate/ and @message like /enc=/
| stats count() as hits, countif(elb_status_code like /5\d\d|4\d\d/) as errs by bin(5m), src, requestURI
| filter hits >= 5 or errs >= 3
Elastic (Kibana KQL + EQL)
KQL (HTTP/Proxy index):
url.path : "/remote/hostcheck_validate" and url.query : "*enc=*"
EQL (jeśli parsowane do pól http/url):
sequence by source.ip with maxspan=5m
[ network where url.path == "/remote/hostcheck_validate" and url.query : "*enc=*" ]
[ any where process.name == "sslvpnd" and event.action in ("crash","restart") ]
Heurystyki / korelacje
Wzorzec żądań: burst żądań do /remote/hostcheck_validate z enc= z pojedynczego IP + wysoki udział 4xx/5xx → koreluj z restartem/crashem sslvpnd w ±5 min.
Pre‑auth charakter: brak user w logu, brak sesji, nietypowy User‑Agent (skanery/custom).
Post‑exploitation: nagłe utworzenie/zmiana konta admina (np. fortigate-tech-support) lub odczyt konfiguracji — sygnał znany z incydentów wokół CVE‑2023‑27997.
Trwałość na urządzeniu: modyfikacje w przestrzeni plików SSL‑VPN (np. katalog językowy) i techniki „symlink” opisywane przez Fortinet jako metoda ukrywania artefaktów po wcześniejszych exploitach — warto hunting.
False positives / tuning
Prawdziwe host‑checki starych klientów FortiClient mogą dotykać hostcheck_validate, jednak wolumen jest niewielki i statusy HTTP są zazwyczaj 200/302.
Skanery bezpieczeństwa/VAS mogą generować pojedyncze hity.
Tuning: whitelisty źródeł administracyjnych, progi wolumetryczne (np. ≥5 w 5 min), statusy ≥400, brak user, nietypowe geolokalizacje/GEO‑ASN.
Playbook reagowania (IR)
Identyfikacja ekspozycji
Zbierz listę FortiGate/FortiProxy z włączonym SSL‑VPN i sprawdź wersje (get system status).
Jeżeli urządzenie podatne i dostępne z Internetu — podnieś priorytet.
Zweryfikuj kontrolę administracyjną: nieautoryzowane konta admin (np. fortigate-tech-support), anomalie w konfiguracji.
Forensyka na urządzeniu
Sprawdź katalogi językowe SSL‑VPN pod kątem podejrzanych plików/symlinków (wątek post‑exploitation opisany przez Fortinet).
Remediacja haseł/kluczy
Po kompromitacji: rotacja poświadczeń, kluczy VPN, certyfikatów; sprawdź integracje LDAP/Radius.
Hardening
Ogranicz ekspozycję panelu/portu VPN do zaufanych adresów; włącz WAF/geo‑IP rate‑limit/DoS‑policy.
Zgłoszenie i lessons learned
Odnotuj w rejestrze incydentów; zaktualizuj reguły, dashboardy, runbooki.
Przykłady z kampanii / case studies
CISA KEV: CVE‑2023‑27997 dodane 13 czerwca 2023 do katalogu KEV — wymóg szybkiej remediacji.
Fortinet PSIRT (06.2023): ograniczone przypadki wykorzystania „in the wild”; zalecenie natychmiastowego upgrade, brak powiązania z Volt Typhoon w dacie publikacji.
Raporty branżowe (2024–2025): CVE pojawia się w zestawieniach „routinely exploited”; organy rządowe ostrzegały przed utrzymaną obecnością na FortiOS po patchach (konieczny threat hunting).
Lab (bezpieczne testy)
Tylko w kontrolowanym labie (izolowane FortiGate/FortiProxy). Celem jest detekcja, nie eksploatacja.
Przygotowanie:
Urządzenie testowe FortiGate z włączonym SSL‑VPN, wersja podatna (offline, bez Internetu).
SIEM (np. Splunk/Elastic/Sentinel) z odbiorem syslog/CEF.
Generowanie normalnego ruchu:
Z klienta FortiClient zestaw połączenie → powstaną logi tunnel-up / tunnel-down (do porównania).
Generowanie podejrzanych wzorców (bez exploitów):
Wyślij wielokrotne żądania GET do /remote/hostcheck_validate?enc=AA z różnych IP źródłowych (np. z testowych kontenerów) — celem jest wygenerowanie charakterystycznego wzorca URI i 4xx w logach (nie dostarczać Keystream/PoC).
Zweryfikuj, czy reguły z pkt 7 aktywują alerty, a dashboardy pokazują piki 4xx/5xx.
Symulacja awarii procesu:
(Opcjonalnie) ręcznie zrestartuj usługę SSL‑VPN, aby przetestować korelację z logami „daemon restart/crash” bez wymuszania błędu w pamięci.
Walidacja:
Przejrzyj korelacje: burst /remote/hostcheck_validate + restart sslvpnd + brak user + 4xx.