Archiwa: Windows - Strona 53 z 68 - Security Bez Tabu

Systemy Biometryczne: Architektura, Podatności i Zabezpieczenia

Czym są systemy biometryczne?

Systemy biometryczne wykorzystują cechy fizyczne lub behawioralne do identyfikacji i uwierzytelniania osób. Biometria obejmuje m.in. cechy fizjologiczne (twarz, tęczówka, odcisk palca, geometria dłoni, siatkówka oka) oraz behawioralne (głos, podpis odręczny, chód, sposób pisania na klawiaturze). W odróżnieniu od tradycyjnych metod (hasła, PIN-y, karty dostępu), cech biometrycznych nie da się zgubić ani zapomnieć, a próby oszukania systemu przez wykradzenie cech są trudniejsze – przynajmniej w teorii.

Czytaj dalej „Systemy Biometryczne: Architektura, Podatności i Zabezpieczenia”

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ą.

CVE-2025-55177 — WhatsApp (iOS/macOS): niepełna autoryzacja komunikatów synchronizacji urządzeń połączonych

TL;DR

CVE‑2025‑55177 to błąd niepełnej autoryzacji w mechanizmie „Linked devices” WhatsAppa (iOS/macOS), który pozwalał niepowiązanemu napastnikowi wymusić przetwarzanie treści spod dowolnego URL na urządzeniu ofiary. Sam w sobie ma umiarkowane CVSS (5.4), ale w łańcuchu z iOS/macOS ImageIO (CVE‑2025‑43300) mógł prowadzić do zero‑click RCE i instalacji spyware w silnie ukierunkowanych kampaniach. Zalecane: aktualizacja WhatsApp ≥ 2.25.21.73 (iOS) / 2.25.21.78 (Business iOS, Mac), włączenie Lockdown Mode dla użytkowników wysokiego ryzyka, przegląd urządzeń połączonych, telemetria sieciowa dla procesu WhatsApp.


Krótka definicja techniczna

Luka wynika z CWE‑863: Incorrect Authorization – niekompletne sprawdzenia uprawnień dla komunikatów synchronizacji urządzeń połączonych w WhatsApp. Skutkiem było wywołanie przez napastnika przetwarzania zdalnej zawartości (arbitrary URL) na urządzeniu ofiary, co w praktyce umożliwiało „podrzucenie” potencjalnie szkodliwej treści parserom systemowym (np. ImageIO).


Gdzie występuje / przykłady platform

  • iOS/iPadOS: WhatsApp < 2.25.21.73, WhatsApp Business < 2.25.21.78 (iPhone/iPad).
  • macOS: WhatsApp < 2.25.21.78.
  • Inne środowiska (Windows, AD, AWS, Azure, GCP, K8s, ESXi, M365): brak bezpośredniego wpływu; obserwacje i detekcje mogą jednak korzystać z SIEM/XDR w tych domenach (np. Microsoft Defender XDR, Elastic). [brak natywnego telemetry w CloudTrail/K8s/M365 dla tej luki]

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

Mechanizm Linked devices w WhatsApp umożliwia synchronizację danych czatu między urządzeniem głównym a urządzeniami wtórnymi. W CVE‑2025‑55177 brakowało pełnej autoryzacji wiadomości synchronizacyjnych, przez co osoba niepowiązana mogła spowodować, że klient pobrał/przetworzył treść z arbitralnego URL. W połączeniu z CVE‑2025‑43300 (ImageIO) – zero‑day w parserze obrazów Apple – przetworzona treść mogła wyzwolić korupcję pamięci i wykonanie kodu bez interakcji użytkownika (zero‑click), co zaobserwowano w kampanii ukierunkowanej na ograniczoną liczbę ofiar (≤200). Skuteczność wynika z połączenia: (1) braku UI (brak kliknięcia), (2) „legitymizacji” ruchu przez aplikację zaufaną oraz (3) łańcuchowania z podatnością systemową.


Artefakty i logi

Źródło / ArtefaktPlatformaPrzykład pól/EIDCo szukaćŚcieżka/Notatka
Unified Logs (OSLog)macOSprocess, eventMessage, subsystemWejścia procesu WhatsApp tuż przed crash/alertem, wzmianki o ImageIO, nietypowe URLPrzegląd przez Console.app lub log show; crashy szukaj w DiagnosticReports.
Crash ReportsmacOSRaport .crashCrashe procesu WhatsApp z ramkami ImageIO/CFNetwork~/Library/Logs/DiagnosticReports/ oraz /Library/Logs/DiagnosticReports/.
sysdiagnose / logarchiveiOS/macOSlogarchiveChronologia zdarzeń WhatsApp/CFNetwork, domeny zdalneGenerowanie sysdiagnose i analiza system_logs.logarchive.
Microsoft Defender XDRmacOS/iOS (MTD)DeviceNetworkEvents (RemoteUrl, InitiatingProcessFileName)Połączenia WhatsApp do domen spoza allowlisty (np. *.whatsapp.com/.net, *.fbcdn.net, *.facebook.com)Schemat Advanced Hunting.
Elastic / ECSmacOSevent.category: network, process.name, destination.domainNietypowe domeny pochodzące od procesu WhatsAppEQL/Detection rules.
MDM (Jamf/itd.)iOSinwentarz wersji appWersje < 2.25.21.73/78Procedury zbierania sysdiagnose / inwentarz aplikacji.
CloudTrail / K8s audit / M365Nie dotyczy bezpośrednio (aplikacja kliencka na iOS/macOS)[brak danych / poza zakresem]

Detekcja (praktyczne reguły)

Uwaga: reguły są defensywne i mają charakter wzorców do tuningu pod własne źródła logów; nie opisują sposobu nadużycia.

Sigma

title: WhatsApp connects to non-owned domains (macOS)
id: 5e7f6c7a-1b0b-4b1a-a1c3-WhatsApp-NonOwnedDomains
status: experimental
description: Detects WhatsApp initiating network connections to domains outside known Meta/WhatsApp CDNs which may indicate CVE-2025-55177 abuse chain.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2025-55177
  - https://www.whatsapp.com/security/advisories/2025
logsource:
  category: network_connection
  product: macos
detection:
  selection:
    ProcessName|contains:
      - "WhatsApp"
  filter_allowed_domains:
    DestinationDomain|endswith:
      - ".whatsapp.com"
      - ".whatsapp.net"
      - ".fbcdn.net"
      - ".facebook.com"
  condition: selection and not filter_allowed_domains
fields:
  - DestinationIp
  - DestinationPort
  - DestinationDomain
  - ProcessName
level: medium
tags:
  - attack.T1658
  - attack.T1203

Wymagane dopasowanie pól do źródeł w Twoim SIEM; logsource i pola zgodne z konwencją Sigma.

Splunk (SPL)

index=endpoint OR index=network
| eval pname=coalesce(process_name, process, Image, InitiatingProcessFileName)
| search pname="WhatsApp" OR pname="WhatsApp Helper"
| eval domain=coalesce(dest_domain, DestinationHostname, url, RemoteUrl)
| where NOT (like(domain, "%.whatsapp.com") OR like(domain, "%.whatsapp.net")
             OR like(domain, "%.fbcdn.net") OR like(domain, "%.facebook.com"))
| stats values(domain) as domains, dc(domain) as uniq by host, pname, dest_ip, dest_port
| where uniq>0

KQL (Microsoft Defender XDR – Advanced Hunting)

DeviceNetworkEvents
| where InitiatingProcessFileName in~ ("WhatsApp", "WhatsApp Helper")
| where isnotempty(RemoteUrl)
| where not(
    RemoteUrl endswith ".whatsapp.com" or
    RemoteUrl endswith ".whatsapp.net" or
    RemoteUrl endswith ".fbcdn.net" or
    RemoteUrl endswith ".facebook.com")
| summarize count(), make_set(RemoteUrl, 10) by DeviceName, bin(Timestamp, 1h)

Pola i tabela zgodne z dokumentacją DeviceNetworkEvents.

CloudTrail query (AWS CLI/CloudWatch)

Nie dotyczy bezpośrednio. Jeśli jednak Twoja organizacja loguje ruch proxy do CloudWatch (np. ALB/CloudFront), zastosuj CloudWatch Logs Insights dla dzienników HTTP, filtrując UA/hosty procesu WhatsApp — przykład do adaptacji:

fields @timestamp, @message
| filter @message like /WhatsApp/ and not @message like /whatsapp\.com|whatsapp\.net|fbcdn\.net|facebook\.com/
| sort @timestamp desc
| limit 100

Elastic / EQL

network where
  process.name == "WhatsApp" and
  not (destination.domain matches "*.whatsapp.com" or
       destination.domain matches "*.whatsapp.net" or
       destination.domain matches "*.fbcdn.net" or
       destination.domain matches "*.facebook.com")

Składnia i kontekst EQL wg dokumentacji Elastic.


Heurystyki / korelacje

  • Sekwencja czasowa: (a) nietypowe połączenie WhatsApp → obca domena → (b) crash/restart aplikacji lub wpisy ImageIO/CFNetwork → (c) ostrzeżenia MTD/XDR nt. anomalii. Koreluj w oknie ±5 min.
  • Kontekst użytkownika: ofiary o profilu wysokiego ryzyka (dziennikarze, NGO, VIP) – priorytet IR. (zero‑click, wysokie TTP APT/komercyjny spyware).
  • Wersje aplikacji/OS: detekcja urządzeń z wersjami poniżej bezpiecznych buildów WhatsApp i OS‑ów z CVE‑2025‑43300 przed poprawką.

False positives / tuning

  • Legalne media/CDN’y inne niż .whatsapp. / .fbcdn. mogą generować ruch (np. podgląd linków, załączniki) — dostosuj allowlistę do telemetrii.
  • Środowiska z TLS inspection / proxy: domena docelowa może być zastąpiona domeną proxy — filtruj po SNI/http_host w logach L7.
  • Aplikacje towarzyszące (np. komponenty WebKit Network/Helper na macOS) mogą mieć inne nazwy procesu — rozszerz listę InitiatingProcessFileName.
  • Brak crashy nie wyklucza próby — atak może nie trafić w podatny parser lub warunki wyścigu.

Playbook reagowania (IR)

  1. Triage i ograniczenie ryzyka
    • Zidentyfikuj urządzenia z WhatsApp < 2.25.21.73 (iOS) / < 2.25.21.78 (Business iOS, Mac). Wymuś aktualizację.
    • Rozważ Lockdown Mode dla użytkowników wysokiego ryzyka (iPhone/iPad/Mac).
    • W WhatsApp: przegląd i usunięcie nieznanych urządzeń połączonych (Linked devices).
  2. Zachowanie materiału dowodowego
    • Na iOS: wygeneruj sysdiagnose (czas, data) i zabezpiecz logarchive.
    • Na macOS: zarchiwizuj Crash Reports i Unified Logs związane z WhatsApp/ImageIO.
  3. Łowy zagrożeń
    • Uruchom reguły z sekcji 7 w XDR/SIEM; skoreluj z domenami, które nie należą do Meta/WhatsApp.
  4. Eradykacja i odtworzenie
    • Aktualizacje OS ze ścieżki CVE‑2025‑43300 (iOS/iPadOS/macOS), reboot.
    • Zresetuj sesje, odśwież tokeny push, rotuj klucze E2E (wylogowanie i ponowne sparowanie urządzeń) — zgodnie z polityką prywatności/ryzyka.
  5. Komunikacja
    • Poinformuj użytkowników o incydencie i konieczności aktualizacji; rozważ noty do zespołu prawnego/PR przy potencjalnej ingerencji spyware.

Przykłady z kampanii / case studies

  • Eksploatacja łańcuchowa: WhatsApp (CVE‑2025‑55177) → Apple ImageIO (CVE‑2025‑43300) → zero‑click na iOS/macOS; ≤200 celów globalnie, profil wysokiego ryzyka.
  • Potwierdzenie KEV (CISA): luka dodana do Known Exploited Vulnerabilities 2025‑09‑02.
  • Doniesienia branżowe: vendor advisories i analizy potwierdzają użycie luki w wysoko ukierunkowanych atakach z łańcuchowaniem do CVE‑2025‑43300.

Lab (bezpieczne testy) — przykładowe komendy

Wyłącznie w środowisku testowym / bez symulacji eksploitu. Celem jest weryfikacja widoczności i reguł.

macOS

# Sprawdź wersję aplikacji (App Store build)
mdls -name kMDItemVersion "/Applications/WhatsApp.app"

# Szybki podgląd aktywności procesu w logach z ostatnich 2h
log show --last 2h --predicate 'process == "WhatsApp"' --style syslog | head

# Wykaz bieżących połączeń sieciowych aplikacji
sudo lsof -i -a -c WhatsApp

iOS (bez jailbreak)

  • Wygeneruj sysdiagnose (kombinacja przycisków zg. z instrukcją Apple), zgraj i załaduj system_logs.logarchive do narzędzia analitycznego.

XDR/SIEM

  • Uruchom zapytania z sekcji 7 i zweryfikuj, że połączenia do dozwolonych CDN nie generują alertów (tuning allowlisty).

Mapowania (Mitigations, Powiązane techniki)

Mitigations (ATT&CK):

  • M1051 — Update Software: aktualizacje WhatsApp i OS (iOS/iPadOS/macOS).
  • M1042 — Disable or Remove Feature or Program: ogranicz lub wyłącz „Linked devices” dla grup wysokiego ryzyka (polityka MDM).
  • M1021 — Restrict Web‑Based Content: filtrowanie URL/SNI, SSL inspection z ostrożnością, polityki DLP dla mediów.

Powiązane techniki (do rozważenia w polu):

  • T1071.001 — Web Protocols (C2/Delivery przez HTTP/HTTPS) dla etapów późniejszych lub alternatywnych ścieżek.

Źródła / dalsza literatura

  • NVD — CVE‑2025‑55177 (opis, CVSS CNA 5.4, CWE‑863, KEV): „Incomplete authorization of linked device synchronization messages…”. (NVD)
  • CVE.org — rekord (Meta CNA). (CVE)
  • WhatsApp Security Advisories 2025 (wersje naprawcze; łańcuch z CVE‑2025‑43300). (whatsapp.com)
  • CISA KEV (dodanie do katalogu 2025‑09‑02). (CISA)
  • Apple / CVE‑2025‑43300 (ImageIO, out‑of‑bounds write; backporty): wsparcie i NVD. (Apple Support)
  • Unit 42 (kontekst łańcuchów zero‑click); The Hacker News, SecurityWeek (streszczenia). (Unit 42)
  • Apple forensics i logi: sysdiagnose / logarchive / Crash Reports (ścieżki). (Apple Podcasts)
  • ATT&CK Mobile/Enterprise (T1658, T1664, T1203; v18). (MITRE ATT&CK)

Checklisty dla SOC / CISO

SOC:

  • Wdrożone reguły z sekcji 7 (XDR/SIEM) + allowlista domen Meta/WhatsApp.
  • Raport urządzeń z wersjami WhatsApp < 2.25.21.73/78 i OS bez łatki CVE‑2025‑43300.
  • Procedura zbierania sysdiagnose/logarchive i Crash Reports gotowa na żądanie IR.
  • Korelacje: połączenie WhatsApp → obca domena + wpisy ImageIO/crash w ±5 min.

CISO:

  • Polityka MDM: wymuszona aktualizacja WhatsApp/OS; Lockdown Mode dla wysokiego ryzyka.
  • Przegląd i ograniczenie Linked devices w organizacji (edukacja + kontrola).
  • Potwierdzona zgodność z CISA KEV (SLA na patching).
  • Test stołowy: scenariusz zero‑click na urządzeniach mobilnych (triage + komunikacja).

CVE-2025-21042 — RCE w libimagecodec.quram.so (Samsung Galaxy)

TL;DR

  • Krytyczny błąd out‑of‑bounds write w bibliotece obrazu libimagecodec.quram.so na urządzeniach Samsung umożliwia zdalne wykonanie kodu podczas przetwarzania specjalnie spreparowanego pliku DNG; załatany w SMR Apr‑2025 Release 1.
  • NVD ocenia bazowy CVSS 3.1 = 9.8 (UI:N), podczas gdy ocena producenta wskazuje 8.8 (UI:R) — różnica wynika z interpretacji wymaganej interakcji użytkownika.
  • CISA dodała CVE-2025-21042 do KEV (11‑10‑2025), wymagając szybkiego wdrożenia łatek.
  • W kampanii LANDFALL złośliwe DNG przekazywano m.in. przez komunikatory; po exploicie ładowano komponenty spyware i łączono się z C2.
  • Dla SOC: wykrywaj krótki łańcuch pobranie DNG → crash/SEGSEGV libimagecodec → outbound HTTPS C2, waliduj poziom SMR, izoluj urządzenia przez MDM.

Krótka definicja techniczna

CVE‑2025‑21042 to podatność typu out‑of‑bounds write w libimagecodec.quram.so (komponent parsowania obrazów na Androidzie Samsunga). Przetworzenie specjalnie spreparowanego pliku obrazu może skutkować zdalnym wykonaniem kodu. Problem został zaadresowany w Samsung Mobile Security Maintenance Release (SMR) Apr‑2025 Release 1.


Gdzie występuje / przykłady platform

  • Android (Samsung Galaxy): biblioteka libimagecodec.quram.so; podatność aktywuje się podczas parsowania zawartości (np. DNG). Patch dostępny od SMR Apr‑2025 R1.
  • Komunikatory / aplikacje konsumenckie: kampania LANDFALL wykorzystywała spreparowane pliki DNG (często dostarczane przez komunikator), co prowadziło do RCE i doinstalowania komponentów spyware.
  • Windows / AD / AWS / Azure / GCP / K8s / ESXi / M365: nie dotyczy bezpośrednio (wektor dotyczy urządzeń mobilnych i ich aplikacji). W środowiskach korporacyjnych wpływ występuje pośrednio (MDM/EDR dla Android, serwisy proxy/DLP).

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

Wadliwe sprawdzenie granic bufora w libimagecodec.quram.so pozwala nadpisać pamięć podczas dekodowania obrazu. W obserwowanej kampanii LANDFALL nośnikiem były pliki DNG (TIFF‑like), do których dodano na końcu zarchiwizowane komponenty (ZIP). Po skutecznym RCE łańcuch wyodrębniał i uruchamiał .so loadera, który dalej pobierał moduły spyware i nawiązywał łączność z C2. Samsung usunął błąd w SMR Apr‑2025 R1; CISA klasyfikuje podatność jako aktywnie wykorzystywaną (KEV). Skuteczność wynika z: szerokiej powierzchni ataku (rendering obrazów przez aplikacje), trudności w inspekcji treści binarnej obrazów oraz łańcucha, który minimalizuje artefakty instalacyjne.

Uwaga o ocenach: NVD przypisał CVSS 9.8 (UI:N), a producent 8.8 (UI:R) — w praktyce obserwowano scenariusz z dostarczeniem przez usługę/komunikator; nie wszystkie warianty muszą wymagać interakcji użytkownika.


Artefakty i logi (co i gdzie szukać)

WarstwaŹródło/logCo szukaćPrzykład/wzorzec
Android (urządzenie)logcat (crash, events)Crashe mediaserver/procesu parsującego z odniesieniem do libimagecodec.quram.so; SIGSEGV/signal 11message:*libimagecodec.quram.so* AND (*SIGSEGV* OR *signal 11*)
Android (tombstones)/data/tombstones/Backtrace z ramką w libimagecodec.quram.so; offsety w dekoderze obrazuplik tombstone_*.txt z backtrace ... libimagecodec.quram.so
Aplikacje/IOŚcieżki plików aplikacji (np. media z komunikatora)Świeżo zapisane pliki .dng poprzedzające crash.../Media/.../*.dng (czas modyfikacji ≈ czas crasha)
Sieć/Proxy/NGFWHTTP(S) transakcje z CDN komunikatora; odpowiedzi image/x-adobe-dngNietypowo duże DNG; anomalia UA; po pobraniu — połączenia do rzadkich domen (C2)content_type=image/x-adobe-dng AND bytes_in > N potem dst_category=unknown
MDM/MTD/EDR MobileInwentarz wersji / zgodność patchyPoziom SMR < Apr‑2025 R1raport zgodności MDM: brak łat bezpieczeństwa kwiecień 2025
M365/Defender AHDeviceTvmSoftwareVulnerabilities (jeśli dostępne dla Android)Wzmianki o CVE-2025-21042 na urządzeniach mobilnychCveId == "CVE-2025-21042"
AWS CloudTrailNie dotyczy (wektor mobilny)
K8s auditNie dotyczy
M365 OperationsPośrednio: alerty DLP/Defender na strumienie C2wzmianki o anomaliach HTTP(S) po crashu

Źródła techniczne o wektorze i łatce: NVD/Samsung/Unit42.


Detekcja (praktyczne reguły)

Sigma (Android logcat — crash dekodera obrazu)

title: CVE-2025-21042 — podejrzenie exploitu (crash libimagecodec.quram.so po DNG)
id: 5f2b0a2b-2f9d-4b64-9f3e-c21042dng
status: experimental
description: Wykrywa crash parsowania obrazu z odniesieniem do libimagecodec.quram.so po zapisaniu pliku .dng (np. z komunikatora)
author: Badacz CVE
date: 2025/11/11
logsource:
  product: android
  service: logcat
detection:
  crash:
    message|contains:
      - 'libimagecodec.quram.so'
      - 'SIGSEGV'
  dng_hint:
    message|contains:
      - '.dng'
  condition: crash and dng_hint
falsepositives:
  - Rzadkie awarie libimagecodec podczas obróbki prawidłowych plików
level: high
tags:
  - cve.2025-21042
  - attack.t1658
  - attack.t1664

Splunk (SPL) — korelacja: zapis DNG → crash → wyjście HTTPS

| tstats summariesonly=f allow_old_summaries=t
  count from datamodel=Endpoint.Filesystem
  where Filesystem.file_extension=dng
  by _time, Filesystem.dest, Filesystem.file_name, Filesystem.file_path
| rename Filesystem.dest as device, Filesystem.file_name as fname, Filesystem.file_path as fpath
| join device [ search index=android sourcetype=logcat (libimagecodec.quram.so AND (SIGSEGV OR "signal 11"))
               | stats earliest(_time) as crash_time by host
               | rename host as device ]
| where abs(crash_time - _time) <= 300
| join device [ search index=proxy OR index=fw (dest_category=unknown OR category="newly_seen")
               | stats latest(_time) as c2_time by src_ip, cs_host
               | rename src_ip as device ]
| table device, fname, fpath, _time, crash_time, c2_time, cs_host

KQL (Microsoft 365 Defender — Advanced Hunting)

  1. Widok podatności (TVM), jeśli dostępny dla Androida:
DeviceTvmSoftwareVulnerabilities
| where CveId == "CVE-2025-21042"
| summarize dcount(DeviceId) by SoftwareVendor, SoftwareName
  1. Korelacja crashu i potencjalnej aktywności sieciowej:
let CrashWin = 5m;
let crashes =
DeviceEvents
| where DeviceType == "Android"
| where ActionType in ("ApplicationCrashed","ExploitAttempted","AbnormalProcessTermination")
| where AdditionalFields has "libimagecodec.quram.so";
let dngWrites =
DeviceFileEvents
| where DeviceType == "Android"
| where FileName endswith ".dng";
crashes
| join kind=innerunique (dngWrites) on DeviceId
| where datetime_diff('second', crashes.Timestamp, dngWrites.Timestamp) between (-CrashWin .. CrashWin)

CloudTrail query (AWS CLI/CloudWatch)

  • [nie dotyczy] — brak bezpośrednich zdarzeń AWS dla wektora mobilnego.

Elastic / EQL (ECS)

sequence by host.id with maxspan=5m
  [ file where file.extension == "dng" and process.name in ("com.whatsapp","com.android.mms","com.sec.android.gallery3d") ]
  [ any where event.category == "process" and event.action == "crash" and message like "*libimagecodec.quram.so*" ]
  [ network where network.protocol == "http" and destination.domain in ("unknown","newly_observed") ]

Wzorce oparte na publicznych opisach wektora (DNG → crash → C2). Dostosuj nazwy pól do własnego schematu.


Heurystyki / korelacje

  • Korelacja czasowa: zapis/plansza DNG w mediach komunikatora ±5 min → crash libimagecodec.quram.so → nowy outbound HTTPS do mało‑popularnej domeny.
  • Anomalia rozmiaru: DNG większy niż typowe zdjęcia RAW z telefonu użytkownika (ze względu na doczepione ZIP).
  • Ścieżka pliku i nazewnictwo: wzorce typu WhatsApp Image YYYY-MM-DD ... .jpeg z rozszerzeniem DNG/niepełnym EXIF.
  • Geografia/intel: próbki obserwowane m.in. w Irak, Iran, Turcja, Maroko — wzmocnij monitoring dla tych regionów/oddziałów.

False positives / tuning

  • Pojedyncze crashe dekodera obrazu (wadliwe pliki graficzne, aplikacje foto).
  • Legalne pliki DNG z dużymi zasobnikami (profesjonalne RAW), bez dalszych objawów (brak C2).
  • Tuning: wymagaj sekwencji: DNG → crash → nowy outbound do mało‑popularnej domeny oraz brak patcha SMR Apr‑2025 na urządzeniu.

Playbook reagowania (IR)

  1. Triag/izolacja: odizoluj urządzenie w MDM (blokada sieci, wyłącz backupy).
  2. Weryfikacja łatek: sprawdź SMR Apr‑2025 R1 lub nowszy; brak → wymuś aktualizację.
  3. Zabezpieczenie artefaktów: zbierz logcat -b crash -d, tombstones, listę ostatnio zapisanych .dng i ich SHA‑256 (nie otwieraj na urządzeniu!).
  4. Hunting: wyszukaj w proxy/NGFW rzadkie domeny po crashu; skorelować z innymi urządzeniami.
  5. Eradykacja: usuń podejrzane media, przywróć urządzenie do stanu zgodnego (patch), zresetuj tokeny/aplikacje dotknięte (komunikatory).
  6. Komunikacja: poinformuj użytkownika, przeprowadź świadomość nt. nieotwierania nieoczekiwanych obrazów (do czasu pełnej dystrybucji poprawek).
  7. Lessons Learned: dodaj reguły DLP/NGFW dla nietypowych DNG z CDN komunikatorów; zasil listy C2 z TI.

Przykłady z kampanii / case studies

  • LANDFALL (Unit 42, 2024–2025): Zidentyfikowano spreparowane DNG z dołączonym ZIP; po exploicie łańcuch ładował moduły spyware i łączył z C2. Aktywność obserwowana m.in. w Iraku, Iranie, Turcji i Maroku.
  • Doniesienia prasowe (THN/SecurityWeek) potwierdzają wykorzystanie CVE‑2025‑21042 jako zero‑daya do dostarczenia LANDFALL na Galaxy; patch w kwietniu 2025.
  • KEV: CISA dodała CVE do katalogu znanych exploitów 10 listopada 2025 — priorytet wdrożenia łatek.

Lab (bezpieczne testy) — tylko do walidacji detekcji

Nie generujemy exploitów. Poniższe kroki tworzą nieszkodliwy plik testowy (DNG z doczepionym ZIP), aby sprawdzić łańcuch detekcyjny. Nie otwieraj pliku na podatnych urządzeniach.

  1. Przygotuj próbkę:
# Użyj dowolnego bezpiecznego DNG (np. z aparatu) lub skonwertuj zdjęcie do DNG w narzędziu offline.
echo "hello" > harmless.txt
zip harmless.zip harmless.txt
cat sample.dng harmless.zip > sample_dng_plus_zip.dng
sha256sum sample_dng_plus_zip.dng
  1. Weryfikacja sygnatur:
# Spodziewane 'PK\x03\x04' blisko końca pliku
strings -n 4 sample_dng_plus_zip.dng | tail
  1. Walidacja pipeline: wgraj plik na sandbox/serwer skanujący (nie na urządzenie mobilne), sprawdź czy:
    • reguły proxy/IDS klasyfikują go jako image/x-adobe-dng o większym rozmiarze,
    • reguły SIEM (z sekcji 7) flagują zdarzenie (bez części „crash”).

Mapowania (Mitigations, powiązane techniki)

Mitigations (Mobile/Enterprise):

  • M1051 — Update Software: natychmiastowe wdrożenie SMR Apr‑2025 R1 i nowszych na urządzeniach Samsung.
  • M1013 — Application Developer Guidance: twarda walidacja danych wejściowych w bibliotekach obrazów (wskazanie dla dostawców/SDLC).
  • M1002 — Attestation (Mobile): egzekwuj nienaruszalność/stan urządzeń (wykrywanie modyfikacji/SELinux).

Powiązane techniki ATT&CK:

  • T1658 (Mobile), T1203 (Enterprise)Exploitation for Client Execution (rdzeń problemu).
  • T1664 (Mobile)Exploitation for Initial Access (wejście przez parser obrazu).
  • T1566.003 (Enterprise)Spearphishing via Service (dostarczanie przez komunikator).

Źródła / dalsza lektura

  • NVD/CVE: opis, oceny CVSS (różnica NVD vs. producent), KEV (data dodania). (NVD)
  • CVE.org: rekord CVE. (CVE)
  • Samsung SMR Apr‑2025 R1: wpis SVE‑2024‑1969 → CVE‑2025‑21042 i status łaty. (Samsung Mobile Security)
  • Unit 42 (Palo Alto Networks): analiza kampanii LANDFALL (DNG z doczepionym ZIP, łańcuch spyware, geografia). (Unit 42)
  • The Hacker News / SecurityWeek: doniesienia prasowe o real‑world exploitation i patchu. (The Hacker News)
  • MITRE ATT&CK — wersje i techniki Mobile/Enterprise: techniki T1658/T1664/T1203/T1566.003; wersja v18.0. (MITRE ATT&CK)

Checklisty dla SOC / CISO

SOC (operacyjna):

  1. Widok urządzeń Samsung + poziom SMR (Apr‑2025 lub nowszy).
  2. Reguły SIEM: sekwencja DNG → crash libimagecodec → nowe C2.
  3. Filtry proxy/NGFW dla image/x‑adobe‑dng z CDN komunikatorów (anomalie rozmiaru).
  4. Blokada/monitoring domen „nowo obserwowanych” po crashu.
  5. Collectors: logcat crash, tombstones z Androida.
  6. Hurtowe wyszukiwanie CVE‑2025‑21042 w TVM/MDM/EDR.
  7. Procedura szybkiej izolacji przez MDM.
  8. Playbook IR z sekcji 10 (w tym komunikacja z użytkownikiem).
  9. Walidacja reguł detekcyjnych na plikach testowych (sekcja 12).
  10. Retrospektywny hunting 2024–2025 pod kątem anomalii DNG.

CISO (strategiczna):

  1. SLA na wdrażanie SMR/aktualizacji (mitigation M1051).
  2. Polityka MDM wymuszająca stan „zgodny” przed dostępem do zasobów.
  3. Zdolność do telemetrii mobilnej (logcat/tombstones) w SIEM.
  4. Threat intel dotyczący KEV i kampanii mobilnych (LANDFALL).
  5. Testy kontrolne: inspekcja nośników medialnych (obrazy/RAW) w gateway’u.
  6. Program świadomości o zagrożeniach w komunikatorach (T1566.003).

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)

CVE-2014-4114 — Windows OLE RCE „Sandworm”

TL;DR

CVE‑2014‑4114 to podatność w Windows OLE wykorzystywana m.in. przez Sandworm do zdalnego uruchamiania kodu po otwarciu spreparowanego pliku Office (najczęściej PPSX/PowerPoint). Sztuczka polega na pobraniu zdalnego .INF i wykonaniu go przez rundll32 -> setupapi.dll,InstallHinfSection lub advpack.dll,LaunchINFSection, co inicjuje uruchomienie docelowego droppera. Detekcja: łańcuch POWERPNT.EXE → rundll32.exe z argumentami InstallHinfSection/LaunchINFSection, pobrania po SMB/WebDAV, ślady w setupapi.app.log. Łatanie: MS14‑060 (KB3000869); tymczasowe obejścia: wyłączenie WebClient, blokada TCP 139/445, usunięcie „Install” verb dla .INF.


Krótka definicja techniczna

CVE‑2014‑4114 to błąd w obsłudze obiektów OLE w Windows pozwalający na zdalne wykonanie kodu po otwarciu pliku Office zawierającego specjalnie przygotowany obiekt OLE odwołujący się do zasobu INF/EXE w nieufnej lokalizacji (UNC/WebDAV). Otwarcie dokumentu inicjuje pobranie i wykonanie instrukcji z INF bez dodatkowych promptów, prowadząc do uruchomienia droppera w kontekście bieżącego użytkownika.


Gdzie występuje / przykłady platform

  • Windows: Vista SP2, 7 SP1, 8/8.1; Server 2008/2008 R2/2012/2012 R2; także RT (wg MS14‑060/NVD).
  • Active Directory: stacje członkowskie domeny (otwieranie załączników w środowisku korporacyjnym).
  • M365: poczta (spearphishing attachment), logi Defender for Office/Endpoint.
  • Chmury (AWS/Azure/GCP): dotyczy Windows VM/VDI/WorkSpaces – podatna jest gościnna warstwa OS, nie IaaS; telemetria może trafiać do CloudWatch/Log Analytics/SIEM.
  • Kubernetes/ESXi: brak bezpośredniego wpływu na control plane; dotyczy gości Windows w VM.

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

Kampanie z 2014 r. wykorzystywały PPSX z dwoma osadzonymi obiektami OLE o ścieżkach zdalnych: np. slide1.gif (faktycznie EXE) i slides.inf. PowerPoint pobierał oba pliki z udziału UNC/WebDAV bez ostrzeżeń; .INF zmieniał nazwę pliku na .exe i go uruchamiał (dropper BlackEnergy). Mechanizm aktywacji bazował na wywołaniu rundll32.exe z setupapi.dll,InstallHinfSection lub advpack.dll,LaunchINFSection. Skuteczność: wysoki poziom soc‑eng (pliki show), minimalna interakcja, obejście promptów UAC dla .PPSX odnotowane przez Microsoft.


Artefakty i logi (co zbierać)

ŹródłoID / poleWskaźnik / wzorzecUwagi
Windows Security4688 (Process Creation)ParentImage=*\POWERPNT.EXEImage=*\\rundll32.exe z CommandLine zawierającą setupapi.dll,InstallHinfSection lub advpack.dll,LaunchINFSectionKluczowy łańcuch egzekucji.
Sysmon1/ProcCreate, 3/NetConnect, 11/FileCreate, 22/DNSPołączenia do \\host\share\... / WebDAV (Microsoft-WebDAV-MiniRedir), tworzenie *.inf/*.gif.exe w %TEMP%Wzorce WebDAV/SMB.
SetupAPI log%windir%\inf\setupapi.app.logWpisy z instalacji aplikacyjnej/INF (po włączeniu logowania)Domyślnie wyłączone; można włączyć przez LogLevel.
M365 Defender (AH)EmailEvents / EmailAttachmentInfoZałącznik PPS/PPSX od nadawcy zewn., motyw soc‑engDla fazy dostarczenia.
MDE/Defender AVWykrycie: Exploit:Win32/CVE-2014-4114Alerty/exclusionsHistoryczne sygnatury.
Firewall/ProxyHTTP/WebDAV, SMB (139/445)Pobranie slides.inf / *.gif z zewnętrznych hostówBlokady portów ograniczają wektor.

Detekcja (praktyczne reguły)

Sigma (Windows / process_creation)

title: Office -> Rundll32 INF Execution (CVE-2014-4114 Sandworm)
id: 7c9f9d4a-b0c6-4f7f-9e5b-b2c3d1e0c414
status: experimental
logsource:
  product: windows
  category: process_creation
detection:
  parent_office:
    ParentImage|endswith:
      - \POWERPNT.EXE
      - \WINWORD.EXE
      - \EXCEL.EXE
  child_rundll:
    Image|endswith: \rundll32.exe
  cli_inf:
    CommandLine|contains:
      - 'setupapi.dll,InstallHinfSection'
      - 'advpack.dll,LaunchINFSection'
  condition: parent_office and child_rundll and cli_inf
fields:
  - UtcTime
  - User
  - ParentImage
  - Image
  - CommandLine
falsepositives:
  - Rzadkie instalacje driverów/INF wywołane z Office (bardzo mało prawdopodobne)
level: high
tags:
  - attack.T1203
  - attack.T1204.002
  - attack.T1566.001
  - cve.2014-4114

Splunk (Security 4688 / Sysmon 1)

(index=win* (sourcetype="WinEventLog:Security" EventCode=4688) OR (sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1))
| eval parent=coalesce(ParentProcessName, ParentImage), img=coalesce(NewProcessName, Image)
| search parent="*\\POWERPNT.EXE" OR parent="*\\WINWORD.EXE" OR parent="*\\EXCEL.EXE"
| search img="*\\rundll32.exe"
| search CommandLine="*setupapi.dll,InstallHinfSection*" OR CommandLine="*advpack.dll,LaunchINFSection*"
| table _time host user parent img CommandLine
| sort - _time

KQL (Microsoft 365 Defender – Advanced Hunting)

DeviceProcessEvents
| where InitiatingProcessFileName in~ ("POWERPNT.EXE","WINWORD.EXE","EXCEL.EXE")
| where FileName =~ "rundll32.exe"
| where ProcessCommandLine has_any ("setupapi.dll,InstallHinfSection","advpack.dll,LaunchINFSection")
| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, InitiatingProcessVersionInfoCompanyName
| order by Timestamp desc

AWS CloudWatch Logs Insights (Windows Event Forwarding do CWL)

fields @timestamp, Computer, EventID, @message
| filter EventID=4688
| filter like(@message, /rundll32\.exe/) 
  and (like(@message, /setupapi\.dll,InstallHinfSection/) or like(@message, /advpack\.dll,LaunchINFSection/))
| sort @timestamp desc

Elastic (EQL)

sequence by host.id with maxspan=2m
  [process where process.name : ("POWERPNT.EXE","WINWORD.EXE","EXCEL.EXE")]
  [process where process.name : "rundll32.exe" and
           process.command_line : ("*setupapi.dll,InstallHinfSection*","*advpack.dll,LaunchINFSection*")]

Heurystyki / korelacje

  • Łańcuch procesu: Office (POWERPNT/WINWORD) → rundll32.exe → (ew. dalsze) cmd.exe/msiexec.exe/regsvr32.exe.
  • Sieć: pobrania z UNC/WebDAV (user‑agent Microsoft-WebDAV-MiniRedir) w bliskim czasie od otwarcia dokumentu.
  • Pliki tymczasowe: *.inf / pseudo‑obraz *.gif → późniejszy *.exe w %TEMP%.
  • Logi SetupAPI: ślady w setupapi.app.log (po włączeniu).
  • Poczta: korelacja EmailEvents z kliknięciem/otwarciem załącznika i telemetrią endpoint.

False positives / tuning

  • Instalacje sterowników/oprogramowania wyzwalające InstallHinfSection/LaunchINFSection, ale zwykle nie z rodzicem Office.
  • Drivery producentów (podpisane, ścieżki C:\Windows\INF\*): wykluczyć po wydawcy, ścieżce, hashu.
  • Tuning: wymagaj rodzica Office, zdalnej ścieżki (UNC/WebDAV), nietypowych INF w %TEMP%, braku podpisu lub nietypowych domen.

Playbook reagowania (IR)

  1. Triaging & Containment: izoluj host; zablokuj domenę/UNC/WebDAV wskazany w artefaktach (FW/DNS/Proxy).
  2. Hunting szeroki (24–72 h): zapytania z sekcji 7 (AH/SIEM). Zidentyfikuj wszystkie hosty z łańcuchem Office→rundll32/INF.
  3. Forensics szybkie:
    • Zabezpiecz pliki z %TEMP% i %WINDIR%\INF\setupapi.app.log.
    • Zrzut listy procesów/połączeń (tasklist /v, netstat -ano), timeline plików.
  4. Eradykacja: usuń droppery, zabroń WebDAV/SMB egress do Internetu; wdroż KB3000869 jeśli dotyczy dziedzictwa.
  5. Recovery: weryfikacja integralności, rotacja poświadczeń, obserwacja anomalii.
  6. Lessons Learned: reguły detekcyjne do stałego monitoringu; wymuś blokady z pkt 11 (workarounds).

Przykłady z kampanii / case studies

  • BlackEnergy/Sandworm (2014): PPSX zawierał dwa obiekty OLE (zdalne): slide1.gif (dropper, faktycznie EXE) i slides.inf. INF zmieniał nazwę i uruchamiał droppera — bez dodatkowych promptów PowerPoint.
  • Sandworm Team (G0034): wykorzystywał CVE‑2014‑4114 w PowerPoint (OLE) oraz CVE‑2013‑3906 (TIFF/Word). Cele: NATO, UE, sektor energii/telekom.

Lab (bezpieczne testy)

Celem jest generacja artefaktów/detekcji, nie eksploatacja.

A. Symulacja INF (ADVPACK) – bezpieczne uruchomienie Notepad

  1. Zapisz plik test.inf (np. C:\Temp\test.inf):
[Version]
Signature="$Windows NT$"

[DefaultInstall]
RunPreSetupCommands=DoRun

[DoRun]
%11%\\notepad.exe
  1. Uruchom:
rundll32.exe advpack.dll,LaunchINFSection C:\Temp\test.inf,DefaultInstall

Powinno wygenerować proces rundll32.exe z LaunchINFSection (detekcje z sekcji 7).

B. Artefakty SetupAPI
Włącz logowanie SetupAPI (na czas testu), następnie uruchom test z pkt A i sprawdź %windir%\inf\setupapi.app.log.


Mapowania (Mitigations, powiązane techniki)

Mitigations (ATT&CK):

  • M1051 – Update Software: zastosuj MS14‑060/KB3000869 na hostach dziedzicznych.
  • M1037 – Filter Network Traffic / M1035 – Limit Access to Resource Over Network: blokuj SMB 139/445 egress, ogranicz WebDAV (usługa WebClient).
  • M1042 – Disable or Remove Feature or Program: usuń „Install” verb dla .INF (tymczasowe obejście).
  • M1017 – User Training: phishing awareness (załączniki PPSX).

Powiązane techniki ATT&CK:

  • T1566.001 – Spearphishing Attachment (wektor wejścia)
  • T1204.002 – User Execution: Malicious File (akcja użytkownika)
  • T1105 – Ingress Tool Transfer (transfer droppera)
  • T1027 – Obfuscated/Compressed Files (kamuflaż plików, np. „gif.exe”)

Źródła / dalsza literatura

  • Microsoft: MS14‑060 – Vulnerability in Windows OLE (KB3000869), obejścia (WebClient/SMB/INF) i lista systemów. (Microsoft Learn)
  • ESET (WeLiveSecurity): szczegóły kampanii PPSX + slides.inf + slide1.gif (BlackEnergy). (We Live Security)
  • MITRE ATT&CK: T1203 – Exploitation for Client Execution, w tym odniesienie do CVE‑2014‑4114/Sandworm. (MITRE ATT&CK)
  • MITRE ATT&CK – Sandworm Team (G0034). (MITRE ATT&CK)
  • NVD: wpis CVE‑2014‑4114 (zakres i opis). (NVD)
  • Microsoft Docs: InstallHinfSection (SetupAPI) i log setupapi.app.log. (Microsoft Learn)
  • IE/ADVPACK: LaunchINFSection (przykłady użycia). (Microsoft Learn)
  • Palo Alto Unit42: kontekst OLE/PowerPoint i ryzyko zdalnych zasobów. (Unit 42)

Uwaga dot. łat: tuż po MS14‑060 zgłaszano obejścia prowadzące do kolejnych CVE; w środowiskach legacy sprawdź też późniejsze uaktualnienia.


Checklisty dla SOC / CISO

SOC (operacyjne):

  • Włącz/zweryfikuj reguły: Office→rundll32 InstallHinfSection/LaunchINFSection.
  • Monitoruj WebDAV/SMB egress oraz setupapi.app.log.
  • Koreluj EmailEvents ↔ DeviceProcessEvents (M365).
  • Hunt retro (90 dni) za łańcuchem POWERPNT/WINWORD → rundll32.
  • Utrzymuj allow‑list INF/sterowników; alertuj INF z %TEMP%.

CISO (strategiczne):

  • Polityka: blokady SMB i WebDAV na brzegu/na hostach.
  • Wymuszenie łat (M1051) na hostach z Windows 7/8/8.1/2008/2012.
  • Program szkoleniowy phishing + polityki załączników (PPSX).
  • Testy tabletop IR dla scenariusza „złośliwy INF/Office”.

CVE-2014-0160 — „Heartbleed” (OpenSSL TLS/DTLS Heartbeat memory disclosure)

TL;DR

Heartbleed to krytyczna luka w OpenSSL 1.0.1–1.0.1f (oraz 1.0.2‑beta/beta1), w implementacji rozszerzenia TLS/DTLS Heartbeat (RFC 6520). Błędny brak kontroli długości powoduje odczyt do 64 KB pamięci procesu na żądanie, co umożliwia wyciek kluczy prywatnych, haseł, tokenów i ciasteczek sesyjnych — bez śladów w standardowych logach. Naprawa: OpenSSL 1.0.1g lub kompilacja z -DOPENSSL_NO_HEARTBEATS, plus rotacja kluczy/certyfikatów i reset sesji/haseł. CVSS v3.1: 7.5 (HIGH).


Krótka definicja techniczna

CVE‑2014‑0160 to buffer over-read w funkcjach przetwarzających komunikaty Heartbeat w OpenSSL (TLS i DTLS). Złośliwy pakiet żąda odesłania większej liczby bajtów niż faktyczny payload, co skutkuje ujawnieniem fragmentu pamięci procesu serwera/klienta. Błąd dotyczy OpenSSL 1.0.1 (do 1.0.1f włącznie) i został naprawiony w 1.0.1g (07.04.2014).


Gdzie występuje / przykłady platform

  • Linux/Unix: usługi HTTPS (Apache/Nginx), proxy, poczta (IMAPS/POP3S/SMTPS), VPN (np. OpenVPN), serwery aplikacyjne — jeśli linkują do OpenSSL 1.0.1*. Przykładowe dystrybucje z podatnymi pakietami: Debian Wheezy, Ubuntu 12.04.4, CentOS 6.5, FreeBSD 10.0 itd.
  • Urządzenia/IoT/appliance: część routerów/telefonów VoIP/przełączników używających OpenSSL 1.0.1* (stan historyczny).
  • Windows/AD: IIS/Schannel nie były podatne; ryzyko dotyczy aplikacji na Windows, które samodzielnie używały podatnego OpenSSL.
  • Chmury: własne instancje/obrazy z OpenSSL 1.0.1*, komponenty kontenerowe; w AWS/Azure/GCP po stronie klientów/serwerów, a także wszędzie tam, gdzie terminacja TLS odbywa się na oprogramowaniu z OpenSSL 1.0.1*. (Do detekcji przydają się logi IDS oraz logi operacji na certyfikatach, np. ACM/CloudTrail).

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

Rozszerzenie TLS/DTLS Heartbeat (RFC 6520) pozwala okresowo „pingować” drugą stronę bez renegocjacji. W podatnych wersjach OpenSSL błędnie ufano deklarowanej długości payloadu. Napastnik wysyła HeartbeatRequest z małym payloadem i zawyżoną długością; OpenSSL odsyła żądaną liczbę bajtów, dogaszając brakujące bajty z pamięci procesu (do 64 KB na żądanie). Atak można wykonywać wielokrotnie, aż do pozyskania wartościowych artefaktów (klucze prywatne X.509, hasła, tokeny sesji). Naprawa w 1.0.1g dodała kontrolę zakresu i odrzucanie niepoprawnych żądań. Skuteczność ataku wynika z: (1) prostoty (brak uwierzytelnienia), (2) braku śladów w typowych logach aplikacji, (3) wysokiej wartości wycieku (tajemnice kryptograficzne).


Artefakty i logi (SOC)

Źródło/logPole/artefaktWzorzec/anomaliaUwagi
IDS (Suricata/Snort)alert.signature / event.signature„Heartbleed” / „OpenSSL TLS heartbeat read overrun” / „CVE‑2014‑0160”SIDs Snort VRT: 30510–30517 (GID 1). Najpewniejszy sygnał.
Zeeknotice / skrypt ssl/heartbleedAlerty dot. niepoprawnych rekordów HeartbeatWsparcie dodane 2014‑04‑08.
ALB/ELB (AWS) – Connection/Access LogsTLS pola: protokół, cipher, status/connection_statusPiki błędów/nieudanych handshake (pośrednio); korelować z alarmami IDSDo analizy zmian wzorców TLS, nie wykrywa samego Heartbleed.
CloudTrail (AWS ACM/IAM/ACM‑PCA)eventNameImportCertificate, RequestCertificate, UpdateServerCertificate, DeleteServerCertificateŚlad rotacji certyfikatów po łataniu/kompromitacji.
Web serwer (Apache/Nginx)error/accessNietypowe resety połączeń, wzrost 4xx/5xx (wtórnie)Korelacja pomocnicza; zapis TLS payloadu brak. [Uzupełniające]
Windows EIDSchannel/IIS niepodatne; brak natywnych EID dla samej luki. [N/D]
K8s auditpatch/update na Deployment/PodRolling update obrazów po aktualizacji OpenSSLArtefakt zmian remediacyjnych, nie wykrycia. [Ogólne]

Detekcja (praktyczne reguły)

Sigma (IDS → SIEM)

title: Heartbleed (CVE-2014-0160) Detected by IDS
id: 1e1a5bb3-9e6f-45f0-9d7e-ids-heartbleed
status: stable
description: Alerty IDS/IPS wskazujące na próby/wykrycia ataku Heartbleed.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2014-0160
  - https://blog.snort.org/2014/04/sourcefire-vrt-certified-snort-rules_8.html
  - https://zeek.org/2014/04/detecting-the-heartbleed-bug-using-bro/
logsource:
  product: network
  service: ids
detection:
  selection:
    signature|contains:
      - 'Heartbleed'
      - 'heartbeat read overrun'
      - 'CVE-2014-0160'
    # alternatywnie dla Suricata EVE:
    alert.signature|contains:
      - 'Heartbleed'
      - 'heartbeat read overrun'
  condition: selection
fields:
  - src_ip
  - dest_ip
  - dest_port
  - signature
  - classification
falsepositives:
  - Rzadkie; możliwe skanery audytowe (np. nmap ssl-heartbleed)
level: high
tags:
  - attack.T1190
  - attack.T1212

(Źródła reguł i nazewnictwa sygnatur: Snort VRT SIDs 30510–30517; Zeek script ssl/heartbleed.)

Splunk (SPL)

(index=ids (sourcetype=suricata OR sourcetype=snort) OR source="*eve.json")
| spath
| eval sig=coalesce('alert.signature','signature')
| search sig="*Heartbleed*" OR sig="*heartbeat read overrun*" OR sig="*CVE-2014-0160*"
| stats earliest(_time) as first latest(_time) as last values(dest_port) count by src_ip dest_ip sig
| convert ctime(first) ctime(last)

KQL (Microsoft Sentinel / Log Analytics)

Opcja A – CommonSecurityLog (appliance IDS):

CommonSecurityLog
| where DeviceVendor in~ ("Snort","Suricata")
| where Message has_any ("Heartbleed","heartbeat read overrun","CVE-2014-0160")
| summarize cnt=count(), first=min(TimeGenerated), last=max(TimeGenerated) by SourceIP, DestinationIP, DestinationPort, Message

Opcja B – własna tabela SuricataEve_CL:

SuricataEve_CL
| where event_type_s == "alert"
| where alert_signature_s has_any ("Heartbleed","heartbeat read overrun","CVE-2014-0160")
| summarize cnt=count(), first=min(TimeGenerated), last=max(TimeGenerated) by src_ip_s, dest_ip_s, dest_port_d, alert_signature_s

CloudTrail Lake (AWS) — ślad rotacji certyfikatów po incydencie

SELECT eventTime, eventSource, eventName,
       userIdentity.accountId AS account, userIdentity.type AS actorType,
       requestParameters.certificateArn AS certArn
FROM   aws_cloudtrail_logs
WHERE  eventSource IN ('acm.amazonaws.com','iam.amazonaws.com','acm-pca.amazonaws.com')
  AND  eventName   IN ('ImportCertificate','RequestCertificate','UpdateServerCertificate','DeleteServerCertificate')
  AND  eventTime BETWEEN from_iso8601_timestamp('2025-11-01T00:00:00Z') AND from_iso8601_timestamp('2025-11-08T23:59:59Z')
ORDER BY eventTime DESC;

(Dokumentacja CloudTrail/ACM potwierdza logowanie tych akcji.)

Elastic / EQL / Kibana KQL

EQL:

network where event.module == "suricata" and event.kind == "alert" and
 (suricata.eve.alert.signature : "*Heartbleed*" or
  suricata.eve.alert.signature : "*heartbeat read overrun*")

Kibana KQL:

event.module:"suricata" and event.kind:"alert" and suricata.eve.alert.signature:("*Heartbleed*" OR "*heartbeat read overrun*" OR "*CVE-2014-0160*")

Heurystyki / korelacje (co łączyć)

  • Korelacja IDS ↔ rotacja certyfikatów: alerty Heartbleed na IP serwera + w ciągu 24–72 h zdarzenia ImportCertificate/UpdateServerCertificate (CloudTrail) ⇒ potwierdzenie remediacji lub panic‑rotacji.
  • Anomalie ruchu TLS: wzrost krótkich połączeń do 443/IMAPS/SMTPS z tej samej klasy adresów podczas skanów/eksfiltracji. [wspierające]
  • Ryzyko wtórne: po wycieku klucza prywatnego — podszywanie się (MITM) i odszyfrowanie zarejestrowanego ruchu bez PFS; korelować z wymianą certyfikatów i wymuszaniem PFS.

False positives / tuning

  • Fałszywe pozytywy są rzadkie — sygnatury na poziomie TLS są precyzyjne. Najczęstsze przypadki: testy nmap ssl-heartbleed lub skanery zgodności. Whitelistuj źródła skanerów.
  • Brak alertu ≠ brak ataku — historycznie ataki nie musiały zostawiać śladów w logach aplikacyjnych; rely na IDS/Zeek.

Playbook reagowania (IR)

  1. Izolacja & inwentarz: zidentyfikuj hosty z OpenSSL 1.0.1–1.0.1f/1.0.2‑beta*.
  2. Łatowanie: aktualizacja do OpenSSL 1.0.1g lub nowszej gałęzi; alternatywnie rekompilacja z -DOPENSSL_NO_HEARTBEATS (krótkoterminowo).
  3. Rotacja kryptografii: wygeneruj nowe klucze prywatne, ponownie wydaj certyfikaty, unieważnij stare (CRL/OCSP); w chmurze weryfikuj ślad w CloudTrail (ACM/IAM/ACM‑PCA).
  4. Unieważnienie sesji: wymuś re‑logowanie użytkowników, rotuj tokeny/cookies.
  5. Reset haseł: jeśli wyciek dotyczył serwisów z authem — wymuś zmianę.
  6. Hunting: przeszukaj IDS/Zeek pod kątem wzorców Heartbleed i anomalii TLS; koreluj ze zmianami certyfikatów.
  7. Komunikacja: zgodnie z wymogami regulacyjnymi (np. healthcare — przykłady incydentów niżej).

Przykłady z kampanii / case studies

  • Canada Revenue Agency (CRA) — kradzież 900 numerów SIN w oknie 6h tuż po ujawnieniu luki; zatrzymano podejrzanego.
  • Mumsnet (UK) — reset ~1,5 mln haseł po incydencie powiązanym z Heartbleed.
  • Community Health Systems (USA) — wyciek danych 4,5 mln pacjentów; wektor przypisano exploitacji Heartbleed.
  • Konsekwencje systemowe — Heartbleed przyspieszył powstanie Core Infrastructure Initiative (funding krytycznych OSS).

Lab — przykładowe komendy

Wyłącznie w kontrolowanym środowisku i na własnych hostach.
Celem jest weryfikacja detekcji, nie ofensywa.

Uruchomienie podatnego serwisu (Docker):

# przykładowy obraz demo (podatny OpenSSL)
docker run -d --name hb -p 8443:443 vulnerables/cve-2014-0160

Test wykrycia (Nmap NSE – bezpieczne sprawdzenie):

nmap -p 8443 --script ssl-heartbleed 127.0.0.1

(Nmap skrypt ssl-heartbleed jednoznacznie wskazuje podatność.)

IDS/Zeek:

  • Włącz reguły ET/Suricata lub Snort VRT (SIDs 30510–30517).
  • Zeek: załaduj skrypt policy/protocols/ssl/heartbleed.bro (obecnie w master).

Mapowania (Mitigations, powiązane techniki)

Mitigations (ATT&CK Enterprise):

  • M1051 Update Software — szybkie łatowanie (OpenSSL ≥1.0.1g).
  • M1031 Network Intrusion Prevention — IDS/IPS z sygnaturami Heartbleed.
  • (Dodatkowo) M1048 Application Isolation and Sandboxing, M1050 Exploit Protection — ograniczenie skutków.

Powiązane techniki ATT&CK:

  • T1190 Exploit Public-Facing Application — wektor wejścia.
  • T1212 Exploitation for Credential Access — pozyskanie sekretów.
  • T1210 Exploitation of Remote Services — ruch boczny po kompromitacji.

Źródła / dalsza lektura

  • NVD — opis i CVSS v3.1: 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N). (NVD)
  • Heartbleed.com — zakres wersji i kontekst operacyjny. (heartbleed.com)
  • RFC 6520 — TLS/DTLS Heartbeat Extension. (RFC Editor)
  • OpenSSL 1.0.1g — release notes (fix CVE‑2014‑0160). (slackware.cs.utah.edu)
  • CISA alert — charakterystyka luki i wyciek porcji 64 KB. (CISA)
  • Snort/Suricata — sygnatury wykrywające Heartbleed (SIDs 30510–30517) + dokumentacja aktualizacji reguł. (Snort Blog)
  • Zeek — detekcja Heartbleed. (Zeek)
  • AWS — CloudTrail/ACM (logowanie operacji na certyfikatach) i Connection Logs ALB. (AWS Documentation)
  • Case studies: CRA, CHS, Mumsnet. (TIME)

Checklisty dla SOC / CISO

SOC (operacyjnie):

  • Włączone reguły IDS/IPS na „Heartbleed” (Snort/Suricata/Zeek).
  • Dashbord/alert: korelacja IDS HeartbleedCloudTrail Import/UpdateServerCertificate.
  • Monitoring anomalii TLS (krótkie połączenia, skoki błędów).
  • Procedura natychmiastowej rotacji certyfikatów/kluczy i unieważniania sesji.

CISO (strategicznie):

  • Potwierdzona eliminacja OpenSSL 1.0.1* w środowisku (obrazy bazowe/kontenery).
  • Wymuszenie PFS i polityki silnych zestawów szyfrów.
  • Testy podatności (skan nmap NSE) — wyłącznie autoryzowane.
  • Plan komunikacji i notyfikacji (zgodność regulacyjna); lekcje z incydentów (CRA/CHS).

Uwaga końcowa: Heartbleed to historyczna luka, ale nadal pojawia się w długowiecznych obrazach/urządzeniach. Minimalna obrona to łatanie (M1051), IDS/IPS (M1031) oraz rotacja kryptografii po każdym podejrzeniu ekspozycji.