Archiwa: CVE - Strona 4 z 7 - Security Bez Tabu

CVE‑2015‑1641 (Microsoft Office Memory Corruption w RTF) — zdalne wykonanie kodu po otwarciu spreparowanego dokumentu

TL;DR

CVE‑2015‑1641 to błąd obsługi RTF w Microsoft Office (Word/Word Viewer/Word Automation Services), który umożliwia RCE w kontekście użytkownika po otwarciu złośliwego pliku. W ATT&CK mapuje się to przede wszystkim na T1203 (Exploitation for Client Execution), zwykle dostarczane przez T1566.001 (Spearphishing Attachment) i/lub uruchamiane przez T1204.002 (User Execution: Malicious File). Skuteczna obrona opiera się na aktualizacjach, regułach ASR blokujących potomne procesy Office, kontroli aplikacji (WDAC/AppLocker) i analityce parent→child (Office → LOLBin).


Krótka definicja techniczna

CVE‑2015‑1641 to podatność w sposobie, w jaki Microsoft Office przetwarza RTF w pamięci; umożliwia zdalne wykonanie kodu po otwarciu specjalnie przygotowanego dokumentu (np. .rtf). Atak skutkuje uruchomieniem procesu/łańcucha procesów potomnych z rodzicem WINWORD.EXE (lub inną aplikacją Office) i typowo prowadzi do pobrania/uruchomienia ładunku (np. przez cmd.exe, powershell.exe, mshta.exe, rundll32.exe).


Gdzie występuje / przykłady platform

  • Windows / macOS (Word dla Mac 2011) — otwarcie/obsługa RTF przez aplikacje Office.
  • SharePoint (Word Automation Services), Office Web Apps — przetwarzanie dokumentów po stronie serwerowej.
  • M365/Exchange Online — wektor dostarczenia (e‑mail z załącznikiem RTF), detekcja/remediacja po stronie Defender for Office 365 (ZAP, akcje purge).
  • Środowiska hybrydowe (AD + M365) — najczęstszy scenariusz spearphishing + endpoint Windows.

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

Atakujący dostarcza spreparowany dokument RTF. Gdy aplikacja Office przetwarza plik, błąd w obsłudze RTF prowadzi do korupcji pamięci i wykonania arbitralnego kodu w kontekście bieżącego użytkownika. To umożliwia wykonanie stagera i ruch dalszy (np. dowolny LOLBin). Technika jest skuteczna, bo:

  • Wymaga jedynie interakcji użytkownika (otwarcie dokumentu) i często wygląda jak zwykła korespondencja służbowa (T1566.001 + T1204.002).
  • Office jest powszechny, a łańcuch Office → interpretery/LOLBin jest typową ścieżką living‑off‑the‑land.
  • Historycznie podatność była obserwowana “in the wild” w kampaniach APT (np. Sednit/Sofacy) oraz figuruje w KEV, co potwierdza realne wykorzystanie.

6) Artefakty i logi (tabela)

WarstwaŹródło/typID / PoleCo szukać
WindowsSecurity4688 (Process Creation)ParentImage = \WINWORD.EXE/EXCEL.EXE/POWERPNT.EXE + NewProcessName = cmd.exe, powershell.exe, mshta.exe, wscript.exe, rundll32.exe, regsvr32.exe
WindowsSysmon1 (ProcessCreate), 3 (NetworkConnect), 11 (FileCreate), 7 (ImageLoad), 13 (Registry)Łańcuch Office → LOLBin, nietypowe połączenia wychodzące tuż po uruchomieniu potomka, zapisy do %TEMP%/%APPDATA%
MDEAdvanced HuntingDeviceProcessEvents, DeviceNetworkEventsInitiatingProcessFileName w {WINWORD/EXCEL/POWERPNT}, FileName w {cmd/powershell/…}, nietypowe domeny C2
M365Defender for Office 365 / PurviewZAP, New-ComplianceSearchAction -PurgeAlerty o złośliwych załącznikach, raporty EOP, akcje SoftDelete/HardDelete przy remediacji maili.
AWSCloudTrail Lake (opcjonalnie, jeśli SES/WorkMail → S3)PutObject/GetObject (S3 data events)Masowe wrzuty .rtf do skrzynek/bucketów przychodzących; korelować ze wzrostem alertów EOP (jeśli integracja).
K8s audit[nie dotyczy] – podatność dotyczy klienta Office
GCP/Azure[nie dotyczy] – j.w.

Detekcja (praktyczne reguły)

Sigma

title: Office Spawns Suspicious Child Process (CVE-2015-1641 tradecraft)
id: 4c8c6a7b-9d0e-46d0-9a9e-1641office-child-proc
status: experimental
description: Wykrywa uruchamianie podejrzanych procesów potomnych przez aplikacje Office (WINWORD/EXCEL/POWERPNT).
references:
  - https://attack.mitre.org/techniques/T1203/
  - https://learn.microsoft.com/en-us/defender-endpoint/attack-surface-reduction-rules-reference
logsource:
  category: process_creation
  product: windows
detection:
  parent_office:
    ParentImage|endswith:
      - '\WINWORD.EXE'
      - '\EXCEL.EXE'
      - '\POWERPNT.EXE'
      - '\WORDVIEW.EXE'
  child_suspicious:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\mshta.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
      - '\hh.exe'
      - '\msbuild.exe'
      - '\installutil.exe'
      - '\certutil.exe'
      - '\bitsadmin.exe'
  condition: parent_office and child_suspicious
falsepositives:
  - Legalne dodatki Office/automatyzacje (DLP, AV, integracje korporacyjne)
level: high
tags:
  - attack.t1203
  - attack.execution

(Technika T1203, ASR „Block Office apps from creating child processes”).

Splunk (SPL)

(index=win* (sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1)
 OR (sourcetype="WinEventLog:Security" EventCode=4688))
| eval parent=coalesce(ParentImage, ParentProcessName), child=coalesce(Image, NewProcessName)
| where like(lower(parent), "%\\winword.exe")
   OR like(lower(parent), "%\\excel.exe")
   OR like(lower(parent), "%\\powerpnt.exe")
   OR like(lower(parent), "%\\wordview.exe")
| where match(lower(child), "\\\\(cmd|powershell|wscript|cscript|mshta|rundll32|regsvr32|hh|msbuild|installutil|certutil|bitsadmin)\\.exe$")
| stats earliest(_time) as first_seen, values(CommandLine) as cmd, values(ParentCommandLine) as p_cmd by host, user, parent, child
| convert ctime(first_seen)

KQL (Microsoft 365 Defender – Advanced Hunting)

DeviceProcessEvents
| where InitiatingProcessFileName in~ ("WINWORD.EXE","EXCEL.EXE","POWERPNT.EXE","WORDVIEW.EXE")
| where FileName in~ ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","mshta.exe",
                      "rundll32.exe","regsvr32.exe","hh.exe","msbuild.exe","installutil.exe",
                      "certutil.exe","bitsadmin.exe")
| project Timestamp, DeviceName, AccountName,
          InitiatingProcessFileName, InitiatingProcessCommandLine,
          FileName, ProcessCommandLine
| order by Timestamp desc

CloudTrail Lake (SQL) — opcjonalnie (SES/WorkMail→S3)

-- Wymaga włączonych data events dla S3
SELECT eventTime, eventSource, eventName, sourceIPAddress,
       requestParameters.bucketName AS bucket, requestParameters.key AS object
FROM $EDS_EVENT
WHERE eventName IN ('PutObject','GetObject')
  AND requestParameters.key LIKE '%.rtf'
  AND eventTime > TIMESTAMP '2025-11-01 00:00:00';

(Użyte do korelacji fali załączników .rtf z incydentami e‑mail.)

Elastic / EQL

process where
  process.parent.name in ("WINWORD.EXE","EXCEL.EXE","POWERPNT.EXE","WORDVIEW.EXE") and
  process.name in ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","mshta.exe",
                   "rundll32.exe","regsvr32.exe","hh.exe","msbuild.exe","installutil.exe",
                   "certutil.exe","bitsadmin.exe")

Heurystyki / korelacje

  • Parent→Child: Office → (cmd/powershell/wscript/mshta/rundll32/regsvr32) + sieć w ≤2 min od uruchomienia.
  • Ścieżki plików: tworzenie DLL/EXE/skrótów w %TEMP%, %APPDATA%, Startup, Office\Recent (Sysmon 11 + 1).
  • DNS/HTTP(S): nowe domeny bez reputacji tuż po otwarciu dokumentu.
  • ASR: zdarzenia AsrOfficeChildProcessAudited/Blocked (jeśli reguła włączona).
  • E‑mail → endpoint: korelacja EmailEvents (złośliwy załącznik RTF) z telemetrią procesu na hoście.

False positives / tuning

  • Legalne dodatki Office, wtyczki DLP/AV, integracje (np. eksport do PDF z użyciem procesów systemowych).
  • Narzędzia administracyjne i automatyzacje (np. pakiety do raportowania) — whitelist wg hasha, ścieżki i podpisu.
  • Tuning: wyklucz znane, podpisane ścieżki biznesowe; zostaw reguły ogólne dla cmd/powershell/mshta/... wywoływanych przez Office. Regułę Sigma/kwarantannę zaostrzaj dopiero po tygodniu audytu.

Playbook reagowania (kroki + komendy)

  1. Triag i zawężenie
  • Uruchom zapytania (SPL/KQL powyżej).
  • Piwotuj po ParentImage=WINWORD.EXE i user session.
  • Sprawdź alerty MDO (Defender for Office 365) i retencję ZAP.
  1. Izolacja i skan
  • Izoluj host w EDR/MDE (izolacja sieci).
  • Na hoście: szybki skan AV:
"%ProgramFiles%\Windows Defender\MpCmdRun.exe" -Scan -ScanType 2
  1. Higiena skrzynek (Purview/PowerShell) — usuń złośliwe maile:
New-ComplianceSearch -Name "CVE-2015-1641-purge" -ExchangeLocation All \
  -ContentMatchQuery '(attachments:".rtf") AND (Subject:"<ciąg kampanii>" OR From:"<nadawca>")'
Start-ComplianceSearch -Identity "CVE-2015-1641-purge"
New-ComplianceSearchAction -SearchName "CVE-2015-1641-purge" -Purge -PurgeType SoftDelete

(Potwierdzone procedury Purview).

  1. Artefakty
  • Zbierz pliki z %TEMP%/%APPDATA%, Prefetch, $MFT, Sysmon log.
  • Sprawdź autostarty (Run, Startup, zadania).
  1. Remediacja i twardnienie
  • Patch Office/SharePoint/Web Apps (MS15‑033 i nowsze).
  • Włącz/egzekwuj ASR: Block Office apps from creating child processes (d4f940ab-401b-4efc-aadc-ad5f3c50688a).
    Przykład (testowo – AuditMode):
Add-MpPreference -AttackSurfaceReductionRules_Ids d4f940ab-401b-4efc-aadc-ad5f3c50688a `
                 -AttackSurfaceReductionRules_Actions AuditMode

Dokumentacja ASR: referencja/enable.


Przykłady z kampanii / case studies

  • Sednit / Sofacy (APT28) – kampanie z załącznikami RTF wykorzystującymi CVE‑2015‑1641; po otwarciu zrzucały dwa DLL (np. btecache.dll, svchost.dll) i ładowały ładunek Seduploader.
  • Confucius – wykorzystywał podatności Office, w tym CVE‑2015‑1641, do uzyskania wykonania na stacjach ofiar.
  • Microsoft i media branżowe wskazywały na wykorzystanie in‑the‑wild przy wydaniu MS15‑033.

Lab (bezpieczne testy)

Wyłącznie w izolowanym, nieprodukcyjnym środowisku! Celem jest test detekcji, nie eksploatacja.

A. Dymny test ASR (AuditMode)

  1. Ustaw ASR „Block Office apps from creating child processes” w AuditMode (komenda powyżej).
  2. Utwórz w Wordzie prosty makrotest, który uruchamia Notepad (bezpieczny program): Sub TestChild() CreateObject("WScript.Shell").Run "notepad.exe" End Sub
  3. Uruchom makro → sprawdź, czy pojawiły się zdarzenia audytowe ASR/EDR i alert Sigma/SIEM. (Przykładowe demo ASR: Microsoft docs).

B. Heurystyka parent→child (bez makr)
Uruchom winword.exe, a następnie ręcznie zainicjuj proces potomny z linii poleceń (symulacja anomalii):

Start-Process "$env:ProgramFiles\Microsoft Office\root\Office16\WINWORD.EXE"
Start-Sleep -s 5
Start-Process cmd.exe -ArgumentList "/c echo benign" -WindowStyle Hidden

Sprawdź, czy reguły (Sigma/SPL/KQL) flagują zdarzenie.

C. E‑mail flow (MDO)
Wyślij do skrzynki labowej .rtf z nieszkodliwą zawartością i sprawdź ścieżkę skanowania/raporty MDO/ZAP oraz logi Purview (bez złośliwego payloadu).


Mapowania (Mitigations, Powiązane techniki)

Mitigations (ATT&CK):

  • M1051 – Update Software (regularne łatki Office/SharePoint/Web Apps).
  • M1038 – Execution Prevention (WDAC/AppLocker; ASR blokujący potomne procesy Office).
  • M1042 – Disable or Remove Feature or Program (wyłącz nieużywane komponenty, ogranicz makra).
  • M1017 – User Training (świadomość spearphishingu).

Powiązane techniki (często współwystępują):

  • T1566.001 – Phishing: Spearphishing Attachment (wektor dostarczenia).
  • T1204.002 – User Execution: Malicious File (użytkownik otwiera plik).
  • T1218 – Signed Binary Proxy Execution (np. rundll32.exe, regsvr32.exe).
  • T1059 – Command and Scripting Interpreter (PowerShell/WSH).
  • T1105 – Ingress Tool Transfer (pobranie kolejnych ładunków).
  • T1547 – Boot or Logon Autostart Execution (utrwalenie po eksploatacji).

Źródła / dalsza literatura

  • NVD – CVE‑2015‑1641 (opis, CVSS, wpis KEV w CISA). (NVD)
  • Microsoft MS15‑033 – biuletyn, lista produktów i opis RTF memory corruption. (Microsoft Learn)
  • ATT&CK T1203 – technika, wersja, modyfikacja 24.10.2025. (MITRE ATT&CK)
  • ATT&CK – wersje/aktualności – v18 (10.2025). (MITRE ATT&CK)
  • SecurityWeek – patch Tuesday z adnotacją „exploited in the wild” (CVE‑2015‑1641). (SecurityWeek)
  • ESET “En Route with Sednit” – przykład kampanii (Seduploader via CVE‑2015‑1641). (web-assets.esetstatic.com)
  • Defender for Office 365 – remediacja maili (ZAP/Purge). (Microsoft Learn)
  • ASR – referencja i włączanie – blokada potomnych procesów Office. (Microsoft Learn)

Checklisty dla SOC / CISO

SOC – operacyjna

  • Monitoring parent→child: Office → (cmd/powershell/mshta/wscript/…) w SIEM.
  • Włącz ASR Block Office apps from creating child processes (najpierw AuditMode, potem Block).
  • Korelacja e‑mail (EOP/MDO) ↔ endpoint (EDR).
  • Hunts: świeże .rtf + nietypowe połączenia po otwarciu dokumentu.
  • Procedura Purview Search+Purge gotowa do masowej remediacji.

CISO – strategiczna

  • Polityka patchowania Office/SharePoint/Web Apps (SLA).
  • Polityka makr, kontrola aplikacji (WDAC/AppLocker).
  • Szkolenia spearphishing/zasady otwierania załączników.
  • Testy okresowe (lab) pod T1203/T1566.001 z metrykami skuteczności.

CVE-2025-12480 — Triofox Improper Access Control (auth bypass → RCE przez funkcję antywirusową)

TL;DR

Krytyczna luka w Gladinet Triofox pozwala nieautoryzowanemu napastnikowi ominąć logowanie, wejść w strony konfiguracji początkowej i utworzyć konto administratora aplikacji. W zaobserwowanych atakach przeciwnik użył konta do wykonania kodu z uprawnieniami SYSTEM przez nadużycie wbudowanej funkcji „antywirus” (dowolna ścieżka skanera), a następnie wdrażał Zoho UEMS/Assist, AnyDesk, Plink/PuTTY i tunelował RDP. Załataj do ≥ 16.7.10368.56560 (zalecane 16.10.10408.56683) i monitoruj IIS pod kątem odwołań „localhost” do /management/*. W artykule: gotowa Sigma, SPL, KQL, EQL, playbook IR i artefakty.


Krótka definicja techniczna

CVE‑2025‑12480 to błąd kontroli dostępu w Triofox, który po sfałszowaniu nagłówka/odwołania HTTP z wartością localhost odblokowuje strony inicjalizacji (AdminDatabase.aspxAdminAccount.aspxInitAccount.aspx) mimo zakończonego wdrożenia. Skutkiem jest założenie natywnego konta „Cluster Admin”, a w łańcuchu realnych ataków — RCE jako SYSTEM przez wskazanie własnej ścieżki skanera w funkcji AV. Wersje podatne: < 16.7.10368.56560; poprawki dostępne (zalecana najnowsza gałąź).


Gdzie występuje / przykłady platform

  • Windows Server + IIS/ASP.NET (host aplikacji Triofox).
  • Active Directory (opcjonalnie – integracja z LDAP/AD do autoryzacji użytkowników aplikacji).
  • IaaS (AWS/Azure/GCP) — często za ALB/WAF/NGFW; problem dotyczy warstwy aplikacji webowej na VM/serwerze.
  • Bazy danych (PostgreSQL/MySQL) sterowane z panelu inicjalizacji Triofox.
  • K8s/ESXi/M365 – brak natywnego wektora; występują wyłącznie jako kontekst infrastrukturalny [nie wymagane].

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

  • Wejście (T1190): błędna logika sprawdzania dostępu do krytycznych stron instalatora Triofox. Zmiana Host/Referer → localhost skutkuje dopuszczeniem do ścieżki instalacyjnej mimo ukończonej konfiguracji.
  • Utworzenie admina (T1136): atakujący przechodzi flow inicjalizacji i tworzy natywne konto administracyjne („Cluster Admin”) w samej aplikacji.
  • Wykonanie (T1059.001) + RCE: po zalogowaniu do panelu używa funkcji „Anti‑Virus Engine Path” – wskazuje własny plik/skrypt; Triofox uruchamia go w kontekście SYSTEM, co daje pełne RCE.
  • Post‑exploitation: pobranie legalnych narzędzi zdalnego dostępu (Zoho UEMS/Assist, AnyDesk), Plink/PuTTY do tunelowania RDP (T1219/T1572/T1105), enumeracja SMB i zmiany haseł/grup. Kampanie obserwowane co najmniej od 2025‑08‑24.
  • Dlaczego skuteczna: brak walidacji źródła localhost w kodzie, zależność od opcjonalnego TrustedHostIp w web.config, możliwość uruchomienia arbitralnej ścieżki AV z uprawnieniami usługi.

Artefakty i logi (SOC cheat‑sheet)

Warstwa / źródłoEID / poleWzorzec / przykład korelacjiUwagi
IIS (W3C)cs-uri-stem, cs(Referer)Żądania do /management/AdminDatabase.aspx, /AdminAccount.aspx, /InitAccount.aspx, /CommitPage.aspx z Referer zawierającym http://localhostMandiant pokazał wpis z 302 do CommitPage.aspx z refererem localhost. Śledzić zewnętrzne IP jako źródło.
IIS/WAF/ALBHost/RefererNagłówek/odwołanie Host/Referer=localhost z adresów publicznychMożliwe także X-Forwarded-Host=localhost za proxy.
Windows Security4688 (Process Create)Uruchomienia powershell.exe, cmd.exe przez procesy Triofox/IIS tuż po dostępie do paneluKoreluj z logami IIS (ten sam host, ten sam czas ±5 min).
Windows Security7045 (Service Installed)Nowe usługi: Zoho UEMS/Assist, AnyDesk, nietypowe ścieżki w binPathCzęste w opisywanej kampanii.
Sysmon1 (Process Create)Image: *\\plink.exe, *\\putty.exe, *\\AnyDesk*.exe, *\\Zoho*Tunelowanie i dostęp zdalny.
Sysmon3 (Network Connect)Połączenia do zidentyfikowanych IP C2/hosting (np. 85.239.63[.]37, 65.109.204[.]197, 84.200.80[.]252, 216.107.136[.]46)IoC z raportu; utrzymuj listę deny/monitor.
Sysmon11 (File Create)C:\Windows\Temp\*.exe, C:\triofox\*.bat (np. centre_report.bat)Nazwy z raportu Mandiant.
Aplikacja Triofoxlogi aplikacyjneZmiany konfiguracji AV engine path, publikacja udziałów (pokazanie ścieżki na dysku)Krytyczne do triage’u RCE.
CloudTrail (IaaS)AuthorizeSecurityGroupIngressDopuszczenie 0.0.0.0/0 → 443/80 na SG przypiętej do hosta TriofoxPomocnicze: wykrywa niepożądane ekspozycje.

Detekcja (praktyczne reguły)

Sigma (IIS – próba obejścia z localhost)

title: Triofox CVE-2025-12480 - Localhost Referrer to Management Pages (IIS)
id: 2f47d6b5-9e2e-4f0b-9b7e-97b1e0e2f480
status: experimental
description: Wykrywa odwołania z 'localhost' do stron /management/* w Triofox (możliwa eksploatacja CVE-2025-12480).
references:
  - https://cloud.google.com/blog/topics/threat-intelligence/triofox-vulnerability-cve-2025-12480
  - https://nvd.nist.gov/vuln/detail/CVE-2025-12480
author: Badacz CVE
date: 2025/11/12
logsource:
  category: webserver
  product: windows
  service: iis
detection:
  selection_pages:
    http.request.target|contains:
      - "/management/AdminDatabase.aspx"
      - "/management/AdminAccount.aspx"
      - "/management/InitAccount.aspx"
      - "/management/CommitPage.aspx"
  ref1:
    http.request.referrer|contains: "http://localhost"
  ref2:
    cs-referrer|contains: "http://localhost"
  condition: selection_pages and (ref1 or ref2)
fields:
  - client.ip
  - http.request.method
  - http.request.referrer
  - http.request.target
  - http.response.status_code
falsepositives:
  - Testy administratorskie wykonywane lokalnie (żądania z 127.0.0.1)
level: high
tags:
  - attack.T1190
  - cve.2025-12480

Splunk (IIS/WAF)

index=web (sourcetype=iis OR tag=web)
(cs_uri_stem="/management/AdminDatabase.aspx"
 OR cs_uri_stem="/management/AdminAccount.aspx"
 OR cs_uri_stem="/management/InitAccount.aspx"
 OR cs_uri_stem="/management/CommitPage.aspx")
( cs_Referer="http://localhost*" OR referer="http://localhost*" )
| stats count min(_time) as first_seen max(_time) as last_seen by c_ip cs_uri_stem cs_Referer sc_status
| where c_ip!="127.0.0.1"

KQL (Microsoft Sentinel – W3CIISLog)

W3CIISLog
| where csUriStem has "/management/"
| where csUriStem has_any ("AdminDatabase.aspx", "AdminAccount.aspx", "InitAccount.aspx", "CommitPage.aspx")
| where csReferer has "http://localhost"
| extend isPrivate = ipv4_is_private(cIP)
| where isPrivate == false

CloudTrail (CloudWatch Logs Insights – „szerokie” otwarcie 80/443)

fields @timestamp, eventName, requestParameters
| filter eventName = "AuthorizeSecurityGroupIngress"
| filter requestParameters.ipPermissions.items[*].ipRanges.items[*].cidrIp like /0\.0\.0\.0\/0/
| filter requestParameters.ipPermissions.items[*].fromPort in [80,443]
| sort @timestamp desc

Uzupełniające: aws ec2 describe-security-groups i kontrola SG przypiętych do instancji Triofox.

Elastic / EQL (procesy i tunelowanie)

process where process.name in ("plink.exe","putty.exe","AnyDesk.exe","Zoho*","ZohoAssist*")
  and process.parent.name in ("w3wp.exe","svchost.exe") /* web worker / usługa */
  and host.os.type == "windows"
network where process.name == "plink.exe" and
  (destination.port == 22 and
   (exists(destination.ip) and source.ip == "127.0.0.1" or destination.ip != "127.0.0.1"))

Heurystyki / korelacje

  • IIS „localhost” + /management/ AND w krótkim czasie 4688 z powershell.exe/cmd.exe na tym samym hoście.
  • Nowe usługi (7045) zawierające Zoho, AnyDesk AND wcześniejszy dostęp do panelu Triofox.
  • Plink/PuTTY uruchomione na serwerze Triofox AND wzrost połączeń na 3389/TCP (tunel RDP).
  • Publikacja nowego „share” w Triofox AND zaraz potem wykonanie pliku ze ścieżki udziału (abuse AV‑Path).

False positives / tuning

  • Prawdziwi administratorzy mogą testować system lokalnie; żądania z 127.0.0.1 (loopback) i/lub z sieci zarządzającej można whitelistować.
  • Legalne użycie Zoho/AnyDesk – filtruj po znanych kluczach/tenantach, podpisach cyfrowych i źródłach instalacji (MSI z firmowego repo).
  • Proxy/health‑checki rzadko ustawiają Referer=localhost; jeśli tak – ogranicz do znanych adresów/LB.

Playbook reagowania (IR)

  1. Identyfikacja i blokada
  • WAF/NGFW: reguła drop dla Host/Referer=localhost na ścieżkach /management/*.
  • Tymczasowe geo/IP‑deny wg IoC (np. 85.239.63[.]37, 65.109.204[.]197, 84.200.80[.]252, 216.107.136[.]46).
  1. Triage
  • Przeskanuj IIS za zdarzeniami z sekcji 6; skoreluj z 4688/7045/Sysmon‑1/3/11.
  • W Triofox sprawdź: lista kont admin, historia zmian AV Engine Path, ostatnie publikacje udziałów.
  1. Eradykacja
  • Usuń nieautoryzowane konto aplikacyjne („Cluster Admin” itp.).
  • Dezinstaluj Zoho UEMS/Assist/AnyDesk zainstalowane spoza Twojej dystrybucji; zamknij plink/putty.
  • Cofnij zmiany haseł/grup, wymuś rotację sekretów.
  1. Odtworzenie i twardnienie
  • Patch: co najmniej 16.7.10368.56560; zalecany 16.10.10408.56683 (2025‑10‑14).
  • Skonfiguruj TrustedHostIp/sieci zarządzające, ogranicz dostęp do panelu tylko z MFA/VPN; logowanie na szczegółowym poziomie.
  1. Lessons learned
  • Dodaj detekcje z rozdz. 7, testy regresyjne, „table‑top” z łańcuchem nadużyć AV‑Path.

Przykłady z kampanii / case studies

  • UNC6485 (Mandiant/Google): eksploatacja co najmniej od 2025‑08‑24 na wersji 16.4.10317.56372; obejście autoryzacji (Host/Referer localhost) → utworzenie „Cluster Admin” → RCE przez ścieżkę AV → wdrożenie Zoho UEMS/Assist i AnyDesk, Plink/PuTTY do tunelowania RDP:3389. Wskazane przykładowe IP i artefakty (hashy, ścieżki).
  • Relacje prasowe: BleepingComputer i SecurityWeek potwierdzają łańcuch i zalecają aktualizację do najnowszej gałęzi Triofox.

Lab (bezpieczne testy)

Wyłącznie w izolowanym labie z testową instancją Triofox; nie instruujemy eksploatacji — generujemy sygnał do detekcji.

  • Generacja wpisu IIS przypominającego anomalię Referer (na testowym serwerze www, do niekrytycznej strony):
$h = @{ "Referer" = "http://localhost/test" }
Invoke-WebRequest -UseBasicParsing -Headers $h `
  -Uri "https://triofox-lab.local/management/AccessDenied.aspx"
  • Wpis 7045 (test instalacji usługi):
sc.exe create TestCVE125 path= "C:\Windows\System32\notepad.exe" start= demand
sc.exe delete TestCVE125
  • E2E sprawdzenie korelacji w Splunk/KQL: odpal test powyżej, a następnie uruchom reguły z sekcji 7 i zweryfikuj alerty.

Mapowania (Mitigations, Powiązane techniki)

Mitigations (ATT&CK):

  • M1051 Update Software — aktualizuj Triofox do ≥ 16.7.10368.56560 (zal. 16.10.10408.56683).
  • M1031 Network Intrusion Prevention — sygnatury/WAF blokujące Host/Referer=localhost na ścieżkach admina i wykrywanie tuneli.
  • M1030 Network Segmentation — strefa DMZ dla serwera Triofox; dostęp administracyjny tylko z sieci zarządzającej/VPN.

Powiązane techniki:

  • T1190 — Exploit Public‑Facing Application – Atak przez błąd logiczny w kontroli dostępu do stron /management/* (bypass auth).
  • T1136 — Create Account – Utworzenie natywnego admina („Cluster Admin”) w aplikacji dla utrzymania przyczółka.
  • T1059.001 — Command and Scripting Interpreter: PowerShell – Skrypty/batche wywołujące PowerShell downloader w łańcuchu RCE.
  • T1219 — Remote Access Software – Wdrożenie Zoho Assist/AnyDesk jako kanału C2/remote‑ops.
  • T1572 — Protocol TunnelingPlink/PuTTY do tunelowania RDP przez SSH.
  • T1105 — Ingress Tool Transfer – Pobranie narzędzi (Zoho/AnyDesk/Plink) na host Triofox.

Źródła / dalsza lektura

  • Mandiant/Google Cloud: No Place Like Localhost — techniczne omówienie, IoC, łańcuch ataku. (Google Cloud)
  • NVD: karta CVE (wersje podatne, CVSS, CWE). (NVD)
  • BleepingComputer: Hackers abuse Triofox antivirus feature to deploy RATs (RCE=SYSTEM, zalecenia). (BleepingComputer)
  • SecurityWeek: Critical Triofox Vulnerability Exploited in the Wild. (SecurityWeek)
  • Tenable / OpenCVE: status, streszczenie, SSVC. (Tenable®)
  • Check Point IPS Advisory (CVE‑2025‑12480). (Check Point Software)
  • MITRE ATT&CK v18 — wersje i aktualizacje. (MITRE ATT&CK)

Checklisty dla SOC / CISO

SOC (operacyjnie):

  • Reguły z sekcji 7 wdrożone (IIS, EDR/Elastic, Sentinel, WAF).
  • Hunt: Referer/Host=localhost/management/* w IIS (30–90 dni wstecz).
  • Korelacja z 4688/7045/Sysmon‑1/3/11 i z procesami plink/putty/AnyDesk/Zoho*.
  • Przegląd kont admin w Triofox; inspekcja AV Engine Path.
  • Blokady IoC sieciowych i rotacja haseł/sekretów, jeśli wskazane.

CISO / właściciele usług:

  • Patch: ≥ 16.7.10368.56560 (preferuj 16.10.10408.56683).
  • WAF: deny Host/Referer=localhost dla /management/*.
  • Segmentacja: panel admin tylko z sieci zarządczej + MFA/VPN.
  • Polityka dopuszczalnych narzędzi zdalnych (Zoho/AnyDesk) i ich inwentaryzacja.
  • Przegląd ekspozycji w IaaS (SG/ALB) i CI/CD patch/release hygiene.

Uwaga o ryzyku: Luka była aktywnie eksploatowana i występuje prosta możliwość RCE jako SYSTEM przy wykorzystaniu funkcji AV w Triofox — traktuj priorytetowo.

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

TL;DR

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


Krótka definicja techniczna

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


Gdzie występuje / przykłady platform

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

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

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


Artefakty i logi (co obserwować)

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

Detekcja (praktyczne reguły)

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

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

Splunk (Sysmon)

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

KQL (Microsoft 365 Defender / Sentinel)

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

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

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

Elastic EQL

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

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


Heurystyki / korelacje

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

False positives / tuning

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

Playbook reagowania (IR)

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

Przykłady z kampanii / case studies

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

Lab (bezpieczne testy)

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

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

Mapowania (Mitigations, Powiązane techniki)

Mitigations (ATT&CK Enterprise):

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

Powiązane techniki (ATT&CK Enterprise):

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

Źródła / dalsza literatura

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

Checklisty dla SOC / CISO

SOC (operacyjna):

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

CISO (strategiczna):

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

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

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

TL;DR

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


Krótka definicja techniczna

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


Gdzie występuje / przykłady platform

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

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

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


Artefakty i logi

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

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


Detekcja (praktyczne reguły)

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

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

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

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

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

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

KQL (Microsoft Sentinel) — CommonSecurityLog / ASIM

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

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

Zapytanie:

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

CLI:

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

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

EQL (sieć):

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

KQL (Windows host):

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

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


Heurystyki / korelacje (co łączyć)

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

False positives / tuning

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

Playbook reagowania (kroki + komendy)

Triage

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

Containment

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

Eradication

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

Recovery + Lessons

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

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

Przydatne szybkie komendy (bezpieczne):

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

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

Przykłady z kampanii / case studies

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

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


Lab (bezpieczne testy) — przykładowe komendy

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

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

Mapowania (Mitigations, Powiązane techniki)

Techniki ATT&CK (Enterprise)

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

Mitigations ATT&CK

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

Źródła / dalsza literatura

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

Checklisty dla SOC / CISO

SOC (operacyjne, 24/7):

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

CISO / GRC (strategiczne):

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

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

TL;DR

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


Krótka definicja techniczna

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


Gdzie występuje / przykłady platform

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

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

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

Zakres wersji (według GH Advisories):

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

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


Artefakty i logi (co szukać)

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

Detekcja (praktyczne reguły)

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

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

Splunk (Sysmon EID=1)

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

KQL (Microsoft Defender for Endpoint)

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

CloudTrail (CloudWatch Logs Insights)

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

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

Elastic EQL

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

Heurystyki / korelacje

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

False positives / tuning

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

Playbook reagowania (IR)

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

Przykłady z kampanii / case studies

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


Lab (bezpieczne testy)

A. Weryfikacja zależności

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

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

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

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

C. K8s/CloudTrail

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

Mapowania (Mitigations, powiązane techniki)

Mitigations (ATT&CK):

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

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


Źródła / dalsza literatura

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

Checklisty dla SOC / CISO

SOC (operacyjna)

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

CISO / AppSec (strategiczna)

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

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

CVE‑2025‑43300 — ImageIO out‑of‑bounds write (Apple iOS/iPadOS/macOS) — mapowanie MITRE ATT&CK

TL;DR

Luka CVE‑2025‑43300 to błąd zapisu poza bufor (CWE‑787) w ImageIO, wyzwalany podczas przetwarzania specjalnie przygotowanego pliku graficznego (m.in. DNG). Apple potwierdza doniesienia o wykorzystaniu w atakach ukierunkowanych. Patch dostępny m.in. w iOS/iPadOS 18.6.2, 17.7.10, 16.7.12, 15.8.5 oraz macOS Sequoia 15.6.1 / Sonoma 14.7.8 / Ventura 13.7.8. Z perspektywy ATT&CK zdarzenie odwzorowujemy na T1203/T1658 (Exploitation for Client Execution). SOC powinien szukać koincydencji: (1) napływ/miniaturyzacja obrazu (DNG/RAW/JPEG‑L) → (2) awarie/EXC_BAD_ACCESS w QuickLook*/ImageIO → (3) sieć z procesów sandboxowanych, a następnie pilnie aktualizować urządzenia.


Krótka definicja techniczna

CVE‑2025‑43300 to out‑of‑bounds write w frameworku ImageIO prowadzący do korupcji pamięci podczas parsowania złośliwego obrazu. Wektor ataku jest sieciowy (np. treści w komunikatorach, podgląd miniatur, przeglądarka/QuickLook), a wyzwolenie może następować bez pełnej interakcji użytkownika w określonych przepływach, jednak oficjalny wektor CVSS NVD oznacza UI:R. Błąd został naprawiony „poprawioną kontrolą zakresów”.


Gdzie występuje / przykłady platform

  • iOS / iPadOS: poprawki w 18.6.2 (20 VIII 2025), backporty: 16.7.12 i 15.8.5 (15 IX 2025), 17.7.10 (20 VIII 2025).
  • macOS: Sequoia 15.6.1 / Sonoma 14.7.8 / Ventura 13.7.8 (20 VIII 2025).
  • CISA KEV: luka dodana 21 VIII 2025 (termin dla agencji federalnych: 11 IX 2025).
  • Konsekwencje dla SOC: dotyczy stacji macOS oraz urządzeń iOS/iPadOS w BYOD/COPE, MDM i środowiskach hybrydowych (M365/Slack/WhatsApp jako nośnik obrazów). (Łańcuchy ataków z WhatsApp CVE‑2025‑55177 były publicznie raportowane).

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

ImageIO to systemowy framework odpowiedzialny za dekodowanie/miniaturyzację wielu formatów (w tym RAW/DNG). Błąd dotyczy ścieżki dekodowania — w analizach poprawek wskazywano na komponenty RawCamera i JPEG Lossless w DNG; naprawa polega na dołożeniu warunków granicznych (bounds check), co sugeruje klasyczne przepisanie poza zaalokowanym buforem przy niespójności metadanych vs strumień JPEG‑L. Taki prymityw bywa szczególnie cenny, bo może prowadzić do RCE w kontekście procesu przetwarzającego obraz (np. QuickLook* lub serwisy komunikatora). Apple odnotował „ekstremalnie wyrafinowany atak” na wąską grupę celów; niezależne raporty prasy branżowej potwierdzają łańcuchy z udziałem WhatsApp (oddzielna CVE po stronie aplikacji).


Artefakty i logi

Źródło / PlatformaArtefakt / LogCo obserwowaćPrzykład/Id
macOS Unified Loggingprocess == "QuickLookUIService" / QuickLookSatellite / ThumbnailsAgentcrashe/EXC_BAD_ACCESS wokół parsowania obrazu; korelować z otwarciem/miniaturą pliku .dnglog show --last 1h --predicate 'process CONTAINS "QuickLook" AND (eventMessage CONTAINS "EXC_BAD_ACCESS" OR eventMessage CONTAINS "abort")'
macOS CrashReporter~/Library/Logs/DiagnosticReports/*.crashsygnatury KERN_INVALID_ADDRESS dla QuickLook*/aplikacji wyzwalającejWpisy „Exception Type: EXC_BAD_ACCESS (SIGSEGV)” w czasie otwarcia/preview DNG.
Quick Look cache (forensics)/private/var/folders/.../C/com.apple.QuickLook.thumbnailcache (index.sqlite / thumbnails.data)ślady miniatur plików przetwarzanych przez QuickLookUwaga: dostęp ograniczony od Mojave; nadal użyteczne w analizie powłamaniowej.
iOS sysdiagnose/Unified Logszrzuty AUL/sysdiagnoseanomalia w logach ImageIO/QuickLook w oknie atakuMetodyka akwizycji AUL/sysdiagnose do IR.
EDR telemetry (macOS/iOS)Process/File/Crash/Networksekwencja: plik .dng → crash QuickLook*/aplikacji → outbound z procesu sandboxOgólna metodyka korelacji (proces/plik/sieć).
M365 Defender (AH)DeviceCrashEvents/DeviceProcessEvents/DeviceFileEventszdarzenia z hostów macOS (iOS jeśli wspierane przez MDM/defender)Wzorce zapytań w sekcji 7.
CloudTrail[nie dotyczy] (luka kliencka na Apple OS)
K8s audit / ESXi[nie dotyczy]
M365 Audit (Unified Audit Log)[nie dotyczy]

Detekcja (praktyczne reguły)

Sigma (macOS, proces crash + korelacja z DNG)

title: macOS QuickLook/ImageIO Crash After DNG Handling (CVE-2025-43300 Lead)
id: 4a1e2a2d-3f2d-4e05-9f60-ql-dng-crash
status: experimental
description: Detects crashes of QuickLook*/ImageIO-related processes shortly after handling .dng images (possible exploitation attempt of CVE-2025-43300)
author: Badacz CVE
date: 2025/11/11
references:
  - https://support.apple.com/en-us/124925
  - https://nvd.nist.gov/vuln/detail/CVE-2025-43300
logsource:
  product: macos
  category: process_crash
detection:
  sel_proc:
    Image|endswith:
      - "/QuickLookUIService"
      - "/QuickLookSatellite"
      - "/com.apple.quicklook.ThumbnailsAgent"
  sel_msg:
    Message|contains:
      - "EXC_BAD_ACCESS"
      - "SIGSEGV"
  near_file:
    TargetFilename|endswith: ".dng"
  timeframe: 5m
  condition: sel_proc and sel_msg and near_file
fields:
  - Image
  - ParentImage
  - TargetFilename
  - Message
  - CrashType
falsepositives:
  - Uszkodzone/niestandardowe pliki DNG z aparatów
  - Znane błędy QuickLook (wysokie CPU/mem)
level: high
tags:
  - attack.t1203
  - attack.t1658

Splunk (SPL)

Crash + korelacja z DNG w oknie 5 min

(index=edr OR index=os) (sourcetype=mac:crashreporter OR sourcetype=mac:unifiedlog)
(process_name="QuickLookUIService" OR process_name="QuickLookSatellite" OR process_name="com.apple.quicklook.ThumbnailsAgent")
("EXC_BAD_ACCESS" OR "SIGSEGV" OR "KERN_INVALID_ADDRESS")
| eval _time_crash=_time
| join type=inner host
    [ search index=edr sourcetype=mac:file (file_path="*.dng" OR file_name="*.dng")
      | bin _time span=5m
      | stats earliest(_time) as first_seen by host file_path process_name ]
| where abs(_time_crash - first_seen) <= 300
| table _time host process_name file_path Message

KQL (Microsoft 365 Defender, Advanced Hunting)

let crashWin = 5m;
let crashes = DeviceCrashEvents
| where OSPlatform == "macOS"
| where ProcessName in~ ("QuickLookUIService","QuickLookSatellite","com.apple.quicklook.ThumbnailsAgent")
| where CrashType has_any ("EXC_BAD_ACCESS","SIGSEGV","KERN_INVALID_ADDRESS")
| project DeviceId, CrashTime=Timestamp, ProcessName, CrashType;

let dng = DeviceFileEvents
| where OSPlatform == "macOS"
| where FileName endswith ".dng"
| project DeviceId, FileTime=Timestamp, FileName, FolderPath, InitiatingProcessFileName;

crashes
| join kind=innerunique (dng) on DeviceId
| where CrashTime between (FileTime .. FileTime + crashWin)
| project CrashTime, DeviceId, ProcessName, CrashType, FileName, FolderPath, InitiatingProcessFileName
| order by CrashTime desc

AWS CloudTrail / CloudWatch (zapytanie)

[brak danych / nie dotyczy] — luka dotyczy endpointów Apple, nie usług AWS.

Elastic EQL (endpoint)

sequence by host.id with maxspan=5m
  [file where file.extension == "dng" and
     process.name in ("IMTransferAgent","Messages","Safari","Finder")]
  [process where process.name in ("QuickLookUIService","QuickLookSatellite","com.apple.quicklook.ThumbnailsAgent")
     and (event.action == "crashed" or message like "*EXC_BAD_ACCESS*" or message like "*SIGSEGV*")]

Źródła kontekstowe: Apple advisories; ATT&CK T1203/T1658; Unified Logging/QuickLook procesy.


Heurystyki / korelacje

  • Łańcuch czasowy: pojawienie się nowego .dng (z komunikatora/WWW/preview) → crash QuickLook*/aplikacji → nietypowy ruch sieciowy z procesu sandbox (np. krótkie połączenia TLS do świeżych domen).
  • Artefakty miniatur: świeże wpisy w Quick Look cache powiązane z plikiem, nawet jeśli został usunięty.
  • Kampanie łańcuchowe: jeśli w telemetrii widać WhatsApp/Messages poprzedzające crash oraz aktualizacje łatające CVE‑2025‑55177, podnieś priorytet incydentu.

False positives / tuning

  • Uszkodzone lub nietypowe DNG z aparatów/oprogramowania RAW mogą powodować crashe QuickLook bez intencji atakującego. Ogranicz reguły do korelacji DNG + crash + źródło z sieci/komunikatora.
  • Znane problemy wydajnościowe QuickLook (wysokie CPU/awarie) mogą generować szum — filtruj po rozszerzeniu .dng i wąskim oknie czasowym.

Playbook reagowania (SOC/IR)

  1. Triage & isolacja: odseparuj urządzenie (macOS/iOS) od sieci. Zanotuj wersję OS i poziom łatek.
  2. Zbierz dowody:
    • macOS: log collect --last 2h --output ~/suspect.logarchive oraz ostatnie .crash dla QuickLook/aplikacji.
    • iOS: wywołaj sysdiagnose zgodnie z procedurą IR/MDM i zabezpiecz backup.
  3. Łańcuch zdarzeń: skorelkuj plik .dng (DeviceFileEvents/EDR) z crash (DeviceCrashEvents) i ruch sieciowy procesu.
  4. Eradykacja: usuń/freeze nośnik (wiadomość/załącznik), zablokuj domeny IOC jeśli są znane.
  5. Remediacja: aktualizuj do wersji zawierających poprawkę (poniżej) i wymuś update przez MDM.
  6. Hunt wsteczny (30–90 dni): wyszukaj sekwencje DNG → crash QuickLook; sprawdź skrzynki/komunikatory osób wysoko‑profilowych.
  7. Raportowanie: jeśli masz przesłanki łańcucha z WhatsApp, oznacz incydent jako high‑confidence targeted i eskaluj do CSIRT.

Przykłady z kampanii / case studies

  • Apple: w opisach łatek firma wskazała na wysoce wyrafinowany atak na wybrane osoby.
  • CISA KEV: CVE dodane 21 VIII 2025 (patch compliance dla instytucji federalnych do 11 IX 2025).
  • Media / analizy: doniesienia o łańcuchu z CVE‑2025‑55177 (WhatsApp) oraz backportach poprawek przez Apple.
  • Reverse engineering/patche: analiza Quarkslab wskazuje na ścieżkę DNG + JPEG Lossless (RawCamera) i dodane sprawdzenia granic. (Używaj do zrozumienia ryzyka, nie do ofensywy).

12) Lab (bezpieczne testy)

Tylko bezpieczne środowisko testowe / brak exploitów. Celem jest weryfikacja telemetrii i reguł.

  1. Próbki DNG (nieszkodliwe): pobierz legalne przykładowe DNG z publicznych datasetów (np. strony producentów aparatów).
  2. macOS — generowanie miniatur:
    • qlmanage -p ~/Samples/*.dng (podgląd) oraz log stream --style syslog --predicate 'process CONTAINS "QuickLook"' — weryfikuj, że pipeline telemetryczny widzi akcję. (Apple Developer)
  3. Korelacja w SIEM: odtwórz zapytania z sekcji 7 i sprawdź, czy pojawiają się zdarzenia File→Process/Crash (bez crasha, ale z wejściem i logami).
  4. iOS (MDM): dostarcz nieszkodliwy obraz .dng do urządzenia testowego (np. przez AirDrop/MDM Content Push), zbierz sysdiagnose i sprawdź logi ImageIO/QuickLook. (pat_h/to/file)

Mapowania (Mitigations, Powiązane techniki)

Mitigations (ATT&CK):

  • M1051 – Update Software: wymuszaj szybkie wdrożenie wersji z poprawką.
  • M1040 – Behavior Prevention on Endpoint: reguły EDR blokujące anomalię decode/parserów obrazów.
  • M1031 – Network Intrusion Prevention: sygnatury/heurystyki na C2 po udanym wyzwoleniu.

Powiązane techniki:

  • T1203 / T1658 (egzekucja), T1189 (wejście przez WWW) / T1566 (dostarczenie w wiadomości), w zależności od scenariusza.

Źródła / dalsza lektura

  • Apple advisories: iOS/iPadOS 18.6.2 (20 VIII 2025); macOS Sequoia 15.6.1, Sonoma 14.7.8, Ventura 13.7.8; iPadOS 17.7.10; backporty 16.7.12 i 15.8.5 (15 IX 2025). (Apple Support)
  • NVD/CVE details (CVSS/KEV/chronologia): (CVE Details)
  • MITRE ATT&CK: T1203 (Enterprise), T1658 (Mobile), wersjonowanie v18.0. (MITRE ATT&CK)
  • Opis kampanii/łańcucha z WhatsApp: The Hacker News (backport + łańcuch CVE‑2025‑55177). (The Hacker News)
  • Analiza techniczna patcha/ścieżki DNG/JPEG‑L: Quarkslab. (Quarkslab Blog)
  • Kontekst ImageIO/0‑click powierzchni parsowania: badania o ImageIO/QuickLook i Unified Logging. (googleprojectzero.blogspot.com)

Checklisty dla SOC / CISO (krótko)

SOC (operacyjne):

  • Czy SIEM/EDR ma reguły z sekcji 7 (crash QuickLook*/ImageIO + .dng)?
  • Czy korelujesz zdarzenia plikowe .dng z procesami QuickLook*/aplikacją w oknie ≤5 min?
  • Czy włączono hunting retrospektywny 30–90 dni dla sekwencji DNG → crash → sieć?
  • Czy MDM wymusza aktualizacje do wersji z poprawką?

CISO (strategiczne):

  • SLA patchowania Apple OS zredukowane <14 dni dla VIP/HTA.
  • Polityka monitoringu komunikatorów (telemetria endpointowa) dla załączników obrazów.
  • Testy tabletop dot. 0‑day/0‑interaction w kanałach mobilnych.
  • Przegląd pokrycia ATT&CK: T1203/T1658 + mitigacje M1051/M1040/M1031.

Rekomendacja: potraktować CVE‑2025‑43300 jako priorytet krytyczny na urządzeniach VIP i w zespołach wysokiego ryzyka, wdrożyć aktualizacje i utrzymywać reguły detekcji oparte na sekwencji zdarzeń, nie na pojedynczym sygnale.

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