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.
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-fork — zał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 / ID
Na co patrzeć
Przykład / wskazówka
Windows
Security EID 4688, Sysmon EID 1
Dziecko procesu node.exe → cmd.exe/powershell.exe; nietypowe -c//c
ParentImage = \node.exe, Image = \cmd.exe, CommandLine zawiera /c
Sysmon EID 3
Nowe połączenia sieciowe z procesu aplikacji Node
Nietypowe dest. IP/AS, brak w allowliście egress
Sysmon EID 11/13
Tworzenie/zmiana plików/kluczy rejestru przez node.exe
Drop plików w temp/autoruns
Linux
auditd (EXECVE), journald
node uruchamia sh/bash/python z parametrem -c
/usr/bin/node … → /bin/sh -c …
Container/K8s
K8s audit (create na pods/exec, ephemeralcontainers)
Próby ucieczki/utrzymania kontroli po RCE
Użytkownik SA aplikacji inicjuje pods/exec
Cloud (AWS)
CloudTrail
Nietypowe UpdateFunctionCode, CreateFunction, modyfikacje env/secrets przez role aplikacji
Koreluj z IP/UA i oknem incydentu
M365/Entra(po wtórnej kompromitacji)
Unified Audit Log
„Consent to application”, „Add service principal”, „Add app role assignment to service principal”
Weryfikuj nieoczekiwane zgody/role w czasie incydentu
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.
Weryfikacja: testy regresji, monitoring post‑incident (szczególnie „Consent to application” w M365).
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).
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 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 / Artefakt
Platforma
Przykład pól/EID
Co szukać
Ścieżka/Notatka
Unified Logs (OSLog)
macOS
process, eventMessage, subsystem
Wejścia procesu WhatsApp tuż przed crash/alertem, wzmianki o ImageIO, nietypowe URL
Przegląd przez Console.app lub log show; crashy szukaj w DiagnosticReports.
Crash Reports
macOS
Raport .crash
Crashe procesu WhatsApp z ramkami ImageIO/CFNetwork
~/Library/Logs/DiagnosticReports/ oraz /Library/Logs/DiagnosticReports/.
Nie 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)
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).
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.
Łowy zagrożeń
Uruchom reguły z sekcji 7 w XDR/SIEM; skoreluj z domenami, które nie należą do Meta/WhatsApp.
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.
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.
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/log
Co szukać
Przykład/wzorzec
Android (urządzenie)
logcat (crash, events)
Crashe mediaserver/procesu parsującego z odniesieniem do libimagecodec.quram.so; SIGSEGV/signal 11
message:*libimagecodec.quram.so* AND (*SIGSEGV* OR *signal 11*)
Android (tombstones)
/data/tombstones/
Backtrace z ramką w libimagecodec.quram.so; offsety w dekoderze obrazu
plik 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/NGFW
HTTP(S) transakcje z CDN komunikatora; odpowiedzi image/x-adobe-dng
Nietypowo 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 Mobile
Inwentarz wersji / zgodność patchy
Poziom SMR < Apr‑2025 R1
raport zgodności MDM: brak łat bezpieczeństwa kwiecień 2025
M365/Defender AH
DeviceTvmSoftwareVulnerabilities (jeśli dostępne dla Android)
Wzmianki o CVE-2025-21042 na urządzeniach mobilnych
CveId == "CVE-2025-21042"
AWS CloudTrail
—
Nie dotyczy (wektor mobilny)
—
K8s audit
—
Nie dotyczy
—
M365 Operations
—
Pośrednio: alerty DLP/Defender na strumienie C2
wzmianki 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
| 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)
Widok podatności (TVM), jeśli dostępny dla Androida:
DeviceTvmSoftwareVulnerabilities
| where CveId == "CVE-2025-21042"
| summarize dcount(DeviceId) by SoftwareVendor, SoftwareName
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)
Triag/izolacja: odizoluj urządzenie w MDM (blokada sieci, wyłącz backupy).
Weryfikacja łatek: sprawdź SMR Apr‑2025 R1 lub nowszy; brak → wymuś aktualizację.
Zabezpieczenie artefaktów: zbierz logcat -b crash -d, tombstones, listę ostatnio zapisanych .dng i ich SHA‑256 (nie otwieraj na urządzeniu!).
Hunting: wyszukaj w proxy/NGFW rzadkie domeny po crashu; skorelować z innymi urządzeniami.
Eradykacja: usuń podejrzane media, przywróć urządzenie do stanu zgodnego (patch), zresetuj tokeny/aplikacje dotknięte (komunikatory).
Komunikacja: poinformuj użytkownika, przeprowadź świadomość nt. nieotwierania nieoczekiwanych obrazów (do czasu pełnej dystrybucji poprawek).
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.
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
Weryfikacja sygnatur:
# Spodziewane 'PK\x03\x04' blisko końca pliku
strings -n 4 sample_dng_plus_zip.dng | tail
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).
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)
E-mail phishing z tematami wysokiej konwersji (DocuSign, HR/payroll, płatności, „missed voicemail”, quishing).
Kliknięcie/zeskanowanie prowadzi do centralnego routera QRR.
Korelacja i fingerprinting (m.in. nagłówki, User-Agent, IP/ASN, heurystyki VPN/proxy, timing, headless/browser API).
Rozgałęzienie:
Boty/skanery/WAF/SEG/ICES → strony bezpieczne/legit (np. portal firmy), by „udowodnić” nieszkodliwość.
Użytkownicy → landing phishingowy (M365) z formularzem credential harvesting.
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).
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)
(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)
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 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ło
ID / pole
Wskaźnik / wzorzec
Uwagi
Windows Security
4688 (Process Creation)
ParentImage=*\POWERPNT.EXE → Image=*\\rundll32.exe z CommandLine zawierającą setupapi.dll,InstallHinfSection lub advpack.dll,LaunchINFSection
Kluczowy łańcuch egzekucji.
Sysmon
1/ProcCreate, 3/NetConnect, 11/FileCreate, 22/DNS
Połączenia do \\host\share\... / WebDAV (Microsoft-WebDAV-MiniRedir), tworzenie *.inf/*.gif.exe w %TEMP%
Wzorce WebDAV/SMB.
SetupAPI log
%windir%\inf\setupapi.app.log
Wpisy z instalacji aplikacyjnej/INF (po włączeniu logowania)
Domyślnie wyłączone; można włączyć przez LogLevel.
M365 Defender (AH)
EmailEvents / EmailAttachmentInfo
Załącznik PPS/PPSX od nadawcy zewn., motyw soc‑eng
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*")]
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
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).
(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)
Izolacja & inwentarz: zidentyfikuj hosty z OpenSSL 1.0.1–1.0.1f/1.0.2‑beta*.
Łatowanie: aktualizacja do OpenSSL 1.0.1g lub nowszej gałęzi; alternatywnie rekompilacja z -DOPENSSL_NO_HEARTBEATS (krótkoterminowo).
Rotacja kryptografii: wygeneruj nowe klucze prywatne, ponownie wydaj certyfikaty, unieważnij stare (CRL/OCSP); w chmurze weryfikuj ślad w CloudTrail (ACM/IAM/ACM‑PCA).
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.