
Co znajdziesz w tym artykule?
- 1 TL;DR
- 2 Krótka definicja techniczna
- 3 Gdzie występuje / przykłady platform
- 4 Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
- 5 Artefakty i logi
- 6 Detekcja (praktyczne reguły)
- 7 Heurystyki / korelacje
- 8 False positives / tuning
- 9 Playbook reagowania (IR)
- 10 Przykłady z kampanii / case studies
- 11 Lab (bezpieczne testy) — przykładowe komendy
- 12 Mapowania (Mitigations, powiązane techniki)
- 13 Źródła / dalsza literatura
- 14 Checklisty dla SOC / CISO (krótko)
TL;DR
Krytyczna luka w Java SE 5/6/7 (moduł 2D/CMM) umożliwia zdalne wykonanie kodu przy przetwarzaniu spreparowanego obrazu rastrowego w aplecie/Java Web Start. W 2013 r. była aktywnie wykorzystywana w kampaniach drive‑by (np. pakiety exploitów), a Oracle załatał ją w JRE/JDK 7u17 i 6u43. Dla SOC mapujemy to na T1189 (wejście przez stronę WWW) oraz T1203 (eksploatacja klienta). Zalecane: odinstalować wtyczkę Java w przeglądarkach (legacy), wymusić aktualizacje, monitorować łańcuch browser → java.exe → LOLBIN.
Krótka definicja techniczna
CVE‑2013‑1493 to błąd w Color Management (CMM) komponentu Java 2D, który przy przetwarzaniu obrazu o specjalnie przygotowanych parametrach rastra powoduje odczyt poza buforem i/lub uszkodzenie pamięci JVM, co umożliwia RCE przez aplet/Java Web Start w przeglądarce. CVSS v2: 10.0 (AV:N/AC:L/Au:N/C:C/I:C/A:C).
Gdzie występuje / przykłady platform
- Endpointy z przeglądarką i wtyczką Java: Windows, macOS, Linux (w 2013 r. powszechne; dziś przeważnie legacy/ICS/offline).
- Środowiska VDI/kioski z dziedziczonymi aplikacjami Web Start.
- Nie dotyczy bezpośrednio serwerów (Oracle: luka dotyczy Javy uruchamianej w przeglądarce).
Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
Atakujący umieszcza na stronie WWW (lub w pakiecie exploitów) aplet/Java Web Start wczytujący obraz z nietypowymi parametrami rastra. Podczas renderowania w module Java 2D/CMM dochodzi do naruszenia pamięci JVM → przekazanie sterowania do złośliwego payloadu. W typowym łańcuchu drive‑by użytkownik odwiedza stronę (często watering hole), przeglądarka ładuje wtyczkę Java, a po eksploatacji następuje pobranie i uruchomienie kolejnego modułu (np. downloader), często z wykorzystaniem systemowych LOLBIN‑ów (cmd.exe, powershell.exe, rundll32.exe). Oracle podkreślał, że lukę należy traktować jako dotyczącą Javy w przeglądarkach (nie serwerowej).
Dlaczego skuteczna (historycznie):
- masowa ekspozycja wtyczki Java w przeglądarkach;
- niska interakcja użytkownika (często brak – lub akceptacja ostrzeżenia);
- natychmiastowe przejście do Execution po Initial Access (ATT&CK).
Artefakty i logi
| Źródło | ID / typ | Co obserwować | Wskazówki |
|---|---|---|---|
| Windows Security | 4688 (Process Create) | java.exe/javaw.exe/javaws.exe jako dziecko chrome.exe/msedge.exe/firefox.exe/iexplore.exe | Nietypowe dziś; silnie podejrzane w 2025 r. |
| Sysmon | 1 (Process Create) | java*.exe → uruchamia cmd.exe/powershell.exe/wscript.exe/rundll32.exe/mshta.exe | Łańcuch post‑eksploatacyjny |
| Sysmon | 3 (Network Connect), 22 (DNS) | Połączenia HTTP(S) zaraz po starcie java.exe do nieznanych domen; rzadkie SNI/JA3 | Korelować z Proxy/NGFW |
| Sysmon | 7 (ImageLoad) | Dynamiczne DLL do Javy ładowane z %TEMP%/%APPDATA% | Droppery |
| Sysmon | 11 (FileCreate) | Nowe JAR/EXE/DLL w profilach użytkownika | Artefakty post‑eksploatacyjne |
| Proxy/HTTP | — | Pobrania .jar/.class/MIME application/java-archive, stare typy application/x-java-applet | Wzorzec drive‑by |
| EDR (MDE/SentinelOne/itp.) | — | Reguły behawioralne: przeglądarka → Java → LOLBIN → sieć | Korelacje |
| CloudTrail (S3 data events) | GetObject | Pobrania .jar/.class z bucketów spoza allowlisty | Detekcja hostingu artefaktów |
| K8s audit | — | [N/D] — luka dot. klienta przeglądarkowego | |
| M365 Audit | — | [N/D] — brak bezpośredniego śladu |
Detekcja (praktyczne reguły)
Sigma (Windows / Sysmon)
title: Browser-Spawns-Java-And-Java-Spawns-LOLBIN (CVE-2013-1493 TTP)
id: 9b9a6e2f-9a1c-4bde-b3d9-13d313493000
status: experimental
logsource:
product: windows
category: process_creation
detection:
browser_parent:
ParentImage|endswith:
- '\chrome.exe'
- '\msedge.exe'
- '\firefox.exe'
- '\iexplore.exe'
java_proc:
Image|endswith:
- '\java.exe'
- '\javaw.exe'
- '\javaws.exe'
lolbin_child:
ParentImage|endswith:
- '\java.exe'
- '\javaw.exe'
- '\javaws.exe'
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\rundll32.exe'
- '\mshta.exe'
condition: (browser_parent and java_proc) or lolbin_child
fields:
- UtcTime
- Image
- ParentImage
- CommandLine
- ParentCommandLine
falsepositives:
- Rzadkie, legacy Web Start / środowiska deweloperskie
level: high
tags:
- attack.T1189
- attack.T1203
Splunk (SPL)
1) Przeglądarka → Java
index=sysmon sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational EventCode=1
| where mvfind(["chrome.exe","msedge.exe","firefox.exe","iexplore.exe"], lower(coalesce(ParentImage,ParentImage)))>=0
| where like(lower(Image), "%\\java.exe") OR like(lower(Image), "%\\javaw.exe") OR like(lower(Image), "%\\javaws.exe")
| stats earliest(_time) as firstSeen latest(_time) as lastSeen values(CommandLine) by Computer, User, ParentImage, Image, ParentCommandLine
2) Java → podejrzany LOLBIN / łańcuch procesu
index=sysmon EventCode=1 (Image="*\\cmd.exe" OR Image="*\\powershell.exe" OR Image="*\\wscript.exe" OR Image="*\\rundll32.exe" OR Image="*\\mshta.exe")
| join ProcessGuid type=inner [
search index=sysmon EventCode=1 (Image="*\\java.exe" OR Image="*\\javaw.exe" OR Image="*\\javaws.exe")
| table ProcessGuid, Computer, User, Image, ParentImage, CommandLine, ParentCommandLine, _time
]
| table _time, Computer, User, ParentImage, Image, CommandLine, ParentCommandLine
KQL (Microsoft Defender/Sentinel)
// Browser -> Java
DeviceProcessEvents
| where InitiatingProcessFileName in~ ("chrome.exe","msedge.exe","firefox.exe","iexplore.exe")
| where FileName in~ ("java.exe","javaw.exe","javaws.exe")
| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, InitiatingProcessCommandLine, AccountName
// Java -> LOLBIN within 2 min
let suspiciousChildren = dynamic(["cmd.exe","powershell.exe","wscript.exe","rundll32.exe","mshta.exe"]);
DeviceProcessEvents
| where InitiatingProcessFileName in~ ("java.exe","javaw.exe","javaws.exe")
| join kind=inner (
DeviceProcessEvents
| where FileName in~ (suspiciousChildren)
| project ChildTime=Timestamp, DeviceId, ChildFile=FileName, ChildCmd=ProcessCommandLine, InitiatingProcessParentId
) on DeviceId, InitiatingProcessId==InitiatingProcessParentId
| where ChildTime between (Timestamp .. Timestamp + 2m)
| project DeviceName, Timestamp, ChildTime, InitiatingProcessFileName, ChildFile, ChildCmd
CloudTrail query (CloudWatch Logs Insights – S3 Data Events)
Użyteczne, gdy wykrywamy hostowanie artefaktów JAR/CLASS w S3 (częsty etap w kampaniach drive‑by).
fields @timestamp, eventSource, eventName, requestParameters.bucketName, requestParameters.key, sourceIPAddress, userAgent
| filter eventSource = "s3.amazonaws.com" and eventName = "GetObject"
| filter requestParameters.key like /\.jar$/ or requestParameters.key like /\.class$/
| filter ispresent(userAgent) and (userAgent like 'Mozilla%' or userAgent like '%Java%')
| sort @timestamp desc
Elastic / EQL (Endpoint)
// Java spawns LOLBIN
process where
process.name in ("cmd.exe","powershell.exe","wscript.exe","rundll32.exe","mshta.exe") and
parent.process.name in ("java.exe","javaw.exe","javaws.exe")
Heurystyki / korelacje
- Łańcuch czasowy: browser → java.exe → LOLBIN → outbound HTTP(S)/DNS w krótkim oknie (≤2 min).
- Pliki tymczasowe: nowe
.jar/.dll/.exew%TEMP%,%APPDATA%,~/Library/Application Support. - Proxy/NGFW: nagłe pobrania JAR/CLASS z rzadkich domen → brak wcześniejszej reputacji.
- EDR: zastrzyk modułów do JVM spoza katalogów Javy; Java jako nietypowy rodzic skryptów/LOLBIN‑ów.
- Reputacja/Threat Intel: korelacja domen/IP z historycznymi pakietami exploitów (Blackhole/Sweet Orange itd.).
False positives / tuning
- Legitymne środowiska Web Start/IcedTea‑Web (intranety, ICS) — białe listy domen/aplikacji.
- Deweloperzy Javy uruchamiający narzędzia buildujące z przeglądarki.
- W 2025 r. każde uruchomienie wtyczki Java w przeglądarce jest podejrzane; tuning opierać na allowlistach domen i podpisów plików JAR.
Playbook reagowania (IR)
- Triage i izolacja: odłącz host, zachowaj pamięć/dysk (artefakty JVM).
- Zbieranie faktów: drzewo procesów od przeglądarki do
java*.exe, następnie do LOLBIN‑ów; zrzut listy modułów JVM; lista nowo utworzonych plików. - Sieć: zablokuj domeny/sumy SHA256 pobranych JAR/EXE; sprawdź proxy dla innych ofiar.
- Eskalacja/przeciwdziałanie:
- odinstaluj/wyłącz plugin Java;
- wymuś aktualizacje do JRE/JDK 7u17/6u43 na hostach legacy; rozważ całkowite usunięcie Javy z przeglądarek.
- Hunting retro (30–90 dni): wzorce pobrań
.jar/.class, łańcuchy browser → Java → LOLBIN. - Lessons learned: polityka click‑to‑play / blokada wtyczek, patch management, segmentacja egress.
Przykłady z kampanii / case studies
- Blackhole i inne pakiety exploitów (2013) szeroko nadużywały luk w Javie, w tym CVE‑2013‑1493, do drive‑by download i pobierania malware.
- Detekcje vendorów (MSFT) klasyfikowały ruch jako Exploit:Java/CVE‑2013‑1493 – wejście przez stronę WWW, następnie pobranie i uruchomienie plików.
Lab (bezpieczne testy) — przykładowe komendy
Wyłącznie w odizolowanym, testowym środowisku (VM, brak Internetu). Celem jest wygenerowanie artefaktów detekcyjnych, nie eksploatacja luki.
A. Symulacja łańcucha browser → Java
- Otwórz w przeglądarce lokalny plik HTML z linkiem
jnlp(pusty, benigny) albo uruchom:
# Windows (zainstalowana Java): symulacja startu Java z procesu użytkownika
Start-Process -FilePath "$env:ProgramFiles\Google\Chrome\Application\chrome.exe" -ArgumentList "about:blank"
Start-Sleep -Seconds 2
Start-Process -FilePath "C:\Program Files\Java\jre\bin\javaw.exe" -ArgumentList "-version"
- Sprawdź, czy reguły Sigma/Splunk/KQL łapią „browser → javaw.exe”.
B. Java → LOLBIN (benigny helper)
Utwórz prosty JAR uruchamiający notepad (tylko logówka):
# Linux/macOS (analogicznie w Windows z javac)
cat > Runner.java << 'EOF'
public class Runner {
public static void main(String[] args) throws Exception {
new ProcessBuilder("notepad.exe").start(); // na *nix np. "xcalc"
}
}
EOF
javac Runner.java && jar cfe runner.jar Runner Runner.class
# Uruchom:
java -jar runner.jar
Oczekiwany artefakt: java.exe → notepad.exe (LOLBIN), co powinno trafić w reguły.
Mapowania (Mitigations, powiązane techniki)
Mitigations (ATT&CK):
- M1051 – Update Software (patchowanie Javy; eliminacja wtyczki/legacy)
- M1031 – Network Intrusion Prevention (blok sygnatur exploit‑kit/JAR)
- M1040 – Behavior Prevention on Endpoint (EDR/anty‑exploit)
- M1017 – User Training (świadomość ryzyk apletów/ostrzeżeń przeglądarki)
Powiązane techniki:
- T1189 Drive‑by Compromise (wejście)
- T1203 Exploitation for Client Execution (RCE w kliencie)
- T1204.002 User Execution: Malicious File (czasem wymagane kliknięcie/akcept)
- T1059 Command and Scripting Interpreter (następstwa)
Źródła / dalsza literatura
- Oracle Security Alert (zakres: dotyczy Javy w przeglądarkach; wersje naprawcze 7u17/6u43) (Oracle)
- Oracle JDK 7u17 Release Notes (baseline wersji z poprawką) (Oracle)
- NVD CVE‑2013‑1493 (opis techniczny, CVSS 10.0, „exploited in the wild”) (NVD)
- CISA Alert: Oracle Java Contains Multiple Vulnerabilities (wersje podatne i zalecenia) (CISA)
- Microsoft WDSI – Exploit:Java/CVE‑2013‑1493 (mechanika ataku przez WWW) (Microsoft)
- McAfee Labs (pakiety exploitów wykorzystywały m.in. CVE‑2013‑1493) (McAfee)
- ATT&CK – T1189 / T1203 / TA0001 / TA0002 / v18 updates (mapowanie technik i wersja ATT&CK) (MITRE ATT&CK)
Checklisty dla SOC / CISO (krótko)
SOC (operacyjne):
- Włączone logi: Sysmon (1/3/7/11/22), Security 4688, EDR z korelacją rodzic‑dziecko.
- Reguły: „browser → java.exe”, „java.exe → LOLBIN”, pobrania
.jar/.class. - Blokady: domeny/URL z kampanii, Content‑Type
application/java-archive. - Hunting retro: 30–90 dni w proxy/EDR pod kątem JAR/CLASS + łańcuch procesów.
- Alerting na dowolne uruchomienie wtyczki Java w przeglądarce (2025).
CISO (strategiczne):
- Eliminacja wtyczek Java (NPAPI) w organizacji; akceptacja wyjątków tylko czasowa.
- Polityka patchowania: min. 7u17/6u43 na systemach legacy lub migracja/wycofanie.
- EDR z prewencją behawioralną (M1040) i IPS przy egress (M1031).
- Program świadomości (M1017) dot. apletów/ostrzeżeń przeglądarki.
Uwaga o ryzyku: Choć wtyczka Java jest powszechnie wycofana we współczesnych przeglądarkach, luka ma znaczenie historyczne, a wewnętrzne środowiska legacy (np. ICS/offline) mogą wciąż generować analogiczne ścieżki ataku.
Rekomendacja: najlepiej całkowicie usunąć wtyczkę Java z przeglądarek i ograniczyć Javę do aplikacji lokalnych z aktualną wersją JVM.
Jeden komentarz do “CVE-2013-1493 — Oracle Java SE (2D/CMM) RCE przez obraz rastrowy”
Możliwość komentowania została wyłączona.