
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 lektura
- 14 Checklisty dla SOC / CISO
TL;DR
- Krytyczna luka w Oracle Java 7 (JDK/JRE 7u10 i starsze) pozwalała na zdalne wykonanie kodu przez applet lub Java Web Start (drive‑by). Java 6 nie była podatna. CVSS v2: 10.0.
- Mechanizm: obejście Security Managera przez dwie podatności: (a) łańcuch JMX/MBean (
getMBeanInstantiator→findClass), (b) błąd w Reflection (rekurencja i pominięcie kontroli). Powszechnie wykorzystywana w styczniu 2013 r. (m.in. Blackhole/Nuclear Pack). - Oracle wydało poza‑cykliczną łatę (7u11) i podniosło domyślny poziom bezpieczeństwa Javy do High (klik‑to‑run).
- Typowe ślady: łańcuch procesów
browser → jp2launcher/java[w].exe → cmd/powershell/wscript, pobrania.jar/.jnlpz nieznanych domen, logi Sun/Java/Deployment. - Detekcja: korelacja proxy/DNS + EDR/Windows (Sysmon 1/3/7/11/22, Security 4688/5156) + MDE (DeviceProcessEvents/DeviceNetworkEvents).
- Mitigacje: aktualizacja/wyłączenie wtyczki Java, blokada MIME
application/java-archiveiapplication/x-java-jnlp-file, polityki ASR/EDR.
Krótka definicja techniczna
CVE‑2013‑0422 to para luk w Oracle Java 7 umożliwiająca zdalne wykonanie kodu i wyjście z piaskownicy przez niezaufane applet/JNLP w przeglądarce. Wektor: drive‑by. Dotyczy JDK/JRE 7u10 i starszych; JDK/JRE 6 nie dotyczy. CVSSv2=10.0.
Gdzie występuje / przykłady platform
- Windows/macOS/Linux (endpoint, przeglądarka + plugin Java) — klientowe uruchomienie applet/JNLP. Nie dotyczy serwerów ani samodzielnych aplikacji Java bez przeglądarki.
- VDI / środowiska korporacyjne — stacje administracyjne z historycznie zainstalowaną Javą 7.
- Proxy/NGFW/MDE/EDR/SIEM — główne źródła telemetrii do detekcji.
- Chmury (M365/Azure/AWS/GCP) — detekcja po stronie endpointów zarządzanych (Defender for Endpoint), na brzegach (CloudFront/NGFW) lub – rzadziej – w CloudTrail (gdy organizacja sama hostowała artefakty .jar/.jnlp w S3).
Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
Atak następował po wejściu użytkownika na złośliwą lub skompromitowaną stronę. Niezaufany applet/JNLP wykorzystywał dwa błędy w Javie 7:
- JMX/MBean — publiczne
getMBeanInstantiatorwJmxMBeanServerdawało dostęp do prywatnego obiektu MBeanInstantiator i metodfindClass, co umożliwiało załadowanie klas poza kontrolą Security Managera. - Reflection — rekurencyjne wywołania API refleksji omijały kontrolę w
MethodHandles.Lookup.checkSecurityManagerz powodu sposobu działaniasun.reflect.Reflection.getCallerClass.
W praktyce oznaczało to pełne RCE z uprawnieniami użytkownika po samej wizycie na stronie (0‑click beyond browsing). Luki były aktywnie wykorzystywane przez Blackhole i Nuclear Pack od 10–11 stycznia 2013 r. Oracle zareagowało alarmem bezpieczeństwa i 7u11 (zmiana default na High, wymuszając potwierdzenia dla appletów).
Artefakty i logi
| Źródło | EID/typ | Co szukać | Uwagi |
|---|---|---|---|
| Sysmon | 1 (Process Create) | chrome/iexplore/firefox → jp2launcher.exe/java.exe/javaw.exe; dalej spawn cmd.exe, powershell.exe, wscript.exe, mshta.exe | jp2launcher.exe = Java Web Launcher. |
| Sysmon | 3 (Network Connect) | java[w].exe łączące się do Internetu (80/443) tuż po pobraniu .jar/.jnlp | Korelować z proxy/DNS. |
| Sysmon | 7 (Image Load) | DLL wtyczki Java (np. npjp2.dll, jp2iexp.dll) | Indykatory uruchomienia pluginu. |
| Sysmon | 11/22 | Tworzenie plików w %AppData% / zapytania DNS przez java.exe | Dropper po eksploatacji. |
| Windows Security | 4688/4689 | Tworzenie/zamknięcie procesu jak wyżej | Włącz audyt procesu. |
| Windows Filtering Platform | 5156/5157 | Dopuszczenie/blokada połączeń java.exe | Korelacja z hostem docelowym. |
| Proxy/NGFW | HTTP | Odpowiedzi Content-Type: application/java-archive (.jar), application/x-java-jnlp-file (.jnlp) z nietypowych domen | Wzorzec drive‑by. |
| Java Deployment | pliki | deployment.properties, logi w …\LocalLow\Sun\Java\Deployment\ | Lokacje użytkownika na Windows/macOS/Linux. |
| MDE (Advanced Hunting) | DeviceProcessEvents, DeviceNetworkEvents | Te same łańcuchy + zdalne URL .jar/.jnlp | |
| CloudTrail (S3 data events) | GetObject | Jeśli organizacja hostowała .jar/.jnlp — nieoczekiwane pobrania/UA z Java 1.7 | Wymaga włączonych data events. |
| KEV status | — | CVE figuruje w CISA KEV (znana eksploatacja) | Odniesienie przez NVD. |
Detekcja (praktyczne reguły)
Sigma (Sysmon — Java spawn + post‑exploitation shell)
title: Java Plugin Spawns Suspicious Shell (CVE-2013-0422 Context)
id: 6f1a2a0c-5a0e-4bde-9d1c-0422a7java
status: experimental
description: Wykrywa łańcuch browser→java/jp2launcher→shell po wizycie na stronie (drive-by).
author: Badacz CVE
logsource:
product: windows
category: process_creation
detection:
selection_parent:
ParentImage|endswith:
- '\chrome.exe'
- '\iexplore.exe'
- '\firefox.exe'
- '\msedge.exe'
selection_java:
Image|endswith:
- '\java.exe'
- '\javaw.exe'
- '\jp2launcher.exe'
selection_shell:
CommandLine|contains:
- 'cmd.exe'
- 'powershell.exe'
- 'wscript.exe'
- 'mshta.exe'
condition: selection_parent and selection_java and selection_shell
fields:
- Image
- ParentImage
- CommandLine
- ProcessGuid
- ParentProcessGuid
falsepositives:
- Legit applet/JNLP uruchamiający narzędzia systemowe (rzadkie)
level: high
tags:
- attack.t1189
- attack.t1203
- cve.2013-0422
Sigma (Sysmon — podejrzane połączenia java.exe)
title: Java Process Network Activity To Untrusted Domains
id: 8b0f7c87-8d07-4a1b-9f77-jar-net
status: experimental
logsource:
product: windows
category: network_connection
detection:
selection:
Image|endswith:
- '\java.exe'
- '\javaw.exe'
DestinationPort:
- 80
- 443
filter_corp_domains:
DestinationHostname|endswith:
- '.corp.local'
- '.trusted.example'
condition: selection and not filter_corp_domains
level: medium
tags:
- attack.t1189
- attack.t1203
Splunk (SPL)
index=winevent* (EventCode=4688 OR sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1)
| eval parent=coalesce(ParentImage,ProcessGuidParent,ParentProcessName)
| search parent IN ("*\\chrome.exe","*\\iexplore.exe","*\\firefox.exe","*\\msedge.exe")
| search Image IN ("*\\java.exe","*\\javaw.exe","*\\jp2launcher.exe")
| stats earliest(_time) as first_seen, values(CommandLine) values(ParentCommandLine) by host, Image, parent, ProcessId
| join type=left host, ProcessId [ search index=winevent* EventCode IN (4688,1) Image IN ("*\\cmd.exe","*\\powershell.exe","*\\wscript.exe","*\\mshta.exe") | table host, ParentProcessId, Image, CommandLine, _time ]
| sort - first_seen
KQL (Microsoft 365 Defender – Advanced Hunting)
let browsers = dynamic(["chrome.exe","iexplore.exe","firefox.exe","msedge.exe"]);
let shells = dynamic(["cmd.exe","powershell.exe","wscript.exe","mshta.exe"]);
DeviceProcessEvents
| where Timestamp > ago(7d)
| where FileName in~ ("java.exe","javaw.exe","jp2launcher.exe")
| where InitiatingProcessFileName in~ (browsers)
| join kind=leftouter (
DeviceProcessEvents
| where Timestamp > ago(7d)
| where InitiatingProcessFileName in~ ("java.exe","javaw.exe")
| where FileName in~ (shells)
| project DeviceId, ShellTime=Timestamp, FileName, ProcessCommandLine, InitiatingProcessId
) on DeviceId, InitiatingProcessId
| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, RemoteUrl
CloudTrail (CloudWatch Logs Insights — S3 data events)
Uwaga: tylko gdy masz S3 data events. Szuka pobrań
.jar/.jnlpz User-Agent zawierającym „Java”.
fields @timestamp, eventSource, eventName, sourceIPAddress, userAgent, requestParameters.bucketName as bucket, requestParameters.key as key
| filter eventSource = "s3.amazonaws.com" and eventName = "GetObject"
| filter key like /(\.jar|\.jnlp)$/i
| filter userAgent like /Java/i
| sort @timestamp desc
Elastic EQL
sequence by host.id with maxspan=5m
[ process where event.action == "start" and
process.name in ("chrome.exe","iexplore.exe","firefox.exe","msedge.exe") ]
[ process where event.action == "start" and
process.name in ("java.exe","javaw.exe","jp2launcher.exe") and
process.parent.name in ("chrome.exe","iexplore.exe","firefox.exe","msedge.exe") ]
[ process where event.action == "start" and
process.parent.name in ("java.exe","javaw.exe") and
process.name in ("cmd.exe","powershell.exe","wscript.exe","mshta.exe") ]
Heurystyki / korelacje
- Korelacja czasu: pobranie
*.jar/*.jnlpw proxy/DNS ±30s →java.exe/javaw.exe→ shell. - User‑Agent / MIME:
Java/1.7.0_10iapplication/java-archivez domen o niskiej reputacji. - Ścieżki plików: nowe pliki w
%AppData%\po uruchomieniujava.exe. - Rzadkie procesy potomne: Java rzadko powinna uruchamiać interpreter poleceń na stacjach użytkowników.
- Zbieżność z KEV: priorytetyzuj alerty dla CVE na liście Known Exploited Vulnerabilities.
False positives / tuning
- Starsze aplikacje intranetowe oparte na appletach/JNLP (bankowość/SCADA/HCM). Dodaj allowlist domen i ścieżek aplikacji.
- Dev‑tooling (Maven/Gradle) – rozpoznaj przez parametry linii poleceń i katalog roboczy.
- Zamiast wyłączać reguły, dookreśl łańcuch (browser→java→shell) lub warunki (spoza strefy zaufanej, brak podpisu binariów).
Playbook reagowania (IR)
- Triage & izolacja: odłącz host, zabezpiecz RAM/dysk.
- Zbieranie artefaktów:
- EDR, Sysmon, Windows Security; cache przeglądarek; katalog
…\LocalLow\Sun\Java\Deployment\.
- EDR, Sysmon, Windows Security; cache przeglądarek; katalog
- Łowy zależne od CVE: wyszukaj łańcuch
browser→java→shell, pliki.jar/.jnlp, anomalie DNS. - Usunięcie wektora: odinstaluj/wyłącz Javę w przeglądarce, wymuś JRE ≥ 7u11 (historycznie; dziś → brak pluginu) i politykę High.
- Analiza dropperów/persistencji: Autoruns (Run/RunOnce), Scheduled Tasks,
%ProgramData%/%AppData%. - Blokady: domeny/URL/sha256 w proxy/EDR; reguły w NGFW.
- Komunikacja i lessons learned: wytyczne dla użytkowników, polityki usunięcia legacy‑Javy.
Przykłady z kampanii / case studies
- Blackhole/Nuclear Pack (styczeń 2013): szybka integracja exploita 0‑day CVE‑2013‑0422, masowe drive‑by.
- Reakcja dostawcy: Oracle Security Alert z 13 stycznia 2013 r., podniesienie domyślnego poziomu bezpieczeństwa na High i publikacja 7u11 (poza cyklem).
Lab (bezpieczne testy) — przykładowe komendy
Wyłącznie w izolowanym labie. Poniższe testy nie eksploatują CVE‑2013‑0422 — służą do walidacji detekcji (łańcuch procesów i artefakty sieciowe).
A. Symulacja łańcucha browser → java → shell
- Otwórz przeglądarkę, następnie uruchom Java w trybie „klienta” (symulacja):
# uruchamia jawnie 'java.exe' z benignym poleceniem do wygenerowania telemetrii & "$Env:ProgramFiles\Java\jre*\bin\java.exe" -cp . -Dtest.run=1 -jar .\benign.jar 2>$null - Zastępczo (bez JAR):
Start-Process -FilePath "$Env:ProgramFiles\Java\jre*\bin\javaw.exe" -ArgumentList "-version" - Uruchomioną telemetrię „shella” zasymuluj (bezpiecznie):
# symulacja potomka (cmd) po Java — tylko test logów Start-Process -FilePath "$Env:SystemRoot\System32\cmd.exe" -ArgumentList "/c", "echo test-from-java"
Cel: sprawdzić, czy reguły z sekcji 7 flagują procesy potomne po aktywności Java.
B. Symulacja artefaktu sieciowego (.jar/.jnlp)
- Na hoście labowym:
python3 -m http.server 8000 - Pobierz plik
test.jarprzez przeglądarkę lubInvoke-WebRequest– wygeneruje log proxy/DNS/MDE:iwr http://<twoj_lab_host>:8000/test.jar -OutFile $env:TEMP\test.jar
C. Walidacja logów Java Deployment (Windows)
Sprawdź obecność deployment.properties w:%USERPROFILE%\AppData\LocalLow\Sun\Java\Deployment\deployment.properties.
Mapowania (Mitigations, powiązane techniki)
Mitigations (ATT&CK):
- M1051 — Update Software (aktualizacje/łatki).
- M1042 — Disable or Remove Feature or Program (wyłączenie wtyczki Java, blokada JNLP).
- M1040 — Behavior Prevention on Endpoint (EDR/ASR).
- M1037 — Filter Network Traffic (blok MIME/TLD/URL).
- M1030 — Network Segmentation (izolacja stacji wysokiego ryzyka/VDI).
Powiązane techniki ATT&CK (przykłady):
- T1189 — Drive‑by Compromise (Initial Access).
- T1203 — Exploitation for Client Execution (Execution).
- T1204.001 — User Execution: Malicious Link (Execution → Social / link trigger).
Źródła / dalsza lektura
- Oracle Security Alert for CVE‑2013‑0422 (opis, wersje dotknięte, CVSS 10.0, domyślny poziom High, data 2013‑01‑13). (Oracle)
- NVD CVE‑2013‑0422 (szczegóły MBean/Reflection, KEV, metryki). (NVD)
- ESET WeLiveSecurity (2013‑01‑11) — Blackhole/Nuclear zawierają exploit 0‑day na CVE‑2013‑0422. (We Live Security)
- KrebsOnSecurity (2013‑01‑10 i 2013‑01‑13) — informacja o 0‑day w crimeware oraz publikacja poprawki Oracle. (Krebs on Security)
- Microsoft Security Intelligence — klasyfikacje Exploit:Java/CVE‑2013‑0422 i wersje dotknięte. (Microsoft)
- Tenable (Nessus) — wzmianka o wektorze
MBeanInstantiator.findClass. (Tenable®) - MITRE ATT&CK — T1189, T1203, T1204.001; ATT&CK v18 update. (MITRE ATT&CK)
- Lokalizacje plików Java Deployment (Oracle docs). (Oracle Docs)
Checklisty dla SOC / CISO
SOC (operacyjna):
- Korelacja: proxy/DNS
*.jar/*.jnlp↔java[w].exe↔ shell (Sysmon 1/3 + Security 4688). - Hunting MDE:
InitiatingProcessFileName in (chrome.exe, iexplore.exe, firefox.exe, msedge.exe)∧FileName in (java.exe, javaw.exe, jp2launcher.exe)∧ (dziecko =cmd/powershell/wscript/mshta). - Sprawdź
…\LocalLow\Sun\Java\Deployment\na artefakty (czas/moduły). - Wzorce User‑Agent:
Java/1.7.0_10; MIMEapplication/java-archive/application/x-java-jnlp-file. - Skan hostów pod kątem dropperów w
%AppData%i autostartu.
CISO (strategiczna):
- Eliminacja Javy w przeglądarkach (M1042) + polityka click‑to‑run.
- Patch management i wycofanie legacy (M1051).
- Wymuszenie EDR/ASR (M1040) i filtracji na brzegu (M1037).
- Segmentacja (M1030) dla stacji wysokiego ryzyka.
- Priorytetyzacja KEV i regularne tabletopy „drive‑by → execution”.
Uwaga końcowa: Oracle wskazuje, że podatność dotyczyła tylko klientowych wdrożeń Javy (applet/JNLP), a nie serwerów czy samodzielnych aplikacji Java; poprawka 7u11 wprowadziła High jako domyślny poziom bezpieczeństwa. Dziś najlepszą praktyką jest całkowite usunięcie lub odseparowanie wtyczki Java z przeglądarek użytkowników.
Jeden komentarz do “CVE-2013-0422 — Java 7 Security Manager Bypass / Sandbox Escape (RCE)”
Możliwość komentowania została wyłączona.