Archiwa: Firewall - Strona 16 z 24 - Security Bez Tabu

Dlaczego Tradycyjny Backup Kapituluje Przed Ransomware 2.0

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.

Czytaj dalej „Dlaczego Tradycyjny Backup Kapituluje Przed Ransomware 2.0”

ASUS ostrzega przed nową krytyczną luką „authentication bypass” w routerach z AiCloud (CVE-2025-59366)

Wprowadzenie do problemu / definicja luki

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.

Analiza techniczna / szczegóły luki

  • Składnik: AiCloud (osadzona usługa chmury/prywatnego dostępu)
  • Ź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

  1. 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.
  2. 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.
  3. 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).
  4. 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.)
  5. Segmentacja i monitoring: umieść urządzenia IoT w oddzielnej sieci (VLAN/Guest), monitoruj anomalie (nietypowe wyjścia TCP/UDP, stałe połączenia TLS).
  6. 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)
  • Cybersecurity Dive: kontekst historyczny CVE-2024-3080 (czerwiec 2024). (Cybersecurity Dive)

CVE-2025-0108 — PAN‑OS Authentication Bypass

TL;DR

  • 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 Accessniepodatne.
  • Ś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
  • 11.2: podatne < 11.2.4‑h4 / < 11.2.5; naprawy ≥ 11.2.4‑h4 / 11.2.5
  • EoL (11.0/10.0/9.x): domyślnie uważane za podatne, bez planu poprawek.

Artefakty i logi

ŹródłoTyp/ZdarzenieNajważniejsze polaWskazówki / przykład
PAN‑OS Threat logsBlokady sygnatur Threat ID 510000/510001threat_id/threatid, threat_name, action, src, dst, urlDetekcja prób CVE‑2025‑0108 (wymaga subskrypcji Threat Prevention).
PAN‑OS Traffic logsPołączenia do WebUI (443/4443)dst_port, app (ssl/web-browsing), rule, src, dstRuch z niezaufanych ASN/IP do IP zarządzania; brak reguły NAT/SNAT dla mgmt.
PAN‑OS System/Config logsNieoczekiwane zmiany/akcje w WebUItype=SYSTEM/CONFIG, admin, client, cmd, resultZmiany konfiguracyjne z nietypowych adresów źródłowych po ruchu na 4443.
Cortex Data Lake / CEFZnormalizowane pola CEF (CommonSecurityLog)DeviceVendor="Palo Alto Networks", DeviceProduct="PAN-OS", DeviceEventClassIDW Sentinel KQL filtrujemy DeviceProduct has 'PAN-OS'.
CloudTrail (meta‑kontrola)Zmiany SG/VPC odsłaniające 443/4443AuthorizeSecurityGroupIngress, RevokeSecurityGroupIngressWykrywanie ekspozycji WebUI dla VM‑Series w AWS.
K8s audit / M365 / Windows EIDNie 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"

B) Szybki audyt CLI (EC2 SG)

aws ec2 describe-security-groups \
  --query "SecurityGroups[?IpPermissions[?((FromPort==443||FromPort==4443)&&contains(IpRanges[].CidrIp, '0.0.0.0/0'))]].{GroupId:GroupId,Name:GroupName}" \
  --output table

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)

  1. Izoluj ekspozycję: natychmiast zablokuj dostęp do WebUI z Internetu (ACL/SG/WAF), ogranicz do jump‑boxa/VPN i adresów zaufanych.
  2. Zastosuj poprawki: podnieś PAN‑OS do wersji:
    • 10.1 ≥ 10.1.14‑h9; 10.2 : 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; 11.1 : 11.1.2‑h18 / 11.1.4‑h13 / 11.1.6‑h1; 11.2 ≥ 11.2.4‑h4/11.2.5.
  3. Włącz sygnatury: Threat Prevention 510000/510001 (Apps & Threats ≥ 8943). Zweryfikuj trafienia.
  4. Przegląd logów:
    • Threat/Traffic: próby na 443/4443, hosty źródłowe, geolokacja.
    • System/Config: nietypowe admin / client, zmiany reguł, importy konfiguracji.
  5. Hunting łańcucha: wyszukaj wskaźniki wykorzystania CVE‑2024‑9474/CVE‑2025‑0111 po czasie prób CVE‑2025‑0108.
  6. Twarde utwardzanie: odseparuj zarządzanie (VLAN/VRF/DMZ), wymuś MFA dla adminów, wyłącz HTTP, zostaw tylko HTTPS z certyfikatem i restrykcjami IP.
  7. Rotacja poświadczeń / przegląd kont: zmień hasła lokalnych adminów, sprawdź nieznane konta.
  8. Lessons learned: dodaj kontrolę CI/CD zmian SG, testy ekspozycji mgmt (IaC policy), dashboardy SOC.

Wybrane komendy PAN‑OS (CLI) – diagnostyka/bezpieczne

Uruchamiaj w oknie serwisowym, po kopii configu.

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.

  1. Topologia: VM‑Series (lab), jump‑host (allowlist), maszyna „Internet” (deny).
  2. Ekspozycja kontrolowana: tymczasowo otwórz 4443 tylko dla jump‑host; potwierdź, że „Internet” jest blokowany.
  3. Generacja ruchu: z „Internet” wyślij neutralne żądania HTTPS do WebUI (np. curl -k https://FW:4443/) i obserwuj logi Traffic/Threat.
  4. 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).
  5. 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.)


Mapowania (Mitigations, powiązane techniki)

  • ATT&CK Technika: T1190 Exploit Public‑Facing Application (Initial Access).
  • Mitigations (ATT&CK):
    • M1030 Network Segmentation – izoluj płaszczyznę zarządzania; dostęp tylko z jump‑boxa.
    • M1031 Network Intrusion Prevention – stosuj IPS/WAF do ruchu do WebUI; sygnatury TP 510000/510001.
    • M1050 Exploit Protection – „virtual patching”, blokady behawioralne; polityki hardeningu.
  • Powiązane CVE/techniki do korelacji: CVE‑2024‑9474 (eskalacja/CI), CVE‑2025‑0111 (file read) — korelować jako etap po T1190.

Źródła / dalsza literatura

  • Palo Alto Networks — oficjalny advisory CVE‑2025‑0108 (wersje, sygnatury, status exploitation, mitigation). (Palo Alto Networks Security)
  • NVD CVE‑2025‑0108 — CVSS v3.1=9.1, wpis KEV (data/due date). (NVD)
  • MITRE ATT&CK T1190 (wersja 2.8; modyfikacja 2025‑10‑24). (MITRE ATT&CK)
  • ATT&CK Version History — aktualna wersja v18.1 (od 2025‑10‑28). (MITRE ATT&CK)
  • Armis — łańcuch wykorzystania 0108+9474+0111. (Armis)
  • FortiGuard Labs — aktywna eksploatacja. (FortiGuard)
  • Microsoft — CommonSecurityLog / KQL dla Palo Alto (CEF). (Microsoft Learn)
  • PAN‑OS log fields (Traffic/Threat/System) — dokumentacja. (docs.paloaltonetworks.com)

Checklisty dla SOC / CISO

SOC – dziś

  • Czy żaden WebUI PAN‑OS nie jest dostępny z Internetu? (skan + SG/ACL)
  • Czy mamy aktualizację do naprawionych wersji (patrz lista)?
  • Czy Threat Prevention włączony + sygnatury 510000/510001 działają?
  • Czy działają alerty T1190: ruch na 443/4443 do IP zarządzania, zdarzenia Threat/Config?
  • Korelacja z CVE‑2024‑9474 / CVE‑2025‑0111 po czasie prób.

CISO – w tym kwartale

  • Segmentacja płaszczyzny zarządzania (M1030) i MFA dla adminów.
  • Policy as Code: bloker IaC zmian SG/VPC otwierających 443/4443.
  • Przegląd EoL PAN‑OS (9.x/10.0/11.0) i plan migracji.
  • Testy scenariuszy T1190 w purple‑team (bez exploitu produkcyjnego).

CVE-2023-27997 – Krytyczna podatność typu heap‑based buffer overflow w FortiOS/FortiProxy (SSL‑VPN, FortiGate)

TL;DR

  • 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).


6) Artefakty i logi (tabela)

Źródło/warstwaKluczowe pola / wzorcePrzykładowe wartości / IOCUwagi
FortiGate system/sslvpn logstype=event, subtype=vpn/daemon, msg, service=sslvpn, logid, eventtimeBłędy invalid enc data length, restarty/„sslvpnd daemon crash/watchdog timeoutCrashe/timeouty sslvpnd są sygnałem ostrzegawczym.
FortiGate HTTP/HTTPS accessurl, http_method, status, user="" (pre‑auth), srcipŻądania do /remote/hostcheck_validate z parametrem enc=; skoki 4xx/5xxNajlepiej zbierać jako syslog/CEF do SIEM.
FortiGate Event (log IDs)logid, action, userZalew SSL‑VPN login fail (np. ...user-ssl-login-fail...) lub niestandardowe wzorcePrzydatne do korelacji szumu skanowania z exploitami.
Crashlogdiag debug crashlog readWpisy o sslvpnd, sygnały, restartyMateriał dowodowy na awarie procesu.
ALB/WAF/Reverse Proxyrequest_uri, user_agent, status, bytes/remote/hostcheck_validate, enc=; piki z pojedynczych IPGdy 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)

  1. 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.
  2. Doraźne ograniczenie ryzyka (jeśli patch niedostępny)
    • Wyłącz SSL‑VPN do czasu aktualizacji (Fortinet wskazuje to jako obejście).
  3. Patch & Verify
    • Zaktualizuj co najmniej do FortiOS 6.0.17 / 6.2.15 / 6.4.13 / 7.0.12 / 7.2.5; FortiProxy do odpowiednich wersji (≥7.2.4 lub ≥7.0.10).
  4. Hunting (±30 dni)
    • Przeszukaj SIEM pod kątem /remote/hostcheck_validate + enc=; wysoki wolumen/4xx/5xx.
    • Sprawdź crashlog/system events (sslvpnd crash/watchdog).
    • Zweryfikuj kontrolę administracyjną: nieautoryzowane konta admin (np. fortigate-tech-support), anomalie w konfiguracji.
  5. 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).
  6. Remediacja haseł/kluczy
    • Po kompromitacji: rotacja poświadczeń, kluczy VPN, certyfikatów; sprawdź integracje LDAP/Radius.
  7. Hardening
    • Ogranicz ekspozycję panelu/portu VPN do zaufanych adresów; włącz WAF/geo‑IP rate‑limit/DoS‑policy.
  8. 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.

  1. Przygotowanie:
    • Urządzenie testowe FortiGate z włączonym SSL‑VPN, wersja podatna (offline, bez Internetu).
    • SIEM (np. Splunk/Elastic/Sentinel) z odbiorem syslog/CEF.
  2. Generowanie normalnego ruchu:
    • Z klienta FortiClient zestaw połączenie → powstaną logi tunnel-up / tunnel-down (do porównania).
  3. 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.
  4. 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.
  5. Walidacja:
    • Przejrzyj korelacje: burst /remote/hostcheck_validate + restart sslvpnd + brak user + 4xx.

Mapowania (Mitigations, powiązane techniki)

Technika główna: T1190 – Exploit Public‑Facing Application (Initial Access).

Techniki powiązane:

  • T1133 – External Remote Services (VPN jako brama zdalna; logika detekcji dostępowej).
  • T1210 – Exploitation of Remote Services (ew. późniejsze ruchy boczne).

Mitigations (ATT&CK):

  • M1030 — Network Segmentation (DMZ dla usług publicznych).
  • M1035 — Limit Access to Resource Over Network (allow‑list do portalu VPN).
  • M1042 — Disable or Remove Feature or Program (wyłącz SSL‑VPN, jeśli nieużywany).
  • M1050 — Exploit Protection (ochrony przed exploitami, w tym IPS/WAF).
  • M1016 — Vulnerability Scanning (ciągła walidacja wersji).

Źródła / dalsza literatura

  • NVD: opis, wersje dotknięte, CVSS 9.8. (NVD)
  • CISA KEV: dodanie CVE‑2023‑27997 do katalogu (2023‑06‑13). (CISA)
  • Fortinet PSIRT (blog, 12.06.2023): kontekst, zalecenia, brak bezpośredniego powiązania z Volt Typhoon w dacie publikacji. (Fortinet)
  • FortiGuard CVRF FG‑IR‑23‑097: opis, workaround „disable SSL‑VPN”. (FortiGuard)
  • LEXFO (XORtigate): szczegóły techniczne błędu (/remote/hostcheck_validate, enc). (blog.lexfo.fr)
  • Rapid7: wersje naprawcze (6.0.17/6.2.15/6.4.13/7.0.12/7.2.5), IOCs (np. fortigate-tech-support). (Rapid7)
  • Fortinet (04.10.2025): technika symlink post‑exploitation na FortiOS. (Fortinet)
  • Fortinet community: watchdog/crash sslvpnd — jak rozpoznać w logach. (Fortinet Community)

Checklisty dla SOC / CISO

SOC (operacyjna):

  • Alert na /remote/hostcheck_validate + enc= (pre‑auth) z progami wolumetrycznymi.
  • Korelacja z sslvpnd crash/restart i pikami 4xx/5xx.
  • Hunting kont admina (np. fortigate-tech-support) i zmian konfiguracji.
  • Dashboard narażonych wersji (parsing get system status).
  • Logi z ALB/WAF, jeśli FortiGate za load balancerem.

CISO (strategiczna):

  • Patch policy: SLA dla urządzeń brzegowych (≤7 dni dla CVE krytycznych, w KEV).
  • Segmentacja/DMZ dla serwisów publicznych (M1030).
  • Dostęp warunkowy do paneli VPN (M1035/M1042) + geofencing.
  • Testy kontrolne: cykliczne skany podatności (M1016) i symulacje IR.

VPN Hardening Cookbook

Dlaczego to ma znaczenie?

VPN jest bramą do firmowej sieci – ułatwia pracę zdalną, ale dla atakujących stanowi atrakcyjny cel. Wystarczy jedno przejęte konto lub luka w VPN, by intruz zyskał dostęp do zasobów wewnętrznych. Przykładowo, głośny atak na Colonial Pipeline w 2021 rozpoczął się od wykradzionych danych dostępowych VPN bez wymuszonego MFA, co sparaliżowało krytyczną infrastrukturę. To pokazuje, że kompromitacja VPN niesie poważne konsekwencje – od wycieku danych po zatrzymanie działalności firmy.

Czytaj dalej „VPN Hardening Cookbook”

CVE‑2025‑42944 – SAP NetWeaver AS Java

TL;DR

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.


Artefakty i logi

ŹródłoCo zbieraćEID / polaWzorce / wskazówkiUwagi
SAP AS Java defaultTrace.* / logi RMIBłędy RMI‑P4, nieudane żądania, przeciążenia kolejkicom.sap.engine.services.rmi_p4.*Wpisy o przetwarzaniu żądań P4, błędach połączeń, anomalie kolejkiPrzykładowe komunikaty RMI‑P4 potwierdza KBA SAP (P4/50004, kolejka).
Windows SecurityTworzenie procesów po udanej RCE4688Rodzic: java.exe/jstart.exe/sapstartsrv.exeDziecko: cmd.exe/powershell.exe/wscript.exeKorelować z czasem ruchu na P4
SysmonStart procesu / sieć1, 3, 10ParentImage jak wyżej; połączenia z/do *:5NN04
Linux auditdexecve/fork potomków Javytype=EXECVEppid/exe = java/jstart/sapstartsrv + sh/bash
Zeek / FWRuch przychodzący na P4dest_port50004–59904 i końcówka …04 (wzorzec 5NN04)Segmentacja i allowlista źródeł
AWS CloudTrailZmiany SG otwierające P4AuthorizeSecurityGroupIngress/Egress, CreateSecurityGrouptoPort w [50004..59904] (w przybliżeniu wzorzec 5NN04)Wykrywa „otwarcie świata” na P4 w chmurze
K8s auditWystawienie P4 z klastracreate/patch Service/Ingressspec.ports.port: 5NN04 / nodePort kończący się …04Jeś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.
  • Nietypowe argumenty potomnych (/c, -c, wget, curl, nc, zapisy do /tmp/%TEMP%).
  • Nagły wzrost błędów RMI‑P4 w defaultTrace koreluje z ruchem na P4 i alertami EDR.
  • Zmiany Security Group/NSG odsłaniające P4 ⟶ pierwsze próby skanowania/połączeń (Zeek).
  • Brak P4S (SSL) i brak ACL/allowlist dla P4 w ICM/WAF ⟶ ryzyko wyższe.

False positives / tuning

  • Legalne działania administracyjne/upgrade’owe AS Java mogą krótkotrwale wywoływać skrypty systemowe.
  • Ogranicz do hostów SAP, kont serwisowych (<SID>adm), okien zmian i baseline’u procesów.
  • Whitelistuj znane źródła administracyjne (jump‑hosty), a alertuj Internet/nieznane ASN.
  • W regułach sieciowych uwzględnij fakt, że P4 = 5NN04, więc dopasowanie końcówki …04 zwiększa precyzję.

Playbook reagowania (IR)

  1. Identyfikacja/triage: potwierdź alert (proces potomek od Javy + ruch na 5NN04).
  2. Izolacja: odetnij host/y SAP od niezaufanych sieci; tymczasowo zablokuj 5NN04 na brzegu/WAF.
  3. Forensics wstępne:
    • Windows: pobierz 4688/Sysmon oraz C:\usr\sap\*\J00\work\defaultTrace*.
    • Linux: journalctl/auditd, /usr/sap/<SID>/J*/work/defaultTrace*.
  4. Weryfikacja ekspozycji portu:
    • Linux: ss -lntp | awk '$4 ~ /:5[0-9]{2}04/ {print}'
    • Windows (PS): Get-NetTCPConnection | ? { $_.LocalPort -ge 50004 -and $_.LocalPort -le 59904 -and ($_.LocalPort % 100 -eq 4) }
  5. Patche / hardening: zastosuj SAP Note #3634501 (fix) i #3660659 (JVM serialFilter).
  6. Rekonesans kompromitacji: szukaj anomalii w kontach, nietypowych plikach w %TEMP%//tmp, połączeń wychodzących C2.
  7. Eradykacja/odzyskanie: po patchu uruchom kontrolę integralności, rotację haseł/kluczy, przywrócenie zaufanej konfiguracji ICM/WAF.
  8. Lessons learned: zamknij ekspozycje P4, egzekwuj allowlist, monitoruj porty 5NN**.

Przykłady z kampanii / case studies

  • 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).

Mapowania (Mitigations, powiązane techniki)

Mitigations (ATT&CK):

  • M1051 – Update Software: szybkie wdrożenie not #3634501 (fix) + #3660659 (serialFilter).
  • M1030 – Network Segmentation: ogranicz zasięg P4 do VLAN‑ów admin/jump‑host; brak dostępu z Internetu.
  • M1037 – Filter Network Traffic: WAF/NGFW — allowlista do P4/P4S, TLS preferowany (P4S).
  • M1031 – Network Intrusion Prevention: sygnatury/analiza protokołu, blokowanie anomalii RMI/P4.
  • M1048 – Application Isolation & Sandboxing: ograniczenie uprawnień konta procesu AS Java.

Powiązane techniki ATT&CK:

  • T1190,
  • T1210,
  • T1059

Źródła / dalsza lektura

  • NVD: opis, wektor, daty → CVE‑2025‑42944. (NVD)
  • SAP Security Notes: #3634501 (fix), #3660659 (hardening jdk.serialFilter). (strony wymagają dostępu) — linki referencyjne z NVD. (NVD)
  • Onapsis (Oct 2025 Patch Day): tło hardeningu i jdk.serialFilter. (Onapsis)
  • Arctic Wolf (Sep 2025): przegląd luki, brak PoC/eksploatacji w momencie publikacji. (Arctic Wolf)
  • The Hacker News (Oct 2025): kontekst i wzmianka o dodatkowym utwardzeniu. (The Hacker News)
  • Tenable (Nessus Plugin 270696): detale skanera i potwierdzenie zakresu (AS Java, CVSS 10). (Tenable®)
  • SAP Help (AS Java Ports): P4 = 5NN04, P4S/P4HTTP. (SAP Help Portal)
  • MITRE ATT&CK v18 — wersje i techniki: wersja bieżąca, T1190/T1210/T1059. (MITRE ATT&CK)

Checklisty dla SOC / CISO

SOC (operacyjna)

  • Reguły: Sigma (proc‑child Java→cmd/sh), SPL/KQL/EQL wdrożone.
  • Korelacje: ruch na 5NN04 + proces potomny cmd/sh.
  • Telemetria SAP: zbieranie defaultTrace.* i logów RMI‑P4.
  • Monitoring chmury: alerty na AuthorizeSecurityGroupIngress/Egress dla portów 50004–59904.
  • Wizualizacja źródeł z Internetu próbujących P4 (Zeek/FW).

CISO (strategiczna)

  • Patch wg SAP #3634501 + hardening #3660659 na wszystkich krajobrazach.
  • Segmentacja: P4 tylko z sieci admin/jump‑host; brak ekspozycji publicznej.
  • WAF/NGFW: allowlista + wymuszenie P4S (TLS) tam gdzie możliwe.
  • Ćwiczenia IR: scenariusz RCE w SAP; gotowe playbooki i retencja logów ≥ 90 dni.
  • Przegląd uprawnień dla kont procesu AS Java; zasada najmniejszych uprawnień.

CVE-2025-42890 — SAP SQL Anywhere Monitor (Non‑GUI) — „hard‑coded credentials” (CWE‑798)

TL;DR

  • Krytyczna luka (CVSS 10.0) w SQL Anywhere Monitor (Non‑GUI) 17.0 — wbudowane poświadczenia mogą dać zdalne RCE bez uwierzytelnienia.
  • Zastosuj SAP Note 3666261; SAP klasyfikuje jako HotNews. Onapsis: poprawka usuwa moduł monitora; doraźnie wyłącz i usuń bazę monitora.
  • Od strony detekcji: identyfikuj hosty nasłuchujące/historycznie na TCP/4950, koreluj z nietypowymi logowaniami i nowymi procesami systemowymi po ruchu na tym porcie.
  • Na moment publikacji brak informacji SAP o aktywnej eksploatacji; patchuj priorytetowo.

Krótka definicja techniczna

CVE‑2025‑42890 to błąd klasy CWE‑798 (hard‑coded credentials) w SAP SQL Anywhere Monitor (Non‑GUI), pozwalający zdalnemu napastnikowi — bez wcześniejszego uwierzytelnienia — uzyskać dostęp do funkcji administracyjnych monitora i potencjalnie wykonać kod z wysokimi uprawnieniami, co skutkuje wysokim wpływem na C/I/A.

Gdzie występuje / przykłady platform

  • Windows / Linux (on‑prem / IaaS): monitor uruchamiany jako usługa, historycznie eksponujący HTTP na TCP/4950.
  • VM/Cloud (AWS/Azure/GCP): spotykany jako komponent pomocniczy przy środowiskach rozproszonych SQL Anywhere; w chmurze ruch widoczny w VPC/NSG Flow Logs.
  • AD/M365/K8s/ESXi: brak bezpośredniej zależności; komponent jest aplikacją serwerową spoza tych platform.

Szczegółowy opis techniki

Moduł SQL Anywhere Monitor (Non‑GUI) zawiera w kodzie stałe poświadczenia. Jeżeli usługa jest osiągalna sieciowo, atakujący może z ich użyciem uzyskać dostęp administracyjny do funkcji monitora, a następnie (w zależności od konfiguracji i scenariusza) doprowadzić do zdalnego wykonania kodu na hoście. SAP sklasyfikował lukę jako Critical/HotNews i udostępnił notę 3666261; Onapsis podaje, że poprawka deinstaluje omawiany komponent, a do czasu wdrożenia łatki należy zatrzymać usługę monitora i usunąć jego bazę repozytoryjną.
Praktycznie oznacza to, że ekspozycja TCP/4950 (lub port skonfigurowany lokalnie) z hosta z zainstalowanym monitorem znacząco zwiększa ryzyko nieautoryzowanego dostępu.

Artefakty i logi (tabela)

ŹródłoArtefakt / logCo obserwować
Firewall / NTA / ZeekPołączenia dst.port=4950/tcp (lub port monitora)Pierwsze kontakty z zewnątrz, skoki wolumenu, nowe źródła IP, długość sesji.
SysmonEID 3 (NetworkConnect)Procesy nasłuchujące/łączące się na 4950; korelacja z nietypowymi parentami.
Windows SystemEID 7045/7036 (Service install/start)Pojawienie się/uruchomienie usługi powiązanej z SQL Anywhere/monitorem.
Linuxsystemd journal / ss -lntpSłuchanie na porcie monitora, restart usługi po patchu.
EDR (proc)Nietypowe spawny (cmd.exe/powershell.exe/bash) po ruchu na 4950Możliwy follow‑on execution.
Cloud (AWS)VPC Flow Logsdstport=4950 + action=ACCEPT dla instancji z SQL Anywhere.
Azure/GCPNSG/Flow LogsAnalogiczne do VPC Flow.
K8s/M365[brak danych / nie dotyczy]

Detekcja (praktyczne reguły)

a) Sigma (firewall/NTA) — zewnętrzny dostęp do monitora

title: External Access to SAP SQL Anywhere Monitor (TCP/4950)
id: 0f2e2b2c-5f1c-4a3c-8b0a-4a2b4c7e4950
status: stable
description: Wykrywa połączenia przychodzące do SQL Anywhere Monitor (historycznie TCP/4950) spoza sieci zaufanych.
references:
  - https://help.sap.com/docs/SAP_SQL_Anywhere/.../Monitor-architecture  # port 4950
logsource:
  category: firewall
detection:
  selection:
    dst_port: 4950
    action: allow
  not_internal:
    src_ip|cidr:
      - 10.0.0.0/8
      - 172.16.0.0/12
      - 192.168.0.0/16
  condition: selection and not not_internal
fields:
  - src_ip
  - dst_ip
  - dst_port
  - bytes
  - rule
falsepositives:
  - Legalny zdalny dostęp administracyjny z zaufanych adresów (rozszerz allowlistę).
level: high

b) Splunk (CIM: Network_Traffic)

| tstats summariesonly=false count as events
  from datamodel=Network_Traffic.All_Traffic
  where All_Traffic.dest_port=4950 All_Traffic.action=allowed
  by _time span=5m All_Traffic.dest, All_Traffic.src
| where NOT cidrmatch("10.0.0.0/8", 'All_Traffic.src')
  AND NOT cidrmatch("172.16.0.0/12", 'All_Traffic.src')
  AND NOT cidrmatch("192.168.0.0/16", 'All_Traffic.src')
| eventstats sum(events) as ev_by_pair by All_Traffic.dest, All_Traffic.src
| sort - ev_by_pair

c) KQL (Microsoft Defender for Endpoint / Sentinel – DeviceNetworkEvents)

DeviceNetworkEvents
| where Timestamp > ago(7d)
| where LocalPort == 4950 or RemotePort == 4950
| where ActionType in ("ConnectionSuccess", "InboundConnectionAccepted", "ListeningConnectionCreated")
| summarize firstSeen=min(Timestamp), lastSeen=max(Timestamp), cnt=count()
  by DeviceName, InitiatingProcessFileName, LocalIP, LocalPort, RemoteIP, RemotePort, Protocol
| order by cnt desc

d) AWS VPC Flow Logs (Athena)

SELECT dstaddr, dstport, srcaddr, COUNT(*) AS hits, MIN(start) AS first_seen, MAX(end) AS last_seen
FROM vpc_flow_logs
WHERE action='ACCEPT' AND dstport=4950 AND start BETWEEN from_iso8601_timestamp('${from}') AND from_iso8601_timestamp('${to}')
GROUP BY dstaddr, dstport, srcaddr
ORDER BY hits DESC;

e) Elastic (EQL)

network where destination.port == 4950 and event.action == "allowed"
  and not cidrmatch(source.ip, ["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"])

Uwaga: port 4950 jest historyczną wartością domyślną dla monitora — potwierdź w swojej konfiguracji (również pod kątem reverse proxy).

Heurystyki / korelacje

  • Ruch → wykonanie: przepływy na 4950 (lub port monitora) tuż przed nowymi procesami systemowymi na hoście (cmd/powershell/bash, instalacja usług).
  • Nowa ekspozycja: pojawienie się procesu nasłuchującego na 4950 po wdrożeniu lub aktualizacji hosta.
  • Anomalia źródeł: dostęp do monitora spoza adresów operacyjnych/monitorujących (jump‑hosty, narzędzia APM).
  • Zachowanie po kompromitacji: dodanie kont lokalnych, nowe zadania zaplanowane, modyfikacje reguł zapory.

False positives / tuning

  • Wewnętrzne systemy monitoringu/aplikacje APM mogą korzystać z dedykowanych portów — allowlista IP i okna czasowe maintenance.
  • Port 4950 bywa używany w dawnych wdrożeniach innych narzędzi — potwierdzaj banery/usługę zanim podniesiesz incydent.

Playbook reagowania (IR) — kroki + komendy

  1. Identyfikacja zasobu: inwentarz hostów z SQL Anywhere Monitor (Non‑GUI) 17.0. (SAP Note 3666261)
  2. Izolacja sieciowa: tymczasowo zablokuj dostęp do portu monitora z niezaufanych adresów (lub całkowicie).
    • Windows (PowerShell): New-NetFirewallRule -DisplayName "Block SQL Anywhere Monitor" -Direction Inbound -LocalPort 4950 -Protocol TCP -Action Block
    • Linux: sudo iptables -A INPUT -p tcp --dport 4950 -j DROP
  3. Wyłączenie komponentu: zatrzymaj usługę monitora; usuń instancję bazy monitora (zalecenie tymczasowe Onapsis).
  4. Wdrożenie poprawki SAP: zastosuj notę 3666261 (HotNews). Wg Onapsis poprawka usuwa komponent monitorujący.
  5. Rotacja sekretów: zmień hasła kont serwisowych powiązanych z SQL Anywhere / monitorowaniem.
  6. Łańcuch dowodowy: przejrzyj logi (sekcje 6–7) pod kątem nadużyć przed patchowaniem; skoreluj z EDR.
  7. Weryfikacja „po”: brak nasłuchu na 4950 (netstat/ss), brak procesu/usługi monitora, brak ruchu w Flow Logs.

Przykłady z kampanii / case studies

  • Stan na 11–12 lis 2025: SAP nie raportował wykorzystania „in the wild”; media branżowe również nie wskazują aktywnej eksploatacji — priorytet patchowania pozostaje wysoki ze względu na CVSS 10.0.

Lab (bezpieczne testy) — przykładowe komendy

Cel: sprawdzić, czy detekcje zadziałają bez reprodukowania luki.

  • Symulacja ekspozycji portu (host‑lab):
    • Windows: Start-Process -WindowStyle Hidden -FilePath "powershell.exe" -ArgumentList "while($true){$l=New-Object Net.Sockets.TcpListener([Net.IPAddress]::Any,4950);$l.Start();Start-Sleep -Seconds 600}"
    • Linux: sudo nc -l -p 4950
  • Weryfikacja logów:
    • Zeek/Suricata: wygeneruj połączenie curl http://<host>:4950/ z innego hosta labowego i sprawdź reguły Sigma/Splunk/KQL.
  • Test playbooku: zastosuj regułę zapory, sprawdź, że zapytania z sekcji 7 przestają wykrywać ruch.

Mapowania (Mitigations, powiązane techniki)

Mitigations (ATT&CK Enterprise):

  • M1037 – Filter Network Traffic (odcięcie ekspozycji monitora).
  • M1042 – Disable or Remove Feature or Program (usunięcie komponentu monitora zgodnie z zaleceniem).
  • M1036 – Account Use Policies (wymuszenie zasad użycia kont; lockouty, ograniczenia czasu).
  • M1026 – Privileged Account Management (segregacja kont serwisowych).
  • M1047 – Audit (ciągłe monitorowanie ruchu/zdarzeń powiązanych).

Powiązane techniki ATT&CK:

  • T1078.001,
  • T1210

Źródła / dalsza literatura

  • NVD: opis CVE, wektor CVSS, CWE‑798. (NVD)
  • SAP Security Patch Day (listopad 2025): produkt, wersja, klasyfikacja HotNews, CVSS 10.0, nr noty 3666261. (SAP Support Portal)
  • Onapsis (analiza): usunięcie komponentu, zalecenie wyłączenia i usunięcia bazy monitora. (Onapsis)
  • SecurityWeek: podsumowanie pakietu SAP, brak informacji o eksploatacji w momencie publikacji. (SecurityWeek)
  • BleepingComputer: streszczenie opisu CVE i wagi problemu. (BleepingComputer)
  • Dokumentacja SQL Anywhere — architektura monitora i domyślny port 4950. (infocenter.sybase.com)

Checklisty dla SOC / CISO

SOC:

  • Znajdź aktywne nasłuchy na TCP/4950 (lub port monitora) i ruch zewnętrzny → wewnątrz.
  • Uruchom reguły z sekcji 7; przejrzyj 7/30 dni wstecz.
  • Koreluj ruch z procesami systemowymi i nowymi usługami.
  • Eskaluj hosty z artefaktami na IR; potwierdź wersję i obecność komponentu monitora.

CISO / właściciel systemu:

  • Wymuś wdrożenie SAP Note 3666261 na wszystkich środowiskach (on‑prem/VM/IaaS).
  • Wdroż tymczasowe kontrole sieciowe (blokada portu/ACL/WAF).
  • Zaplanuj rotację sekretów/kont serwisowych i weryfikację uprawnień.
  • Zaktualizuj rejestr ryzyk (CRITICAL) i polityki „feature removal” dla komponentów wycofywanych przez producenta.