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

securitybeztabu.pl 13 godzin temu

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. o ile 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, iż poprawka deinstaluje omawiany komponent, a do czasu wdrożenia łatki należy zatrzymać usługę monitora i usunąć jego bazę repozytoryjną.
Praktycznie oznacza to, iż 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ź, iż 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.
Idź do oryginalnego materiału