Archiwa: PowerShell - Strona 25 z 32 - Security Bez Tabu

Microsoft łata aktywnie wykorzystywaną lukę w jądrze Windows (CVE-2025-62215). Co to znaczy dla Twojej organizacji?


Wprowadzenie do problemu / definicja luki

Podczas listopadowego Patch Tuesday (11 listopada 2025 r.) Microsoft załatał aktywnie wykorzystywaną lukę podniesienia uprawnień w jądrze Windows – CVE-2025-62215. To błąd klasy race condition: atakujący, który ma już możliwość uruchomienia kodu w systemie (np. jako zwykły użytkownik), może „wygrać wyścig” i uzyskać uprawnienia SYSTEM, przejmując pełną kontrolę nad hostem. Microsoft potwierdził obserwacje exploitów w atakach w świecie rzeczywistym (szczegóły kampanii nie zostały ujawnione) i przypisał odkrycie MSTIC/MSRC.

Równocześnie opublikowano łatki do ~63 podatności (według BleepingComputer), w tym czterech oznaczonych przez Microsoft jako „krytyczne” (m.in. GDI+/Graphics Component, Office, Visual Studio, Nuance PowerScribe 360).


W skrócie

  • CVE-2025-62215 (Windows Kernel, EoP) – błąd race condition, pozwala uzyskać SYSTEM po lokalnym wykonaniu kodu; aktywnie wykorzystywany.
  • Zakres aktualizacji – ok. 63 luk (59 „Important”, 4 „Critical” wg ZDI), z czego 29 to EoP i 16 RCE (zestawienie liczbowo różni się nieznacznie między źródłami, zależnie od tego, czy liczone są też aktualizacje Chromium/Mariner).
  • Priorytet – traktować jako pilne; typowy łańcuch: zdalny RCE + lokalny EoP (CVE-2025-62215) = pełne przejęcie hosta.
  • Dodatkowy kontekst – to „lżejszy” miesiąc po październikowej kumulacji (ponad 170 CVE); mimo mniejszej liczby poprawek, ryzyko pozostaje wysokie ze względu na zero-day.

Kontekst / historia / powiązania

Relacje branżowe (SecurityWeek, BleepingComputer, ZDI, Cisco Talos, Qualys) są spójne: mamy jedną potwierdzoną 0-day w kernelu i kilka klas podatności, które często pojawiają się w łańcuchach ataków (Office/GDI+/DirectX/WinSock/CLFS). Talos podaje dla CVE-2025-62215 ocenę CVSS 7.8 i podkreśla „low complexity” przy spełnionych warunkach lokalnego uruchomienia kodu.

Warto odnotować, że Windows 10 przeszedł na ESU (płatne przedłużenie poprawek), co w wielu środowiskach komplikuje zgodność patch-managementu i priorytetyzację.


Analiza techniczna / szczegóły luki

CVE-2025-62215 – Windows Kernel EoP (race condition)

  • Warunek powodzenia: atakujący musi mieć lokalny dostęp i możliwość wykonania kodu (np. po udanym RCE, makrze Office, sideloadingu DLL, LPE przez sterownik, itp.).
  • Mechanizm: współbieżny dostęp do współdzielonego zasobu w jądrze bez właściwej synchronizacji umożliwia modyfikację stanu/struktur i eskalację do NT AUTHORITY\SYSTEM po „wygraniu wyścigu”. Microsoft explicite podkreśla, że exploit wymaga „wygrania race condition”.
  • Łańcuchy ataku w praktyce:
    • Phish → Office RCE (np. CVE-2025-62199/62205/62216) → CVE-2025-62215 (EoP) → trwałość (LsaAddAccountRights, usługi, harmonogram) → C2.
    • Drive-by/plik graficzny → GDI+ RCE (CVE-2025-60724) → kernel EoP.
    • Dev/CI środowiska → VS/Agentic AI RCE (CVE-2025-62214/62222) → kernel EoP.

Inne ważne pozycje (wybór):

  • GDI+ RCE (CVE-2025-60724, CVSS 9.8) – potencjalnie bez interakcji na serwisach parsujących pliki; bardzo groźne w systemach serwerowych skanujących/konwertujących dokumenty.
  • DirectX Graphics Kernel EoP (CVE-2025-60716) – również z elementem race condition (Talos: „high complexity”).
  • CLFS EoP (CVE-2025-60709) – komponent historycznie atrakcyjny dla APT/crimeware (często eksploatowany w poprzednich latach).

Praktyczne konsekwencje / ryzyko

  • Eskalacja po „pierwszym wstrzyknięciu” – 0-day w kernelu zamyka łańcuch ataku, podnosząc uprawnienia z User do SYSTEM; utrudnia triage, bo telemetrycznie wygląda jak „local exploit”, gdy faktyczny wektor był zdalny.
  • Ucieczka z kontenerów/aplikacji „piaskownicy” – w środowiskach z AppContainer/WDAG/ciężkim hardeningiem eskalacja do SYSTEM może obejść izolację.
  • Skutki dla IR/SOC: krótkie okno detekcji; artefakty race condition bywają skąpe; trzeba łączyć alerty z fazy pre-EoP (phish/plik) z nietypowymi zdarzeniami jądra.

Rekomendacje operacyjne / co zrobić teraz

1) Priorytetowe wdrożenie poprawek

  • Windows (wszystkie wspierane edycje): wdrożyć listopadowe cumulative updates. Zgodnie z relacjami branżowymi aktualizacja łata CVE-2025-62215 oraz inne CVE o wysokim ryzyku (GDI+, Office, DirectX).

PowerShell – szybkie sprawdzenie poziomu łatek na hostach

# ostatnie zainstalowane aktualizacje jakościowe
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 10

# sprawdzenie dostępnych aktualizacji (wymaga PSWindowsUpdate)
Install-Module PSWindowsUpdate -Force
Get-WindowsUpdate -MicrosoftUpdate

# ciche zainstalowanie wszystkich aktualizacji i restart poza godzinami pracy
Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -IgnoreReboot -AutoReboot

Intune – wymuszenie cyklu aktualizacji
Device > Windows > Update rings for Windows 10 and later → Ustaw krótki „Deadline for quality updates” (np. 2 dni) + „Grace period” 0–1 dzień dla krytycznych stacji.

WSUS/SCCM
Zatwierdź „Security Updates” z datą 2025-11-11 dla grup „Pilot” (24–48 h), następnie „Broad” (72–120 h) po smoke-teście zgodności.

2) Weryfikacja wdrożenia

PowerShell – weryfikacja konkretnego KB

# przykładowo sprawdź czy host ma listopadowy CU (KB będzie zależeć od wersji Windows)
$kb="KB5xxxxx"  # wstaw właściwy numer z dokumentacji wydanej dla Twojej wersji
(Get-HotFix -Id $kb -ErrorAction SilentlyContinue) -ne $null

Uwaga: numer KB różni się per wersja (23H2/24H2/25H2/Server). Zweryfikuj dla swojej gałęzi podczas publikacji w MSRC/Release Notes.

3) Wzmocnienie detekcji (MDE/Sysmon/SIEM)

Sysmon – zdarzenia warte korelacji:

  • Event ID 1/5/7/11 (ProcessCreate, ProcessTerminated, ImageLoaded, FileCreate) dla anomalii wokół win32k, ntoskrnl, sterowników grafiki/CLFS;
  • Nietypowe wątki w procesach niskoprzywilejowych prowadzące do zmian usług/kluczy LSA.

Microsoft Defender for Endpoint – zapytania KQL (Advanced Hunting):

// Podejrzane podniesienia uprawnień po niedawnym otwarciu dokumentu
DeviceProcessEvents
| where Timestamp > ago(7d)
| where InitiatingProcessFileName in~ ("WINWORD.EXE","EXCEL.EXE","POWERPNT.EXE")
| join kind=inner (
    DeviceProcessEvents
    | where Timestamp > ago(7d)
    | where FileName in~ ("cmd.exe","powershell.exe","rundll32.exe","reg.exe")
) on DeviceId
| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine
| order by Timestamp desc
// Szybka detekcja tworzenia usług po EoP
DeviceRegistryEvents
| where Timestamp > ago(7d)
| where RegistryKey contains @"SYSTEM\CurrentControlSet\Services"
| where InitiatingProcessAccountName !in~ ("SYSTEM","LOCAL SERVICE","NETWORK SERVICE")

4) Twarde ograniczenie wektorów wstępnych (do czasu pełnego patchowania)

  • Blokada podglądu w Office / Ochrona przed makrami – błąd Office RCE (CVE-2025-62199/62205/62216) może być łączony z EoP; ogranicz Preview Pane i makra z internetu.
  • Filtrowanie plików graficznych/metafili (GDI+ RCE, CVE-2025-60724) w bramkach, DLP, serwerach konwersji.
  • WDAC / AppLocker – polityki ograniczające uruchamianie binariów spoza zaufanych ścieżek.
  • EDR: monitoruj nietypowe TokenElevationType, SeDebugPrivilege, tworzenie usług, modyfikacje LSA/TTY.

5) Zarządzanie ryzykiem w Windows 10 (ESU)

Jeśli utrzymujesz Windows 10, zaplanuj ESU lub migrację do Windows 11; listopadowe łatki są pierwszym cyklem ESU i brak ich wdrożenia otwiera lukę na hostach „legacy”.


Różnice / porównania z innymi przypadkami

  • Wzorzec „RCE + EoP” jest typowy: w ostatnich latach wiele kampanii łączyło dokument/preview-based RCE (Office/GDI+) z kernel EoP (CLFS/win32k/DirectX). Bieżący zestaw CVE dokładnie wpisuje się w ten schemat.
  • Dynamika Patch Tuesday: po „ciężkim” październiku (ZDI raportował ~177 CVE) listopad wygląda spokojniej liczbowo, ale jakościowo mamy 0-day w kernelu – więc priorytet pozostaje wysoki.

Podsumowanie / kluczowe wnioski

  • CVE-2025-62215 to realne, potwierdzone zagrożenie: aktywny exploit + eskalacja do SYSTEM. Potraktuj jako priorytet P0.
  • Zastosuj listopadowe aktualizacje na Windows/Office/VS/DirectX/GDI+ jak najszybciej, ze szczególnym naciskiem na stacje użytkowników i serwery parsujące dokumenty.
  • W SOC skup się na korelacji: źródłowe zdarzenie (phish/plik) → nietypowe procesy → trwałość po EoP.
  • Jeśli masz Windows 10, upewnij się, że włączone są kanały ESU albo przyspiesz migrację.

Źródła / bibliografia

  1. SecurityWeek – „Microsoft Patches Actively Exploited Windows Kernel Zero-Day” (11.11.2025). Potwierdzenie 0-day (CVE-2025-62215), klasa błędu (race condition), zakres miesiąca. (SecurityWeek)
  2. BleepingComputer – „Microsoft November 2025 Patch Tuesday fixes 1 zero-day, 63 flaws” – liczby, lista kategorii, przypisanie MSTIC/MSRC. (BleepingComputer)
  3. Zero Day Initiative – „The November 2025 Security Update Review” – komentarz techniczny, kontekst (liczby, porównanie do października), akcent na łańcuch RCE→EoP. (Zero Day Initiative)
  4. Cisco Talos – „Microsoft Patch Tuesday for November 2025 — Snort rules and prominent vulnerabilities” – CVSS, krytyczne wpisy (GDI+/Office/VS/DirectX), zasady Snort. (Cisco Talos Blog)
  5. Qualys – „Microsoft Patch Tuesday, November 2025 Security Update Review” – podsumowanie kategorii, opisy GDI+/Office/DirectX, potwierdzenie charakteru CVE-2025-62215. (Qualys)

CVE-2025-62215 — Windows Kernel EoP (race condition)

TL;DR

CVE‑2025‑62215 to lokalna eskalacja uprawnień w jądrze Windows spowodowana warunkiem wyścigu (CWE‑362; także przypisana CWE‑415). Wymaga uprzywilejowanego (ale nie admin) dostępu lokalnego i pozwala podnieść uprawnienia do SYSTEM. Microsoft potwierdził aktywną eksploatację (zero‑day); poprawka została wydana w Patch Tuesday (listopad 2025). Priorytet: natychmiastowe łatanie oraz telemetria post‑eksploatacyjna (procesy SYSTEM z katalogów zapisywalnych przez użytkownika, podejrzane tworzenie usług).


Krótka definicja techniczna

Błąd klasy race condition w Windows Kernel umożliwia atakującemu z kontekstu lokalnie uwierzytelnionego (PR:L) wygrać wyścig w obsłudze zasobu współdzielonego, co skutkuje podniesieniem uprawnień do SYSTEM. Wektor CVSS v3.1 (wg Microsoft/CNA): AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H (bazowa 7.0). CWE‑362 (race) oraz CWE‑415 (double free) są przypisane do rekordu.


Gdzie występuje / przykłady platform

  • Windows (desktop i serwer) — komponent: Windows Kernel; konkretne edycje/wersje patrz karta MSRC. (Microsoft i niezależne serwisy potwierdzają, że jedna z 63 poprawek w listopadzie 2025 dotyczy właśnie tej luki).
  • Active Directory / M365 / Azure / AWS / GCP / K8s / ESXinie dotyczy bezpośrednio (luka jest systemowa na hostach Windows).

Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)

CVE‑2025‑62215 wykorzystuje niesynchronizowany dostęp do współdzielonego zasobu w jądrze. Napastnik o uprawnieniach użytkownika (np. standard user lub service account z ograniczeniami) może, poprzez odpowiednie tykowanie operacji (wyścig), doprowadzić do uzyskania tokenu SYSTEM i pełnej kontroli nad hostem. Luki EoP w kernelu są szczególnie atrakcyjne, bo zamyka to łańcuch ataku po początkowym footholdzie (np. RCE w Office/przeglądarce), a ślady w dziennikach często są pośrednie (nie ma “jednego” zdarzenia „użyto sploit kernelowy”). Microsoft oznaczył tę podatność jako aktywnie wykorzystywaną w czasie wydania poprawek.


Artefakty i logi (co obserwować)

ŹródłoTyp/IDCo szukać (skrót)
Security.evtx4688 (Process Creation), 4672 (Special Privileges), 4624 (logon), 4697 (service installed – jeśli włączone)Procesy z Integrity/System lub kontem SYSTEM uruchamiane z katalogów użytkownika/Temp/ProgramData; niespodziewane “Special privileges” zaraz po aktywności użytkownika.
System.evtx7045 (Service Installed)Nowe usługi wskazujące na binaria w %USERPROFILE%, C:\ProgramData, C:\Windows\Temp.
Sysmon1 (ProcessCreate), 6 (DriverLoad), 7 (ImageLoad), 10 (ProcessAccess), 11 (FileCreate), 13 (Registry)Procesy SYSTEM z nietypowych ścieżek; ewentualne ładowanie sterowników/obrazów z dysku użytkownika; dostęp do lsass.exe po nagłym wzroście uprawnień.
Microsoft Defender for EndpointDeviceProcessEvents, DeviceRegistryEvents, DeviceImageLoadEventsProcessIntegrityLevel == "System" + FolderPath w lokacjach zapisywalnych; nagłe wyłączanie AV/EDR; tworzenie usług/zadań.
M365 / CloudTrail / K8s auditNie dotyczy (luka hostowa Windows).
NVD/MSRC metadaneCVSS/CWE/stan exploituPotwierdzenie klasy błędu (race), wektora, aktywnej eksploatacji.

Detekcja (praktyczne reguły)

Sigma (Sysmon — podejrzany SYSTEM z katalogów zapisywalnych)

title: Suspicious SYSTEM Process From User-Writable Path
id: d3f9b3b2-0f4f-4d9e-9b8a-2025-11-12
status: experimental
description: Wykrywa procesy z IntegrityLevel=System uruchomione z katalogów zapisywalnych (Users/ProgramData/Windows\Temp) – wskaźnik post-EoP (np. CVE-2025-62215).
logsource:
  product: windows
  service: sysmon
  definition: 'EventID=1 ProcessCreate'
detection:
  selection:
    EventID: 1
    IntegrityLevel|contains: 'System'
    Image|startswith:
      - 'C:\Users\'
      - 'C:\ProgramData\'
      - 'C:\Windows\Temp\'
  filter_legit:
    Image|startswith:
      - 'C:\ProgramData\Microsoft\Windows Defender\'
      - 'C:\ProgramData\Microsoft\IntuneManagementExtension\'
  condition: selection and not filter_legit
fields:
  - UtcTime
  - Image
  - CommandLine
  - ParentImage
  - User
falsepositives:
  - Rzadkie legalne narzędzia utrzymaniowe działające jako SYSTEM z ProgramData
level: high
tags:
  - attack.T1068

Splunk (Sysmon)

index=xmlwineventlog sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1
IntegrityLevel=System (Image="C:\\Users\\*" OR Image="C:\\ProgramData\\*" OR Image="C:\\Windows\\Temp\\*")
| stats count min(_time) as first_seen max(_time) as last_seen values(ParentImage) values(CommandLine) by host, Image, User

KQL (Microsoft 365 Defender / Sentinel)

DeviceProcessEvents
| where ProcessIntegrityLevel == "System"
| where FolderPath has_any ("\\Users\\", "\\ProgramData\\", "\\Windows\\Temp\\")
| where not(FolderPath startswith @"C:\ProgramData\Microsoft\Windows Defender\" 
         or FolderPath startswith @"C:\ProgramData\Microsoft\IntuneManagementExtension\")
| summarize firstSeen=min(Timestamp), lastSeen=max(Timestamp), examples=make_set(ProcessCommandLine, 5) by DeviceName, AccountName, FolderPath, InitiatingProcessFileName

Windows Security: instalacja usług (Security 4697 / System 7045)

(index=wineventlog sourcetype="WinEventLog:System" EventCode=7045) OR
(index=wineventlog sourcetype="WinEventLog:Security" EventCode=4697)
| eval bin=coalesce(ImagePath, ServiceFileName, Service_FileName, ObjectName)
| where like(bin,"C:\\Users\\%") OR like(bin,"C:\\ProgramData\\%") OR like(bin,"C:\\Windows\\Temp\\%")
| table _time host EventCode ServiceName bin

Elastic EQL

process where process.integrity_level == "System" and
  (process.executable like "C:\\Users\\*" or
   process.executable like "C:\\ProgramData\\*" or
   process.executable like "C:\\Windows\\Temp\\*")

Uwaga: brak “jednego” logu potwierdzającego exploit kernelowy. Detekcja opiera się na anomaliach post‑eksploatacyjnych i korelacjach. Informacja o aktywnej eksploatacji oraz naturze (race condition) pochodzi z MSRC/NVD/Tenable.


Heurystyki / korelacje

  • Nagły skok uprawnień: proces użytkownika → w <60 s> pojawia się proces SYSTEM z tej samej sesji/typu konsoli.
  • SYSTEM z podejrzanych ścieżek: C:\Users\, C:\Windows\Temp\, C:\ProgramData\ (nie dotyczy znanych agentów).
  • Tworzenie usługi/zadania tuż po EoP (7045/4697, SchTasks).
  • Działania obronne zaburzane po EoP (wyłączenie AV/EDR — T1562), dostęp do LSASS (Sysmon 10) — możliwa kradzież poświadczeń po podniesieniu uprawnień.
  • Koreluj z alertem “Windows Kernel EoP” w EDR (jeśli vendor publikuje taką sygnaturę dla listopadowej łatki). Publiczne raporty z 11–12 XI 2025 potwierdzają status zero‑day.

False positives / tuning

  • Oprogramowanie korporacyjne uruchamiające moduły jako SYSTEM z ProgramData (agent instalacyjny, MDM/Intune, niektóre backupy).
  • Skrypty utrzymaniowe uruchamiane przez SCCM/Intune.
  • Tuning: białe listy ścieżek dla znanych agentów (Defender, Intune, narzędzia backupu), kontrola podpisu cyfrowego obrazu oraz producenta, okno czasowe korelacji (np. 30–120 s).

Playbook reagowania (IR)

  1. Triaging & izolacja: odłącz host od sieci (EDR isolate), zachowaj lotne artefakty (PID‑y SYSTEM z nietypowych ścieżek).
  2. Weryfikacja łatek: sprawdź, czy aktualizacja zbiorcza z 11 listopada 2025 jest zastosowana (np. KB5066835/KB5066793 dla Windows 11, KB5068781 dla Windows 10 ESU).
    • PowerShell: Get-HotFix | Where-Object {$_.HotFixID -match 'KB506'}
    (Numery KB podane m.in. w przeglądzie Patch Tuesday).
  3. Hunting: uruchom reguły/SPL/KQL z sekcji 7 na ostatnie 7–14 dni.
  4. Artefakty: zrzuty dla podejrzanych procesów SYSTEM (moduły, podpis, ścieżka), wpisy 7045/4697, zmiany w Run/Services, logi EDR.
  5. Eradykacja: usuń nieautoryzowane usługi/zadania, przywróć polityki EDR/AV, wymuś Windows Update.
  6. Recovery: reboot po łatce; monitoring wzmocniony (procesy SYSTEM z user‑paths).
  7. Komunikacja/CVE tracking: odnotuj CVE‑2025‑62215 w systemie zarządzania podatnościami, śledź MSRC/NVD.

Przykłady z kampanii / case studies

  • Status: publicznie brak szczegółów o kampaniach/aktorem; Microsoft i media branżowe potwierdzają aktywną eksploatację w momencie wydania poprawek, bez ujawniania wektora wejścia.

Lab (bezpieczne testy)

Celem jest walidacja detekcji post‑EoP, bez eksploatowania luki.

  1. Symulacja “SYSTEM z user‑path” (usługa): copy %SystemRoot%\System32\notepad.exe C:\Users\Public\demo.exe sc.exe create DemoSvc binPath= "C:\Users\Public\demo.exe" start= demand sc.exe start DemoSvc sc.exe delete DemoSvc Oczekiwane: 7045/4697 oraz Sysmon EID=1 z Image=C:\Users\Public\demo.exe i Integrity=System.
  2. Symulacja procesu SYSTEM z konsoli (PsExec, Sysinternals): psexec.exe -i -s cmd.exe Następnie uruchom tymczasowy plik z %TEMP% jako SYSTEM, by trafić w reguły z sekcji 7.
  3. Kontrola huntingu KQL/SPL — uruchom zapytania i potwierdź trafienia.

Mapowania (Mitigations, Powiązane techniki)

Mitigations (ATT&CK Enterprise):

  • M1051 — Update Software (natychmiastowe wdrożenie poprawek).
  • M1040 — Behavior Prevention on Endpoint (EDR/anty‑tampering, blokady zachowań post‑EoP).
  • M1026 — Privileged Account Management (minimalizacja i monitoring użycia kont uprzywilejowanych).

Powiązane techniki (ATT&CK Enterprise):

  • T1068 — Exploitation for Privilege Escalation
  • T1543 — Create or Modify System Process
  • T1562 — Impair Defenses
  • T1055 — Process Injection

Źródła / dalsza literatura

  • MSRC — CVE‑2025‑62215 (oficjalna karta). (Microsoft Security Response Center)
  • NVD — CVE‑2025‑62215 (opis, CVSS, CWE). (NVD)
  • Tenable: opis zero‑day i klasy błędu (race condition), kontekst listopadowego Patch Tuesday. (Tenable®)
  • BleepingComputer: przegląd aktualizacji, potwierdzenie 1 zero‑day (CVE‑2025‑62215) i numery wybranych KB. (BleepingComputer)
  • SecurityWeek / DarkReading: wzmianki o aktywnej eksploatacji. (SecurityWeek)
  • ZDI / Qualys / HKCERT / SANS ISC / Talos: przeglądy miesiąca z odniesieniami do CVE‑2025‑62215. (Zero Day Initiative)
  • ATT&CK v18 — wersja i historia wydań. (MITRE ATT&CK)
  • CISA KEVna moment pisania brak wpisu dla CVE‑2025‑62215 (sprawdź ponownie przed podejmowaniem decyzji). (CISA)

Checklisty dla SOC / CISO

SOC (operacyjna):

  • Wdrożone reguły z sekcji 7 (Sysmon/Splunk/KQL/Elastic).
  • Dodatkowy “watchlist” na procesy SYSTEM z Users/ProgramData/Temp.
  • Monitor 7045/4697 + korelacja <120 s> od procesów użytkownika.
  • Threat hunting 14 dni wstecz pod kątem post‑eksploatacyjnych anomalii.
  • Walidacja, że hosty dostały listopadową CU (Windows Update/KB).

CISO (strategiczna):

  • Patch SLA: 48–72 h dla krytycznych hostów Windows przy aktywnej eksploatacji.
  • Egzekwuj M1051/M1040/M1026 (patching, EDR z ochroną przed wyłączeniem, PAM).
  • Testy kontrolne w labie (sekcja 12) i przegląd wyjątków z białych list.
  • Ciągły przegląd komunikatów MSRC/NVD; dodaj CVE‑2025‑62215 do dashboardu ryzyka.

Uwagi końcowe (stan na 12 lis 2025): Rekord NVD zawiera opis, wektor CVSS i przypisania CWE‑362/CWE‑415; MSRC potwierdza zero‑day i dostępność poprawek; niezależne serwisy (Tenable/BleepingComputer) opisują ją jako Windows Kernel EoP używaną w atakach. Sprawdzaj cyklicznie MSRC/NVD/CISA KEV, bo szczegóły (np. listy wersji Windows, atrybucje) mogą się zmienić.

CVE-2025-42887 — Code Injection w SAP Solution Manager

TL;DR

Krytyczna podatność CVE‑2025‑42887 w SAP Solution Manager (ST 720) umożliwia wstrzyknięcie kodu podczas wywołania zdalnie udostępnionego modułu funkcyjnego (RFC) przez uwierzytelnionego atakującego. Skutkiem może być pełna kontrola systemu (wysokie C/I/A). CVSS v3.1: 9.9 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H). Dostawca opublikował poprawkę w Security Note 3668705 — należy wdrożyć niezwłocznie oraz ograniczyć dostęp do SAP RFC Gateway (porty 33xx) i monitorować Security Audit Log (SM20) i logi bramy RFC/ICM.


Krótka definicja techniczna

Błąd walidacji danych wejściowych w SAP Solution Manager pozwala podczas wywołania remote‑enabled function module na umieszczenie i wykonanie złośliwego kodu w kontekście aplikacyjnym. Wektor ataku jest sieciowy, z niską złożonością, wymaga niskich uprawnień (PR:L), nie wymaga interakcji użytkownika i zmienia zakres (Scope: Changed).


Gdzie występuje / przykłady platform

  • Produkt: SAP Solution Manager 7.2 (komponent ST 720) – krajobrazy on‑prem (Windows/Linux) i IaaS (AWS/Azure/GCP).
  • Protokół/warstwa dostępu: SAP RFC/Gateway (TCP 33xx/sapgw<inst>), HTTP(S)/ICM w wybranych scenariuszach SOAP RFC.
  • Przykładowe wdrożenia demo/PoC: oficjalne systemy pokazowe SolMan 7.2 (ST 720).

Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)

Mechanizm RFC umożliwia wywoływanie w ABAP funkcji oznaczonych jako Remote‑Enabled. W CVE‑2025‑42887 brak właściwego oczyszczania danych wejściowych przy takim wywołaniu prowadzi do wstrzyknięcia kodu i jego wykonania po stronie serwera SolMan. Ponieważ podatność dotyczy elementu administracyjnego (Solution Manager), kompromitacja może kaskadowo oddziaływać na systemy zarządzane i integracje (zmieniony zakres). W praktyce błąd wpisuje się w łańcuch TTP: eksploatacja usługi (T1190/T1210) → wykonanie/podniesienie uprawnień (T1068/T1059). Krytyczność rośnie, gdy RFC Gateway jest dostępny spoza zaufowanych segmentów lub gdy konta techniczne mają szerokie uprawnienia S_RFC/S_RFCACL.


Artefakty i logi

ŹródłoTyp/IDPole / EID / EventWzorzec / co szukaćUwagi
SAP Security Audit Log (SM19/SM20)AplikacjaKlasy „RFC/CPIC”, logony RFC, wywołania FMNietypowe logony RFC (pory, hosty), skoki liczby wywołań; nieudane/odrzucone autoryzacje S_RFCPodstawowy strumień audytowy ABAP.
SAP RFC Gateway (gw_log / dev_rd, GWMON)AplikacjaZdarzenia bramy (rejestracja, połączenia, wywołania)Niespodziewane źródła, nietypowe programy rejestrowane, błędy autoryzacji/ACLPorty 33xx; obserwuj reg_info/sec_info.
ICM/HTTP (dev_icm, log HTTP)AplikacjaŻądania do endpointów RFC/SOAPNietypowe POST do ścieżek RFC/SOAP z zewnątrzW zależności od konfiguracji.
Firewall/NetFlow/VPC Flow LogsSiećdstPort 3300–3399 (sapgw*)Połączenia z niezalistowanych ASN/VPC; skoki wolumenuDobre do korelacji z SAL.
Windows SysmonEID=1ParentImage = disp+work.exe/gwrd.exe/sapstartsrv.exe → child cmd.exe/powershell.exeEgzekucja powłoki przez procesy SAPW SolMan na Windows.
Linux auditdSYSCALL/EXECVEexe parent disp+work/gwrd/bin/sh, /bin/bashJak wyżej dla Linux
AWS VPC Flow Logs (CloudWatch)dstPort 3300..3399, action=ACCEPTŹródła poza allowlistą, krótkie serie połączeńCloudTrail nie rejestruje ruchu sieciowego.
K8s audit / M365[nie dotyczy]

(Porty RFC Gateway 33xx potwierdza KBA; komponent SolMan 7.2 = ST 720).


Detekcja (praktyczne reguły)

Sigma — nieautoryzowane wejścia na SAP RFC Gateway (sieć)

title: Suspicious Access to SAP RFC Gateway (sapgw 33xx) From Untrusted Source
id: 1c9b8f8b-2c0f-4c2b-a8a2-7b2b7b33f9e1
status: experimental
description: Detect inbound connections to SAP RFC Gateway ports (33xx) from non-approved networks
author: Badacz CVE
date: 2025/11/12
logsource:
  category: network_connection
detection:
  selection:
    destination.port|gte: 3300
    destination.port|lte: 3399
    network.direction: inbound
  filter_allowlist:
    source.ip|cidr:
      - 10.0.0.0/8
      - 172.16.0.0/12
      - 192.168.0.0/16
      # uzupełnij o własne sieci i partnerów
  condition: selection and not filter_allowlist
fields:
  - source.ip
  - destination.ip
  - destination.port
  - network.transport
falsepositives:
  - Zdalne serwisy administracyjne w zaufowanych strefach
level: high
tags:
  - attack.T1190
  - attack.T1210

Sigma — egzekucja powłoki z procesów SAP (Windows Sysmon)

title: Shell Spawned by SAP Work/Gateway Process
id: 9e7f4d95-2a8f-4ff0-9f6a-1d0b6e18bb3e
status: experimental
logsource:
  product: windows
  service: sysmon
  definition: Event ID 1 (Process Create)
detection:
  selection:
    EventID: 1
    ParentImage|endswith:
      - '\disp+work.exe'
      - '\gwrd.exe'
      - '\sapstartsrv.exe'
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
  condition: selection
level: high
tags:
  - attack.T1059
  - attack.T1068

Splunk (SPL) — ruch do sapgw i korelacja z hostami SolMan

| tstats count min(_time) as first_seen max(_time) as last_seen 
  from datamodel=Network_Traffic 
  where All_Traffic.dest_port>=3300 All_Traffic.dest_port<=3399 
  All_Traffic.action=allowed 
  All_Traffic.dest IN ($SOLMAN_HOSTS$)
  by All_Traffic.src, All_Traffic.dest, All_Traffic.dest_port
| `drop_dm_object_name("All_Traffic")`
| eval duration=last_seen-first_seen
| where count>=5 OR duration < 60

KQL (Microsoft Sentinel) — CommonSecurityLog / ASIM

let Allowed = dynamic(["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"]);
imNetworkSession
| where DstPort between (3300 .. 3399)
| where not( ipv4_is_in_any_range(SrcIpAddr, Allowed) )
| summarize cnt=count(), firstSeen=min(TimeGenerated), lastSeen=max(TimeGenerated)
          by SrcIpAddr, DstIpAddr, DstPort, NetworkProtocol
| where cnt >= 5 or datetime_diff("minute", lastSeen, firstSeen) <= 1

AWS CloudWatch Logs Insights — VPC Flow Logs (przykład + AWS CLI)

Zapytanie:

fields @timestamp, srcAddr, dstAddr, dstPort, action, bytes
| filter dstPort >= 3300 and dstPort <= 3399 and action = 'ACCEPT'
| stats count() as flows, sum(bytes) as totalBytes, min(@timestamp) as firstSeen, max(@timestamp) as lastSeen by srcAddr, dstAddr, dstPort
| sort by flows desc

CLI:

aws logs start-query \
  --log-group-name /vpc/flowlogs/production \
  --start-time $(date -d '15 minutes ago' +%s) \
  --end-time $(date +%s) \
  --query-string 'fields @timestamp, srcAddr, dstAddr, dstPort, action | filter dstPort >= 3300 and dstPort <= 3399 and action="ACCEPT" | stats count() by srcAddr, dstAddr, dstPort'

Elastic Security — EQL (sieć) i KQL (host)

EQL (sieć):

network where destination.port >= 3300 and destination.port <= 3399
  and not cidrmatch(source.ip, "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16")

KQL (Windows host):

event.code:1 and event.provider:"Microsoft-Windows-Sysmon" and
process.parent.name:( "disp+work.exe" or "gwrd.exe" or "sapstartsrv.exe" ) and
process.name:( "cmd.exe" or "powershell.exe" )

Uzasadnienie doboru portów i usług: SAP RFC Gateway nasłuchuje na 33xx (sapgw<inst>), co potwierdzają oficjalne materiały SAP.


Heurystyki / korelacje (co łączyć)

  • Łańcuch sieć → aplikacja → host: (1) inbound na 33xx z adresów spoza allowlisty → (2) wzrost liczby logonów RFC/odrzuconych autoryzacji S_RFC w SM20 → (3) pojawienie się powłoki/nietykowego procesu potomnego spod disp+work/gwrd.
  • Anomalia kont technicznych: Nagle wzmożone wywołania RFC przez rzadko używany service user lub nowe destynacje SM59.
  • Zmiana zakresu (Scope Changed): aktywność na hostach zarządzanych przez SolMan po zdarzeniu na SolMan (lateral movement).
  • „Public‑facing” vs. „internal”: traktuj SolMan jak krytyczny admin plane – ekspozycja bramy RFC/ICM poza segment IT Ops zwiększa ryzyko T1190/T1210.

False positives / tuning

  • Legitmny monitoring/automaty (np. EEM, integracje, batch) generują stały ruch RFC — whitelistuj znane źródła/VPN/VPC oraz konta S‑user.
  • Działania adminów w oknach serwisowych (SM59 testy, importy) – uwzględnij harmonogramy.
  • W regułach hostowych ogranicz do serwerów roli SolMan ABAP i do procesów rodziców SAP.

Playbook reagowania (kroki + komendy)

Triage

  1. Zweryfikuj podatność: czy Security Note 3668705 jest zaimplementowana (SNOTE), jaka wersja ST 720 SP.
    • Linux: sapcontrol -nr <inst> -function GetVersionInfo | egrep -i "ST *720|SAP BASIS"
    • Windows PowerShell: sapcontrol.exe -nr <inst> -function GetVersionInfo
    • Sprawdź dziennik wdrożeń not SAP.
  2. Zbierz logi: SM20, gw_log/dev_rd, dev_icm; artefakty hostowe (Sysmon/auditd).

Containment

  • Ogranicz ruch: ACL/Firewall – zamknij 33xx spoza allowlisty; jeżeli w chmurze – NSG/SG.
  • Czasowo zablokuj konto użyte w podejrzanych logonach RFC; wymuś rotację haseł/kluczy SNC.

Eradication

  • Natychmiast wdroż poprawkę (Note 3668705).
  • Zweryfikuj i doprecyzuj role S_RFC/S_RFCACL; wymuś SNC/TLS dla RFC.

Recovery + Lessons

  • Testy regresji krytycznych funkcji SolMan; przywróć dostęp etapami; dopisz kontrolę bazową w SIEM.

(Poprawka i opis CVE wg NVD/SAP Patch Day).

Przydatne szybkie komendy (bezpieczne):

# Linux: nasłuchy i procesy SAP
ss -ltnp | egrep ':33[0-9]{2}\s'         # RFC Gateway
ps -ef | egrep 'disp\+work|gwrd|sapstartsrv|icman'

# Windows (PowerShell): połączenia na 33xx
Get-NetTCPConnection -LocalPort 3300..3399 | 
  Select-Object LocalAddress,LocalPort,RemoteAddress,State

Przykłady z kampanii / case studies

  • CVE‑2020‑6207 (SolMan EEM) – publiczny exploit i aktywne skanowanie/exploity w 2021 r.; pełny kompromis agentów SMD. To pokazuje, że CVE w SolMan są szybko wykorzystywane, jeśli nie spatchowane.
  • CVE‑2025‑31324 (NetWeaver Visual Composer) – aktywna eksploatacja RCE w 2025 r.; potwierdzenie, że n‑day SAP bywają na celowniku.

Status CVE‑2025‑42887: na moment 2025‑11‑12 brak publicznych raportów o aktywnej eksploatacji; zalecane działanie jak dla krytycznych RCE (patch + ograniczenie ekspozycji). (Wnioski na podstawie komunikatów prasowych i NVD).


Lab (bezpieczne testy) — przykładowe komendy

Środowisko: izolowane NON‑PROD SolMan 7.2 (ST 720). Testy nie polegają na eksploatacji CVE — służą weryfikacji detekcji.

  1. Wygeneruj zdarzenia RFC (SM59 → „Test connection”) z hosta testowego spoza allowlisty — powinny pojawić się wpisy w SM20 i w logach Gateway.
  2. Symuluj ruch sieciowy
# skan portów sapgw
nmap -Pn -p 3300-3399 <ip_solman>
  1. Sprawdź logi bramy RFC (GWMON → Logs/Traces) i zweryfikuj, że reguły Sigma/SIEM z pkt 7 wyłapują wejścia spoza allowlisty.
  2. Host telemetry (Windows/Linux) – uruchom prosty proces testowy z poziomu SAP (legalne zadanie/rapport), aby potwierdzić, że reguła „shell spawned by SAP” działa — NIE uruchamiaj poleceń wrażliwych.

Mapowania (Mitigations, Powiązane techniki)

Techniki ATT&CK (Enterprise)

  • T1190 – Exploit Public‑Facing Application (jeśli RFC/ICM wystawione publicznie).
  • T1210 – Exploitation of Remote Services (wykorzystanie RFC w sieci wewnętrznej/lateral).
  • T1068 – Exploitation for Privilege Escalation (eskalacja po uzyskaniu wykonania w ABAP/host).
  • T1059 – Command and Scripting Interpreter (ew. wtórne wykonanie poleceń).

Mitigations ATT&CK

  • M1051 – Update Software (wdrożenie SAP Note 3668705/Patch Day).
  • M1030 – Network Segmentation (izolacja SolMan/RFC Gateway; dostęp tylko z sieci admin).
  • M1040 – Behavior Prevention on Endpoint (EDR/ASR na hostach Windows SolMan).

Źródła / dalsza literatura

  • NVD: opis, wektor CVSS, odniesienia do SAP Note 3668705. (NVD)
  • SAP Security Patch Day (listopad 2025): lista not, CVE‑2025‑42887 (CVSS 9.9), produkt/wersja. (SAP Support Portal)
  • BleepingComputer / SecurityWeek: przegląd poprawek SAP, wzmianka o CVE‑2025‑42887. (BleepingComputer)
  • SAP docs — Security Audit Log, RFC Gateway, S_RFC/S_RFCACL, ACL: konfiguracja i logging. (SAP Help Portal)
  • Porty RFC Gateway (33xx): artykuł KBA/Community. (SAP Support Portal)
  • Kontekst kampanii (SolMan/NetWeaver): Onapsis/Tenable/NVD/Darktrace. (Onapsis)

Checklisty dla SOC / CISO

SOC (operacyjne, 24/7):

  • Reguły SIEM na 33xx inbound + korelacja z SM20 i procesami hosta.
  • Watchlist kont S_RFC/S_RFCACL i destynacji SM59.
  • Alarm „shell from disp+work/gwrd”.
  • Dashboard: status wdrożenia Note 3668705 na wszystkich SolMan.

CISO / GRC (strategiczne):

  • Polityka segmentacji – SolMan wyłącznie w strefie admin z dostępem z bastionów.
  • Harmonogram Patch Day SAP + SLA krytycznych poprawek ≤ 7 dni.
  • Przegląd uprawnień RFC (least privilege) + SNC/TLS obowiązkowe.
  • Testy kontrolne: skan ekspozycji (33xx/ICM), przegląd konfiguracji reg_info/sec_info.

CVE-2025-12735 — expr‑eval: RCE przez nieograniczone funkcje w evaluate()

TL;DR

Biblioteka expr‑eval (oraz fork expr‑eval‑fork) pozwala — z powodu niewystarczającej walidacji wejścia — przekazać do evaluate() spreparowany obiekt zmiennych/kontekstu i wywołać dowolne funkcje, co w środowisku Node.js może prowadzić do zdalnego wykonania kodu (RCE). Fork został załatany (v3.0.0); w oryginalnym repo trwa proces patchowania (PR #288, brak wydania). Priorytet: krytyczny dla backendów Node i funkcji serverless korzystających z expr‑eval.


Krótka definicja techniczna

CVE‑2025‑12735 to luka typu CWE‑94 (Improper Control of Generation of Code / Code Injection) w bibliotece expr‑eval, która umożliwia przekazanie własnych funkcji w obiekcie variables/context do evaluate(). Brak restrykcji/allowlisty funkcji pozwala w Node.js dotrzeć do API procesu (np. pośrednio do child_process) i doprowadzić do wykonania komend systemowych.


Gdzie występuje / przykłady platform

  • Aplikacje Node.js (monolity i mikroserwisy) — API, boty, serwery WWW.
  • Serverless: AWS Lambda/Azure Functions/Cloud Run z runtime Node.
  • Kontenery/Kubernetes: obrazy z zależnością expr-eval.
  • Przeglądarka: wpływ ograniczony (brak process/require), nadal możliwe nadużycia logiki/dane.
  • Fork: expr-eval-forkzałatany w 3.0.0.

Szczegółowy opis techniki (jak działa, cele, skuteczność)

expr-eval parsuje i ocenia wyrażenia matematyczne. Luka polega na tym, że funkcje dostępne w czasie ewaluacji nie były odpowiednio ograniczone i można je było wstrzyknąć poprzez obiekt zmiennych (evaluate(vars)), co narusza założenia „bezpiecznej alternatywy dla eval”. W środowisku Node.js skutkiem jest możliwość eskalacji do prymitywów wykonania (np. wywołania interpretera lub komend systemowych), gdy aplikacja przekazuje niezaufane wyrażenia/zmienne do parsera. CERT/CC odnotował wprowadzenie łat poprzez PR #288 (allowlista funkcji, mechanizm rejestracji), a GitHub Advisory formalnie klasyfikuje słabość jako CWE‑94. expr‑eval‑fork 3.0.0 zawiera poprawkę; w oryginalnym repo brak wydanego release’u w momencie publikacji.

Zakres wersji (według GH Advisories):

  • expr-eval ≤ 2.0.2 — podatne; brak opublikowanej wersji naprawczej.
  • expr-eval-fork ≤ 2.0.2 — podatne; naprawiono w 3.0.0.

Ocena ryzyka: CISA‑ADP ocenia na CVSS 9.8 (sieć, brak uprawnień/UI), GitHub na 8.6 (CVSS v4.0); różnica wynika z przyjętego modelu wektorów i założeń dot. kontekstu wykonania.


Artefakty i logi (co szukać)

WarstwaŹródło / IDNa co patrzećPrzykład / wskazówka
WindowsSecurity EID 4688, Sysmon EID 1Dziecko procesu node.execmd.exe/powershell.exe; nietypowe -c//cParentImage = \node.exe, Image = \cmd.exe, CommandLine zawiera /c
Sysmon EID 3Nowe połączenia sieciowe z procesu aplikacji NodeNietypowe dest. IP/AS, brak w allowliście egress
Sysmon EID 11/13Tworzenie/zmiana plików/kluczy rejestru przez node.exeDrop plików w temp/autoruns
Linuxauditd (EXECVE), journaldnode uruchamia sh/bash/python z parametrem -c/usr/bin/node … → /bin/sh -c …
Container/K8sK8s audit (create na pods/exec, ephemeralcontainers)Próby ucieczki/utrzymania kontroli po RCEUżytkownik SA aplikacji inicjuje pods/exec
Cloud (AWS)CloudTrailNietypowe UpdateFunctionCode, CreateFunction, modyfikacje env/secrets przez role aplikacjiKoreluj z IP/UA i oknem incydentu
M365/Entra (po wtórnej kompromitacji)Unified Audit LogConsent to application”, „Add service principal”, „Add app role assignment to service principalWeryfikuj nieoczekiwane zgody/role w czasie incydentu

Detekcja (praktyczne reguły)

Sigma (Windows / Sysmon — „Node → shell”)

title: Suspicious Shell Spawned by Node.js (possible expr-eval abuse)
id: 7b3fbf8c-2c7a-4d37-9b7a-ef3a6c1b57a8
status: experimental
logsource:
  product: windows
  category: process_creation
detection:
  parent_node:
    ParentImage|endswith: '\node.exe'
  child_shell:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
  cli_flags:
    CommandLine|contains:
      - ' /c '
      - ' -c '
  condition: parent_node and child_shell and cli_flags
fields:
  - Image
  - CommandLine
  - ParentImage
falsepositives:
  - Legit. task runners/installer scripts
level: high
tags:
  - attack.t1059.003
  - attack.t1059.001
  - attack.t1203
  - attack.t1190

Splunk (Sysmon EID=1)

index=your_sysmon_index EventCode=1 ParentImage="*\\node.exe"
| search Image="*\\cmd.exe" OR Image="*\\powershell.exe"
| search CommandLine="* /c *" OR CommandLine="* -c *"
| stats count min(_time) max(_time) by Computer, User, ParentImage, Image, CommandLine

KQL (Microsoft Defender for Endpoint)

DeviceProcessEvents
| where InitiatingProcessFileName =~ "node.exe"
| where FileName in~ ("cmd.exe","powershell.exe","bash","sh")
| where ProcessCommandLine has_any (" /c ", " -c ")
| summarize cnt=count(), firstTime=min(Timestamp), lastTime=max(Timestamp)
        by DeviceName, FileName, ProcessCommandLine, InitiatingProcessCommandLine

CloudTrail (CloudWatch Logs Insights)

fields @timestamp, eventSource, eventName, userIdentity.type, userIdentity.arn, sourceIPAddress
| filter eventSource="lambda.amazonaws.com"
  and eventName in ["UpdateFunctionCode","CreateFunction","UpdateFunctionConfiguration"]
| sort @timestamp desc

Cel: wychwycić nieoczekiwane zmiany kodu/konfiguracji funkcji wykonywane przez role/podmioty powiązane z usługą korzystającą z expr-eval.

Elastic EQL

process
  where process.parent.name == "node"
    and process.name in ("cmd.exe","powershell.exe","sh","bash","python")
    and process.args in ("-c","/c","-e")

Heurystyki / korelacje

  • SBOM/SCA ↔ telemetry: stwierdzona zależność expr-eval (<=2.0.2) lub expr-eval-fork (<=2.0.2) + anomalia „Node → shell”.
  • Wzorce ruchu: nagły egress z procesu aplikacji (nowe domeny/ASN) w pobliżu czasu wywołań evaluate().
  • Zmiany w infrastrukturze: CloudTrail UpdateFunctionCode/modyfikacje env/secret po zdarzeniach aplikacji.
  • M365/Entra: niespodziewane „Consent to application” / „Add service principal” po incydencie (możliwa eskalacja OAuth).

False positives / tuning

  • Legit. narzędzia Node uruchamiające powłokę (instalatory, task‑runnery) — obwiedniaj detekcję listą dozwolonych ścieżek/usług, oknem czasowym (CI/CD), użytkownikiem i komendami (blokuj -c poza maintenance).
  • Środowiska dev — wydzielone indeksy/logsource, niższy poziom alertowania.
  • Serwisy, które w ogóle nie powinny odpalać powłoki — alert krytyczny.

Playbook reagowania (IR)

  1. Triaging: korelacja alertu (Node→shell / CloudTrail / M365) + potwierdzenie zależności w SBOM (npm ls expr-eval).
  2. Izolacja: odłącz instancję/poda (K8s: kubectl cordon/drain serwis, tymczasowe NetworkPolicy egress‑deny).
  3. Ograniczanie szkód: rotacja secretów/tokenów używanych przez serwis; w chmurze — blokada roli/aplikacji zaufania.
  4. Forensyka: zachowaj dysk/pamięć, eksportuj dzienniki (Sysmon/auditd/CloudTrail/M365 UAL).
  5. Eradykacja:
    • Migracja do expr-eval-fork 3.0.0 lub wdrożenie łatki po publikacji release oryginału; tymczasowo usuń/wyłącz niestandardowe funkcje i wdroż allowlistę funkcji.
  6. Weryfikacja: testy regresji, monitoring post‑incident (szczególnie „Consent to application” w M365).
  7. Lessons learned: reguły pre‑commit/CI (npm audit, SCA), polityki review zmian zależności.

Przykłady z kampanii / case studies

Na dzień 11 lis 2025 brak potwierdzonej eksploatacji „in the wild”; Tenable klasyfikuje CVE jako „not exploited (being monitored)”. Rekomendowane jest pilne łatanie/migracja.


Lab (bezpieczne testy)

A. Weryfikacja zależności

# sprawdź wersję
npm ls expr-eval expr-eval-fork
# jeżeli obecne i podatne, przygotuj hotfix/migrację (fork 3.0.0)

B. Generowanie sygnałów do reguł (symulacja „Node → shell”)bez użycia luki:

# Linux
node -e "require('child_process').spawn('/bin/sh',['-c','echo ok'],{stdio:'inherit'})"
# Windows (PowerShell)
node -e "require('child_process').spawn('cmd.exe',['/c','echo ok'])"

Następnie zweryfikuj dopasowania: Sysmon EID=1, auditd EXECVE, oraz reguły Sigma/SPL/KQL.

C. K8s/CloudTrail

  • W K8s odpal kubectl auth can-i dla SA serwisu i potwierdź brak uprawnień do pods/exec.
  • W AWS przepuść kontrolowany UpdateFunctionConfiguration (np. dummy tag), aby potwierdzić zadziałanie zapytania CloudWatch Insights.

Mapowania (Mitigations, powiązane techniki)

Mitigations (ATT&CK):

  • M1038 Execution Prevention (application allowlisting, blokada interpreterów w usługach).
  • M1054 Software Configuration (wyłącz/ogranicz niestandardowe funkcje, hardening konfigu).
  • M1045 Code Signing (wymuszaj podpisy/CI deklaratywny deployment).
  • M1047 Audit (regularny audyt zależności i uprawnień).

Powiązane techniki: T1190, T1203, T1059(.003/.004/.007)


Źródła / dalsza literatura

  • NVD: opis, CVSS CISA‑ADP 9.8, referencje (w tym PR #288, npm). (NVD)
  • CERT/CC VU#263614: opis wektora, stan łat (PR #288), identyfikatory (GHSA). (CERT Coordination Center)
  • GitHub Advisory (GHSA‑jc85‑fpwf‑qm7x): zakres wersji podatnych i wersje naprawcze (fork 3.0.0), CWE‑94, CVSS v4.0. (GitHub)
  • PR #288 (silentmatt/expr‑eval): propozycja poprawki (allowlista, testy), status Open. (GitHub)
  • BleepingComputer — materiał prasowy o RCE i rekomendacji migracji do forka. (BleepingComputer)
  • Tenable Research — status „not exploited” (monitorowane). (Tenable®)
  • ATT&CK v18 — wersjonowanie i strony technik. (MITRE ATT&CK)

Checklisty dla SOC / CISO

SOC (operacyjna)

  • Aktywuj/zweryfikuj telemetry: Sysmon (Win), auditd (Linux), K8s Audit, CloudTrail.
  • Wdroż reguły: Sigma/KQL/SPL/EQL z tej noty.
  • Przekrój SBOM/SCA: znajdź expr-eval/expr-eval-fork ≤ 2.0.2.
  • Koreluj „Node → shell” oraz nietypowy egress z procesów aplikacji.
  • Monitoruj M365 UAL pod kątem „Consent to application”/„Add service principal”.

CISO / AppSec (strategiczna)

  • Migracja: expr-eval-fork 3.0.0 lub oczekuj na oficjalny release oryginału (po weryfikacji PR #288).
  • Polityki wejścia: zakaz ewaluacji niezweryfikowanych wyrażeń; allowlista funkcji.
  • CI/CD: blok w PR na dodanie podatnych wersji (SCA), podpisy artefaktów (M1045).
  • Least privilege dla ról chmurowych usług korzystających z expr‑eval; segmentacja egress.
  • Plan IR: playbook z rotacją sekretów i sanityzacją środowiska po incydencie.

Uwaga dot. łat: wg GHSA fork expr‑eval‑fork ma poprawkę w 3.0.0; w oryginalnym expr‑eval trwa proces patchowania (PR #288, w momencie pisania Open). Planiści powinni rozważyć pilną migrację do forka i later ew. powrót po publikacji stabilnego wydania z łatą.

Quantum Route Redirect (QRR): nowa platforma PhaaS do przekierowań, która masowo wykrada dane logowania Microsoft 365

Wprowadzenie do problemu / definicja luki

Badacze opisali nową usługę Phishing-as-a-Service (PhaaS) o nazwie Quantum Route Redirect (QRR), która automatyzuje całą kampanię phishingu – od routingu ruchu po profilowanie ofiar – i uderza w użytkowników Microsoft 365 na całym świecie. Platforma jest dostarczana „pod klucz”, wraz z setkami przygotowanych domen i gotowych szablonów wiadomości (m.in. DocuSign, HR/payroll, płatności, „missed voicemail”, a także QR-code phishing / quishing). Kluczowym elementem QRR jest inteligentne przekierowanie: boty i skanery firmowe trafiają na strony „benign”, a ludzie – na właściwe strony zbierające poświadczenia.


W skrócie

  • Skala: ~1000 domen hostujących QRR, kampanie w 90 krajach, z czego 76% ataków wymierzonych w USA.
  • Wzorzec URL: stały path z /quantum.php oraz charakterystyczne nazewnictwo hostów na zaparkowanych lub skompromitowanych domenach.
  • Omijanie zabezpieczeń: rozróżnianie botów vs. ludzi, przekierowania „czyszczące” dla Secure Email Gateway/ICES, WAF i skanerów URL.
  • Cel: kradzież poświadczeń Microsoft 365 (O365/M365) i przejęcia kont.
  • Trend: rosnąca „platformizacja” phishingu – podobnie do VoidProxy, Darcula, Tycoon2FA.

Kontekst / historia / powiązania

2024–2025 to wyraźna profesjonalizacja PhaaS. Przykładowo:

  • Tycoon2FA upowszechnił AiTM/MFA-bypass poprzez reverse proxy i relaying sesji.
  • Darcula rozwinęła globalną sieć dziesiątek tysięcy domen, celując m.in. w kanały RCS/iMessage i usługi pocztowe na całym świecie.
  • VoidProxy celuje w M365 i Google, również integrując anti-bot oraz obsługę SSO/IdP.

W tym samym czasie dostawcy i organy ścigania dezintegrują wielkie usługi PhaaS – np. RaccoonO365 (przejęto setki domen i kont Cloudflare Workers). To pokazuje, że rynek PhaaS jest dynamiczny: nowi gracze (jak QRR) szybko wypełniają lukę po rozbitych ekosystemach.


Analiza techniczna / szczegóły luki

Łańcuch ataku (TTP)

  1. E-mail phishing z tematami wysokiej konwersji (DocuSign, HR/payroll, płatności, „missed voicemail”, quishing).
  2. Kliknięcie/zeskanowanie prowadzi do centralnego routera QRR.
  3. Korelacja i fingerprinting (m.in. nagłówki, User-Agent, IP/ASN, heurystyki VPN/proxy, timing, headless/browser API).
  4. Rozgałęzienie:
    • Boty/skanery/WAF/SEG/ICESstrony bezpieczne/legit (np. portal firmy), by „udowodnić” nieszkodliwość.
    • Użytkownicylanding phishingowy (M365) z formularzem credential harvesting.
  5. Zbieranie metryk i statystyk w panelu QRR (impressions, wizyty „human” vs. „bot”, geolokacja, przeglądarka/OS).

Wzorce infrastruktury

  • Stały path: obserwowany /quantum.php w ścieżce URL.
  • Hosty: często zaparkowane lub skompromitowane domeny, zwykle z co najmniej dwoma poziomami subdomen. Przykładowy wzorzec (simplified): https://<sub1>.<sub2>.<tld>/<...>/quantum.php?<params> (pełny regex z raportu KnowBe4 obejmuje klastry znaków i krótki TLD).

Dlaczego to działa?

  • Wiele rozwiązań bada URL „at delivery time” – QRR wykorzystuje post-delivery weaponization i dynamiczne redirecty, aby „oczyszczać” link dla silników analitycznych, a ofiary kierować na właściwy cel „time-of-click”.

Praktyczne konsekwencje / ryzyko

  • ATO (Account Takeover) w M365 → dostęp do Exchange/SharePoint/OneDrive, eskalacja do BEC, exfiltracja danych, nadużycia OAuth.
  • Trudniejsza detekcja na warstwie bramki e-mail: pozornie „czyste” linki przy dostarczeniu, realnie szkodliwe przy kliknięciu.
  • Ryzyko reputacyjne i prawne: wycieki PII/PHI, RODO, opóźnienia w procesach (np. HR/finanse).
  • Rosnąca „demokratyzacja” ataku – mniej techniczne grupy osiągają enterprise-grade skuteczność dzięki PhaaS.

Rekomendacje operacyjne / co zrobić teraz

1) Prewencja i twarde policy

  • M365/Defender for Office 365
    • Safe Links z time-of-click i blokowaniem przekierowań.
    • Zasady Anti-Phishing (impersonation prot., mailbox intelligence).
    • MFA odporne na phishing (FIDO2/Windows Hello, Passkeys; unikać OTP/SMS).
  • SEG/ICES/WAF/DNS
    • Włącz analizę łańcucha przekierowań i headless browsing w sandboxie.
    • URL detonation także po dostarczeniu (re-crawl).
    • DNS filtering + bloki na zaparkowane/świeże domeny (kryteria wieku/AS, parking-ASN).
  • Awareness
    • Szkolenia z quishing (skanery QR w telefonach służbowych → open in isolated browser).

Szybkie reguły detekcji (przykłady)

Suricata (HTTP) – wykryj charakterystyczną ścieżkę:

alert http any any -> any any (
  msg:"QRR candidate - quantum.php in path";
  http.uri; content:"/quantum.php"; nocase;
  classtype:trojan-activity; sid:24000101; rev:1;
)

Suricata (PCRE: co najmniej 2 subdomeny + quantum.php)

Uwaga: prosty, heurystyczny przykład (ogranicz nadużycia false positive lokalną listą wyjątków).

alert http any any -> any any (
  msg:"QRR candidate - multi-subdomain + quantum.php";
  http.host; pcre:"/^[^.]+\.[^.]+\.[a-z]{2,}$/Ri";
  http.uri; content:"/quantum.php"; nocase;
  classtype:trojan-activity; sid:24000102; rev:1;
)

Exchange Online PowerShell – blokuj wiadomości zawierające quantum.php w linku (Body/Headers):

Connect-ExchangeOnline

New-TransportRule -Name "Block QRR links" `
  -Priority 0 `
  -Mode Enforce `
  -Comments "Heurystyczna blokada QRR" `
  -MessageContainsWords "quantum.php" `
  -SetSCL 9 `
  -RejectMessageReasonText "Blocked: suspected QRR link"

(Rozważ zamianę na Set-Header X-Quarantine:QRR i bezpieczną kwarantannę, jeśli FP są możliwe.)

Microsoft Defender for Endpoint – prosty wskaźnik domeny/path w Custom Indicators:

  • Indicators → URLs/Domains → Add indicator*/quantum.php* → Action: Block → Scope: All devices → Expiry: 30–60 dni (z przeglądem co tydzień).

Zasada proxy/secure web gateway (np. PAC/SWG) – miękka blokada + coaching:

// fragment PAC
if (shExpMatch(url, "*/quantum.php*")) return "PROXY block.example:8080"; // lub direct: return "REJECT";

Threat hunting (KQL, M365/Defender)

Kliknięcia w podejrzane linki:

EmailUrlInfo
| where Url has "/quantum.php"
| summarize clicks=dcount(ClickRecordId), recipients=dcount(RecipientEmailAddress) by Url, bin(Timestamp, 1d)

Nietypowe logowania po kliknięciu:

let suspectUsers = 
    EmailUrlInfo
    | where Url has "/quantum.php"
    | distinct RecipientEmailAddress;
IdentityLogonEvents
| where AccountUpn in (suspectUsers)
| where Application == "Office 365"
| summarize by AccountUpn, IPAddress, AuthenticationRequirement, ResultType, bin(Timestamp, 1h)

IR playbook (skrót)

  1. Containment: reset haseł + zrywanie sesji (Invalidate Refresh Tokens), wymuszenie re-enrollment MFA FIDO/Passkeys.
  2. Scope: sprawdź OAuth consents, skrzynkę (rules/inbox forwarding), Access Review.
  3. Forensics: timeline z Unified Audit Log, exfil (SharePoint/OneDrive access logs).
  4. Notifications: RODO/klienci, TLP:AMBER do partnerów, CERT krajowy.
  5. Hardening: conditional access, step-up auth, geo-fencing, mailbox protections.

Różnice / porównania z innymi przypadkami

  • QRR vs. Tycoon2FA: Tycoon2FA słynie z AiTM/MFA-bypass (kradzież cookies/sesji). QRR koncentruje się na inteligentnym routingu i maskowaniu przed kontrolami bezpieczeństwa; nie wyklucza to jednak integracji z AiTM w kolejnych iteracjach.
  • QRR vs. Darcula: Darcula skaluje się przez ogrom ekosystemu domen i szablonów (także RCS/iMessage). QRR skaluje się przez centralny router + pre-baked domeny i profiling, aby „wybielić” link dla botów.
  • QRR vs. VoidProxy: oba celują w M365; VoidProxy akcentuje wszechstronny target (także Google/SSO) i mechanizmy anti-bot. QRR wyróżnia powtarzalny wzorzec URL i masowe wykorzystanie zaparkowanych/skompromitowanych domen.

Podsumowanie / kluczowe wnioski

  • QRR to kolejny krok w „produktowej” ewolucji PhaaS: łatwość użycia dla przestępców, trudniejsze życie dla bramek i skanerów.
  • Najszybsze wygrane dla Blue Teamu: time-of-click, detonacja redirectów, reguły na /quantum.php, DNS/WAF heurystyki oraz szkolenia z quishingu.
  • Traktuj pojedyncze IOC (np. path) jako heurystykę, nie „srebrną kulę” – utrzymuj ciągły re-crawl i threat intel sync.
  • Zakładaj, że QRR (i kolejne klony) będą aktywnie ewoluować – w tym w kierunku AiTM/MFA-bypass.

Źródła / bibliografia

  • BleepingComputer: Quantum Route Redirect PhaaS targets Microsoft 365 users worldwide (10 listopada 2025). (BleepingComputer)
  • KnowBe4 Threat Lab: Quantum Route Redirect: Anonymous Tool Streamlining Global Phishing Attack (10 listopada 2025). (blog.knowbe4.com)
  • BleepingComputer: New VoidProxy phishing service targets Microsoft 365, Google accounts (14 września 2025). (BleepingComputer)
  • Proofpoint: Tycoon 2FA: Phishing Kit Being Used to Bypass MFA (9 maja 2024). (Proofpoint)
  • Netcraft: ‘Darcula’ Phishing-as-a-Service… (27 marca 2024). (netcraft.com)

Manassas (VA): zamknięcie szkół MCPS po incydencie cybernetycznym — co wiemy i jak reagować operacyjnie

Wprowadzenie do problemu / definicja incydentu

W niedzielę, 9 listopada 2025 r., dystrykt Manassas City Public Schools (MCPS) w stanie Wirginia poinformował o incydencie cyberbezpieczeństwa, który spowodował zakłócenia łączności i niedostępność systemów telefonicznych. W konsekwencji wszystkie szkoły zostały zamknięte w poniedziałek, 10 listopada, aby umożliwić zespołom IT zabezpieczenie i przywracanie usług. Władze dystryktu podkreśliły, że bezpieczeństwo fizyczne kampusów nie było zagrożone.

Informacja o zamknięciu została odnotowana również przez inne lokalne media, które powołują się na list do rodzin podpisany przez superintendenta dr. Kevina Newmana. Wskazano, że incydent miał miejsce w weekend i jest w toku analizy.


W skrócie

  • Co się stało: incydent cybernetyczny zakłócił pracę systemów sieciowych i telefonicznych MCPS. Szkoły zamknięto w poniedziałek (10.11.2025).
  • Komunikacja: dystrykt przekazał informację rodzinom/uczniom, m.in. kanałami społecznościowymi i mediami lokalnymi; zaznaczono brak zagrożenia dla bezpieczeństwa fizycznego.
  • Status techniczny: trwa przywracanie usług; priorytetem jest odtworzenie łączności i telekomunikacji.
  • Szerszy trend: liczba ataków na sektor edukacji jest wysoka; w 2024 r. odnotowano 116 zaatakowanych dystryktów K-12 w USA, a w 2025 r. branżowe raporty wskazują utrzymującą się presję grup ransomwarowych.

Kontekst / historia / powiązania

Region północnej Wirginii ma świeże doświadczenia z podobnymi zdarzeniami: w sierpniu 2025 r. Manassas Park City Schools (MPCS) ogłosił po incydencie ransomware możliwe naruszenie danych, choć jest to odrębny dystrykt od MCPS (Manassas City). Ten przypadek pokazuje, że lokalna oświata jest celem ciągłej aktywności wrogich grup. (Uwaga: przytaczane wyłącznie jako kontekst regionalny, nie jako powiązanie techniczne.) (

Równolegle, statystyki branżowe (Emsisoft 2024) i przeglądy dla oświaty (K12 Dive 2025) potwierdzają trend zwiększonej liczby incydentów i aktywności grup ransomware w sektorze edukacji.


Analiza techniczna / szczegóły luki

Publicznie dostępne informacje nie wskazują jeszcze na konkretny wektor ataku ani rodzinę malware/ransomware w przypadku MCPS. Poniższa analiza przedstawia najbardziej prawdopodobne ścieżki kompromitacji w K-12 na podstawie aktualnych trendów (do zastosowania przy triage i threat huntingu).

Najczęstsze wektory w K-12 (2024–2025):

  1. Phishing / BEC → uzyskanie poświadczeń do M365/Google Workspace; pivot przez VPN/SSO.
  2. Eksploatacja urządzeń brzegowych (VPN, SSL-VPN, bramy EDR/MDM, appliance’y backupu) — historycznie podatne m.in. na łańcuchy w Fortinet/Ivanti/Citrix, wykorzystywane do inicjalnego foothold.
  3. Zdalny dostęp (RDP/AnyDesk/ScreenConnect) bez MFA lub z wyciekami haseł.
  4. Łańcuch dostaw (konta dostawców SIS/edtech, MDM, zewnętrzni konsultanci).
  5. Shadow IT / błędna konfiguracja — nadmierne uprawnienia, brak Conditional Access, brak segmentacji.

Wskaźniki taktyk (TTP) obserwowane typowo przy atakach na szkoły:

  • Discovery: net group /domain, nltest /dclist, enumeracja Azure AD przez Graph/PowerShell.
  • Lateral movement: SMB/RDP, PSRemoting, lsassy, Impacket (wmiexec.py, smbexec.py), kradzież tokenów OAuth.
  • Persistence: rejestracje aplikacji w Entra ID, dodanie kluczy w HKLM\Software\Microsoft\Windows\CurrentVersion\Run, Scheduled Tasks GPO.
  • Impact: szyfrowanie na serwerach plików i NAS, wyłączenie EDR/AV przez tampering, voice/VoIP DoS i telefonia niedostępna (zbieżne z symptomami MCPS).

Szybkie testy hipotez (blue team) — przykładowe komendy/artefakty:

  • Entra ID – nietypowe logowania i aplikacje: # Ostatnie rejestracje aplikacji (podejrzana persystencja) Get-AzureADApplication -All $true | Sort-Object CreationDate -Descending | Select DisplayName, AppId, CreationDate | Select -First 20 # Nieudane logowania i MFA failures z ostatnich 24h Search-UnifiedAuditLog -StartDate (Get-Date).AddDays(-1) -EndDate (Get-Date) ` -Operations UserLoginFailed,UserLoggedIn | Where-Object {$_.UserId -like "*@mcpsva.org"} | Select CreationDate, UserId, ClientIP, Operation
  • Windows – skoki uprawnień i zdalne wykonywanie: Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4672,4624,4673,4688; StartTime=(Get-Date).AddDays(-1)} | Where Message -match 'SeDebugPrivilege|New Logon|Process Name:\s+(?:psexec|wmic|powershell|cmd)' | Select TimeCreated, Id, ProviderName, Message
  • Sieć – skan ruchu lateralnego (SMB/RDP) między strefami: # Ze sniffera w rdzeniu (przykładowo Zeek): zeek -Cr core.pcap local "Site::local_nets += { 10.0.0.0/8 }" # Szukaj anomalii: liczne połączenia 445/TCP i 3389/TCP do wielu hostów w krótkim czasie

Praktyczne konsekwencje / ryzyko

  • Operacyjne: brak łączności i telefonii = utrudniona komunikacja kryzysowa, absencje, transport, opieka nad uczniami ze specjalnymi potrzebami. (W MCPS odnotowano niedostępność telefonów i sieci).
  • Prywatność: szkoły przechowują PII (uczniowie, rodzice, pracownicy). Przy atakach ransomware typowy jest double-extortion (exfiltracja + szyfrowanie).
  • Ryzyko systemowe: powiązania z edtech/SIS/transport/żywienie; możliwe „kaskady” awarii przez konta dostawców.
  • Trend makro: 2024 r. — 116 dotkniętych dystryktów K-12 w USA (Emsisoft). 2025 r. — doniesienia branżowe wskazują utrzymującą się, wysoką presję na oświatę K-12.

Rekomendacje operacyjne / co zrobić teraz

Poniższa lista jest uporządkowana wg priorytetu (T+0h → T+72h). Zaprojektowana z myślą o realiach K-12: ograniczone zasoby, mieszanka on-prem + M365/Google, krytyczne usługi VoIP/SIS.

T + 0–6 h: stabilizacja i komunikacja

  1. Izoluj segmenty z symptomami (VoIP, sieć wewnętrzna, serwery plików). Wymuś network isolation na hostach podejrzanych z poziomu EDR.
  2. „War room” + plan komunikacji (kanały alternatywne: SMS, radio, analogowe linie awaryjne).
  3. Zbierz dowody lotne (listy procesów, tabelę ARP, połączenia sieciowe, tokeny OAuth w M365).
  4. Zaktualizuj baner statusowy na www i social (prosty, faktograficzny, bez spekulacji).

T + 6–24 h: containment techniczny

  1. Reset/MFA dla kont uprzywilejowanych i kont z logowaniami zza granicy.
  2. Wymuś Conditional Access: blokada logowań spoza kraju, „require compliant device”, „block legacy auth”.
  3. Zamknij RDP zewnętrzny, ogranicz VPN do „per-app” i tylko wybranych ról; rozdziel dostęp konsultantów.
  4. Przegląd urządzeń brzegowych (VPN/NGFW/WAF/Ivanti/Citrix) — weryfikacja wersji/popułapek znanych CVE, natychmiastowe patche lub „virtual patching” regułami IPS.
  5. Snapshoty i backup offline systemów krytycznych (SIS, finanse, HR, transport).

T + 24–72 h: eradication i przywracanie

  1. Hunt TTP: nietypowe aplikacje w Entra ID/Google, nowe klucze API, zaufane lokalizacje, rejestracje MFA.
  2. Rotacja sekretów: klucze SSO/SAML, hasła kont usługowych, poświadczenia do NAS/backup.
  3. Przywracanie etapami (najpierw VoIP i łączność, następnie SIS/gradebook; przepuść przez „strefę kwarantanny”).
  4. Edukacja incydentalna: ostrzeż rodziców/pracowników przed phishingiem „na reset hasła” i podszyciami pod szkołę.

Twarde kontrole (konfiguracja):

  • M365/Entra ID (przykład polityki CA — pseudokod): IF user IN "Admins, Staff" THEN Require: MFA (phishing-resistant), Compliant Device, Known Location Block: Legacy Authentication, TOR/Hosting ASN ELSE IF user IN "Vendors" THEN Require: MFA + Device Compliance OR VDIs Restrict: App-Enforced Restrictions, Session Timeout <= 2h
  • Segregacja sieci (SDA/VLAN):
    • Uczniowie ≠ Nauczyciele ≠ Administracja ≠ VoIP ≠ OT (HVAC/kamery).
    • ACL: VoIP ↔ Call Manager only, brak SMB poza strefą serwerową, deny any RDP między stacjami.
  • Backup: 3-2-1, immutability (S3 Object Lock, WORM na NAS), testy odtworzeniowe co najmniej raz/kwartał.
  • E-mail security: post-delivery remediation, link-safe, DMARC p=reject, BEC-rules hunting (forwarding, create-rules).

Gotowce komunikacyjne (szablon dla K-12)

  • Krótki komunikat dla rodzin: „Mieliśmy incydent cyberbezpieczeństwa. Z ostrożności zamykamy szkoły dnia X. Nie ma oznak zagrożenia fizycznego. Pracujemy nad przywróceniem łączności i telefonii. Kolejna aktualizacja o HH:MM.” (Zbieżne z tym, co przekazano w MCPS).

Różnice / porównania z innymi przypadkami

  • MCPS (listopad 2025): wczesna faza, brak potwierdzenia typu malware; główne skutki to telefony i łączność → decyzja o zamknięciu szkół w poniedziałek.
  • MPCS (sierpień 2025): potwierdzony ransomware i potencjalna ekspozycja PII (listy z informacjami o danych objętych ryzykiem). Przypadek innego dystryktu, ale geograficznie bliskiego.

Podsumowanie / kluczowe wnioski

  • MCPS padł ofiarą incydentu, który zakłócił kluczowe usługi IT/telekom — z ostrożności zdecydowano o jednodniowym zamknięciu szkół (10.11). Faktyczny wektor ataku nie został jeszcze ujawniony.
  • Skala zagrożeń dla K-12 utrzymuje się na wysokim poziomie; trend wzrostowy potwierdzają raporty i przeglądy branżowe.
  • Dla dystryktów najważniejsze jest szybkie ograniczenie szkód, twarde kontrole tożsamości i segmentacja, a także przygotowane z wyprzedzeniem szablony komunikacyjne.

Źródła / bibliografia

  1. WJLA (7News): „Manassas City Public Schools close on Monday due to cyberattack” — informacja o zamknięciu szkół, zakłócenia łączności i telefonii, komunikat superintendenta. (WJLA)
  2. FOX5 DC: „Cyberattack closes Manassas City Public Schools on Monday” — list do rodzin z 9 listopada, podkreślenie braku zagrożenia fizycznego. (FOX 5 DC)
  3. WUSA9: „Cybersecurity investigation closes Manassas City Public Schools Monday” — zbieżne informacje o przyczynach zamknięcia i harmonogramie. (wusa9.com)
  4. MCPS — kanał oficjalny (Facebook): komunikat o zamknięciu i działaniach przywracających usługi. (Facebook)
  5. Emsisoft (raport): „The State of Ransomware in the U.S. — 2024” — dane statystyczne nt. liczby zaatakowanych dystryktów K-12. Uzupełniająco: K12 Dive (2025) o częstotliwości ataków w edukacji. (Emsisoft)

CVE-2013-1493 — Oracle Java SE (2D/CMM) RCE przez obraz rastrowy

TL;DR

Krytyczna luka w Java SE 5/6/7 (moduł 2D/CMM) umożliwia zdalne wykonanie kodu przy przetwarzaniu spreparowanego obrazu rastrowego w aplecie/Java Web Start. W 2013 r. była aktywnie wykorzystywana w kampaniach drive‑by (np. pakiety exploitów), a Oracle załatał ją w JRE/JDK 7u17 i 6u43. Dla SOC mapujemy to na T1189 (wejście przez stronę WWW) oraz T1203 (eksploatacja klienta). Zalecane: odinstalować wtyczkę Java w przeglądarkach (legacy), wymusić aktualizacje, monitorować łańcuch browser → java.exe → LOLBIN.


Krótka definicja techniczna

CVE‑2013‑1493 to błąd w Color Management (CMM) komponentu Java 2D, który przy przetwarzaniu obrazu o specjalnie przygotowanych parametrach rastra powoduje odczyt poza buforem i/lub uszkodzenie pamięci JVM, co umożliwia RCE przez aplet/Java Web Start w przeglądarce. CVSS v2: 10.0 (AV:N/AC:L/Au:N/C:C/I:C/A:C).


Gdzie występuje / przykłady platform

  • Endpointy z przeglądarką i wtyczką Java: Windows, macOS, Linux (w 2013 r. powszechne; dziś przeważnie legacy/ICS/offline).
  • Środowiska VDI/kioski z dziedziczonymi aplikacjami Web Start.
  • Nie dotyczy bezpośrednio serwerów (Oracle: luka dotyczy Javy uruchamianej w przeglądarce).

Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)

Atakujący umieszcza na stronie WWW (lub w pakiecie exploitów) aplet/Java Web Start wczytujący obraz z nietypowymi parametrami rastra. Podczas renderowania w module Java 2D/CMM dochodzi do naruszenia pamięci JVM → przekazanie sterowania do złośliwego payloadu. W typowym łańcuchu drive‑by użytkownik odwiedza stronę (często watering hole), przeglądarka ładuje wtyczkę Java, a po eksploatacji następuje pobranie i uruchomienie kolejnego modułu (np. downloader), często z wykorzystaniem systemowych LOLBIN‑ów (cmd.exe, powershell.exe, rundll32.exe). Oracle podkreślał, że lukę należy traktować jako dotyczącą Javy w przeglądarkach (nie serwerowej).

Dlaczego skuteczna (historycznie):

  • masowa ekspozycja wtyczki Java w przeglądarkach;
  • niska interakcja użytkownika (często brak – lub akceptacja ostrzeżenia);
  • natychmiastowe przejście do Execution po Initial Access (ATT&CK).

Artefakty i logi

ŹródłoID / typCo obserwowaćWskazówki
Windows Security4688 (Process Create)java.exe/javaw.exe/javaws.exe jako dziecko chrome.exe/msedge.exe/firefox.exe/iexplore.exeNietypowe dziś; silnie podejrzane w 2025 r.
Sysmon1 (Process Create)java*.exe → uruchamia cmd.exe/powershell.exe/wscript.exe/rundll32.exe/mshta.exeŁańcuch post‑eksploatacyjny
Sysmon3 (Network Connect), 22 (DNS)Połączenia HTTP(S) zaraz po starcie java.exe do nieznanych domen; rzadkie SNI/JA3Korelować z Proxy/NGFW
Sysmon7 (ImageLoad)Dynamiczne DLL do Javy ładowane z %TEMP%/%APPDATA%Droppery
Sysmon11 (FileCreate)Nowe JAR/EXE/DLL w profilach użytkownikaArtefakty post‑eksploatacyjne
Proxy/HTTPPobrania .jar/.class/MIME application/java-archive, stare typy application/x-java-appletWzorzec drive‑by
EDR (MDE/SentinelOne/itp.)Reguły behawioralne: przeglądarka → Java → LOLBIN → siećKorelacje
CloudTrail (S3 data events)GetObjectPobrania .jar/.class z bucketów spoza allowlistyDetekcja hostingu artefaktów
K8s audit[N/D] — luka dot. klienta przeglądarkowego
M365 Audit[N/D] — brak bezpośredniego śladu

Detekcja (praktyczne reguły)

Sigma (Windows / Sysmon)

title: Browser-Spawns-Java-And-Java-Spawns-LOLBIN (CVE-2013-1493 TTP)
id: 9b9a6e2f-9a1c-4bde-b3d9-13d313493000
status: experimental
logsource:
  product: windows
  category: process_creation
detection:
  browser_parent:
    ParentImage|endswith:
      - '\chrome.exe'
      - '\msedge.exe'
      - '\firefox.exe'
      - '\iexplore.exe'
  java_proc:
    Image|endswith:
      - '\java.exe'
      - '\javaw.exe'
      - '\javaws.exe'
  lolbin_child:
    ParentImage|endswith:
      - '\java.exe'
      - '\javaw.exe'
      - '\javaws.exe'
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\rundll32.exe'
      - '\mshta.exe'
  condition: (browser_parent and java_proc) or lolbin_child
fields:
  - UtcTime
  - Image
  - ParentImage
  - CommandLine
  - ParentCommandLine
falsepositives:
  - Rzadkie, legacy Web Start / środowiska deweloperskie
level: high
tags:
  - attack.T1189
  - attack.T1203

Splunk (SPL)

1) Przeglądarka → Java

index=sysmon sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational EventCode=1
| where mvfind(["chrome.exe","msedge.exe","firefox.exe","iexplore.exe"], lower(coalesce(ParentImage,ParentImage)))>=0
| where like(lower(Image), "%\\java.exe") OR like(lower(Image), "%\\javaw.exe") OR like(lower(Image), "%\\javaws.exe")
| stats earliest(_time) as firstSeen latest(_time) as lastSeen values(CommandLine) by Computer, User, ParentImage, Image, ParentCommandLine

2) Java → podejrzany LOLBIN / łańcuch procesu

index=sysmon EventCode=1 (Image="*\\cmd.exe" OR Image="*\\powershell.exe" OR Image="*\\wscript.exe" OR Image="*\\rundll32.exe" OR Image="*\\mshta.exe")
| join ProcessGuid type=inner [
  search index=sysmon EventCode=1 (Image="*\\java.exe" OR Image="*\\javaw.exe" OR Image="*\\javaws.exe")
  | table ProcessGuid, Computer, User, Image, ParentImage, CommandLine, ParentCommandLine, _time
]
| table _time, Computer, User, ParentImage, Image, CommandLine, ParentCommandLine

KQL (Microsoft Defender/Sentinel)

// Browser -> Java
DeviceProcessEvents
| where InitiatingProcessFileName in~ ("chrome.exe","msedge.exe","firefox.exe","iexplore.exe")
| where FileName in~ ("java.exe","javaw.exe","javaws.exe")
| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, InitiatingProcessCommandLine, AccountName

// Java -> LOLBIN within 2 min
let suspiciousChildren = dynamic(["cmd.exe","powershell.exe","wscript.exe","rundll32.exe","mshta.exe"]);
DeviceProcessEvents
| where InitiatingProcessFileName in~ ("java.exe","javaw.exe","javaws.exe")
| join kind=inner (
    DeviceProcessEvents
    | where FileName in~ (suspiciousChildren)
    | project ChildTime=Timestamp, DeviceId, ChildFile=FileName, ChildCmd=ProcessCommandLine, InitiatingProcessParentId
) on DeviceId, InitiatingProcessId==InitiatingProcessParentId
| where ChildTime between (Timestamp .. Timestamp + 2m)
| project DeviceName, Timestamp, ChildTime, InitiatingProcessFileName, ChildFile, ChildCmd

CloudTrail query (CloudWatch Logs Insights – S3 Data Events)

Użyteczne, gdy wykrywamy hostowanie artefaktów JAR/CLASS w S3 (częsty etap w kampaniach drive‑by).

fields @timestamp, eventSource, eventName, requestParameters.bucketName, requestParameters.key, sourceIPAddress, userAgent
| filter eventSource = "s3.amazonaws.com" and eventName = "GetObject"
| filter requestParameters.key like /\.jar$/ or requestParameters.key like /\.class$/
| filter ispresent(userAgent) and (userAgent like 'Mozilla%' or userAgent like '%Java%')
| sort @timestamp desc

Elastic / EQL (Endpoint)

// Java spawns LOLBIN
process where
  process.name in ("cmd.exe","powershell.exe","wscript.exe","rundll32.exe","mshta.exe") and
  parent.process.name in ("java.exe","javaw.exe","javaws.exe")

Heurystyki / korelacje

  • Łańcuch czasowy: browser → java.exe → LOLBIN → outbound HTTP(S)/DNS w krótkim oknie (≤2 min).
  • Pliki tymczasowe: nowe .jar/.dll/.exe w %TEMP%, %APPDATA%, ~/Library/Application Support.
  • Proxy/NGFW: nagłe pobrania JAR/CLASS z rzadkich domen → brak wcześniejszej reputacji.
  • EDR: zastrzyk modułów do JVM spoza katalogów Javy; Java jako nietypowy rodzic skryptów/LOLBIN‑ów.
  • Reputacja/Threat Intel: korelacja domen/IP z historycznymi pakietami exploitów (Blackhole/Sweet Orange itd.).

False positives / tuning

  • Legitymne środowiska Web Start/IcedTea‑Web (intranety, ICS) — białe listy domen/aplikacji.
  • Deweloperzy Javy uruchamiający narzędzia buildujące z przeglądarki.
  • W 2025 r. każde uruchomienie wtyczki Java w przeglądarce jest podejrzane; tuning opierać na allowlistach domen i podpisów plików JAR.

Playbook reagowania (IR)

  1. Triage i izolacja: odłącz host, zachowaj pamięć/dysk (artefakty JVM).
  2. Zbieranie faktów: drzewo procesów od przeglądarki do java*.exe, następnie do LOLBIN‑ów; zrzut listy modułów JVM; lista nowo utworzonych plików.
  3. Sieć: zablokuj domeny/sumy SHA256 pobranych JAR/EXE; sprawdź proxy dla innych ofiar.
  4. Eskalacja/przeciwdziałanie:
    • odinstaluj/wyłącz plugin Java;
    • wymuś aktualizacje do JRE/JDK 7u17/6u43 na hostach legacy; rozważ całkowite usunięcie Javy z przeglądarek.
  5. Hunting retro (30–90 dni): wzorce pobrań .jar/.class, łańcuchy browser → Java → LOLBIN.
  6. Lessons learned: polityka click‑to‑play / blokada wtyczek, patch management, segmentacja egress.

Przykłady z kampanii / case studies

  • Blackhole i inne pakiety exploitów (2013) szeroko nadużywały luk w Javie, w tym CVE‑2013‑1493, do drive‑by download i pobierania malware.
  • Detekcje vendorów (MSFT) klasyfikowały ruch jako Exploit:Java/CVE‑2013‑1493 – wejście przez stronę WWW, następnie pobranie i uruchomienie plików.

Lab (bezpieczne testy) — przykładowe komendy

Wyłącznie w odizolowanym, testowym środowisku (VM, brak Internetu). Celem jest wygenerowanie artefaktów detekcyjnych, nie eksploatacja luki.

A. Symulacja łańcucha browser → Java

  1. Otwórz w przeglądarce lokalny plik HTML z linkiem jnlp (pusty, benigny) albo uruchom:
# Windows (zainstalowana Java): symulacja startu Java z procesu użytkownika
Start-Process -FilePath "$env:ProgramFiles\Google\Chrome\Application\chrome.exe" -ArgumentList "about:blank"
Start-Sleep -Seconds 2
Start-Process -FilePath "C:\Program Files\Java\jre\bin\javaw.exe" -ArgumentList "-version"
  1. Sprawdź, czy reguły Sigma/Splunk/KQL łapią „browser → javaw.exe”.

B. Java → LOLBIN (benigny helper)
Utwórz prosty JAR uruchamiający notepad (tylko logówka):

# Linux/macOS (analogicznie w Windows z javac)
cat > Runner.java << 'EOF'
public class Runner {
  public static void main(String[] args) throws Exception {
    new ProcessBuilder("notepad.exe").start(); // na *nix np. "xcalc"
  }
}
EOF
javac Runner.java && jar cfe runner.jar Runner Runner.class
# Uruchom:
java -jar runner.jar

Oczekiwany artefakt: java.exe → notepad.exe (LOLBIN), co powinno trafić w reguły.


Mapowania (Mitigations, powiązane techniki)

Mitigations (ATT&CK):

  • M1051 – Update Software (patchowanie Javy; eliminacja wtyczki/legacy)
  • M1031 – Network Intrusion Prevention (blok sygnatur exploit‑kit/JAR)
  • M1040 – Behavior Prevention on Endpoint (EDR/anty‑exploit)
  • M1017 – User Training (świadomość ryzyk apletów/ostrzeżeń przeglądarki)

Powiązane techniki:

  • T1189 Drive‑by Compromise (wejście)
  • T1203 Exploitation for Client Execution (RCE w kliencie)
  • T1204.002 User Execution: Malicious File (czasem wymagane kliknięcie/akcept)
  • T1059 Command and Scripting Interpreter (następstwa)

Źródła / dalsza literatura

  • Oracle Security Alert (zakres: dotyczy Javy w przeglądarkach; wersje naprawcze 7u17/6u43) (Oracle)
  • Oracle JDK 7u17 Release Notes (baseline wersji z poprawką) (Oracle)
  • NVD CVE‑2013‑1493 (opis techniczny, CVSS 10.0, „exploited in the wild”) (NVD)
  • CISA Alert: Oracle Java Contains Multiple Vulnerabilities (wersje podatne i zalecenia) (CISA)
  • Microsoft WDSI – Exploit:Java/CVE‑2013‑1493 (mechanika ataku przez WWW) (Microsoft)
  • McAfee Labs (pakiety exploitów wykorzystywały m.in. CVE‑2013‑1493) (McAfee)
  • ATT&CK – T1189 / T1203 / TA0001 / TA0002 / v18 updates (mapowanie technik i wersja ATT&CK) (MITRE ATT&CK)

Checklisty dla SOC / CISO (krótko)

SOC (operacyjne):

  • Włączone logi: Sysmon (1/3/7/11/22), Security 4688, EDR z korelacją rodzic‑dziecko.
  • Reguły: „browser → java.exe”, „java.exe → LOLBIN”, pobrania .jar/.class.
  • Blokady: domeny/URL z kampanii, Content‑Type application/java-archive.
  • Hunting retro: 30–90 dni w proxy/EDR pod kątem JAR/CLASS + łańcuch procesów.
  • Alerting na dowolne uruchomienie wtyczki Java w przeglądarce (2025).

CISO (strategiczne):

  • Eliminacja wtyczek Java (NPAPI) w organizacji; akceptacja wyjątków tylko czasowa.
  • Polityka patchowania: min. 7u17/6u43 na systemach legacy lub migracja/wycofanie.
  • EDR z prewencją behawioralną (M1040) i IPS przy egress (M1031).
  • Program świadomości (M1017) dot. apletów/ostrzeżeń przeglądarki.


Uwaga o ryzyku: Choć wtyczka Java jest powszechnie wycofana we współczesnych przeglądarkach, luka ma znaczenie historyczne, a wewnętrzne środowiska legacy (np. ICS/offline) mogą wciąż generować analogiczne ścieżki ataku.
Rekomendacja: najlepiej całkowicie usunąć wtyczkę Java z przeglądarek i ograniczyć Javę do aplikacji lokalnych z aktualną wersją JVM.