
Co znajdziesz w tym artykule?
- 1 TL;DR
- 2 Krótka definicja techniczna
- 3 Gdzie występuje / przykładowe platformy
- 4 Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
- 5 Artefakty i logi
- 6 Detekcja (praktyczne reguły)
- 7 Heurystyki / korelacje (co łączyć)
- 8 False positives / tuning
- 9 Playbook reagowania (IR)
- 10 Przykłady z kampanii / case studies
- 11 Lab (bezpieczne testy) — symulacja dla SOC
- 12 Mapowania (Mitigations, powiązane techniki)
- 13 Źródła / dalsza lektura
- 14 Checklisty dla SOC / CISO (krótko)
TL;DR
Błąd w podsystemie HotSpot/bytecode verifier Javy umożliwia zdalne wykonanie kodu oraz ucieczkę z sandboxa po wejściu na złośliwą stronę lub uruchomieniu nieufnego apletu/JNLP. W praktyce był intensywnie wykorzystywany przez zestawy exploitów (np. Blackhole) do początkowej infekcji stacji roboczych. Aktualizacja JRE/JDK do 7u5/6u33+ i blokada treści web to kluczowe działania. Mapa do ATT&CK: T1189 + T1203.
Krótka definicja techniczna
CVE-2012-1723 to krytyczna podatność RCE w Oracle Java SE (HotSpot) polegająca na błędnej optymalizacji i niewystarczającym sprawdzaniu typów w weryfikatorze bajtkodu dla instrukcji dostępu do pól/statycznych, co umożliwia sandbox escape i wykonanie dowolnego kodu w kontekście użytkownika.
Gdzie występuje / przykładowe platformy
- Windows / macOS / Linux (endpointy z JRE/JDK, dawne wtyczki przeglądarek NPAPI, Java Web Start) — scenariusz klienta (najczęstszy).
- AD / M365 / ESXi / K8s / chmury (AWS/Azure/GCP): brak bezpośredniego wektora — wpływ pośredni poprzez kompromitację stacji użytkownika i dalsze TTPs (np. kradzież sesji/danych po inicjalnym dostępie). [Nie dotyczy bezpośrednio].
Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
Błąd wynika z nieprawidłowej optymalizacji i niedostatecznej kontroli typów przez weryfikator bajtkodu HotSpot dla instrukcji GETFIELD/PUTFIELD/GETSTATIC/PUTSTATIC, co prowadzi do niespójności typów i obejścia kontroli bezpieczeństwa. Skutkiem jest ucieczka z sandboxa JRE i możliwość załadowania dodatkowych klas z podwyższonymi uprawnieniami, a dalej RCE. Podatność była wieloplatformowa i szybko trafiła do Blackhole exploit kit oraz do modułów narzędzi ofensywnych, przez co stała się powszechna w kampaniach drive‑by.
Z punktu widzenia ofiary inicjatorem jest zwykle przeglądarka otwierająca stronę z applet/JAR/JNLP, co powoduje załadowanie złośliwej klasy Javy i eksploitację bez dodatkowej interakcji użytkownika (CVSS UI:N). Efektem wtórnym bywają procesy potomne (np. cmd.exe, powershell.exe) lub pobieranie dodatkowych plików (droppers).
Artefakty i logi
| Źródło | Co zbierać | Przykłady / wskazówki |
|---|---|---|
| Windows Security | EID 4688 (tworzenie procesu) | ParentImage=...\\java.exe/javaw.exe uruchamia cmd.exe, powershell.exe, wscript.exe, rundll32.exe, mshta.exe. |
| Sysmon | EID 1 (Process Create), 3 (Network Connect), 11 (FileCreate) | Łańcuch java[w].exe → {shell/script}; połączenia HTTP/HTTPS do domen niskiej reputacji; zapisy .jar/.class w %TEMP%. |
| Proxy/HTTP logs | Żądania do *.jar/*.jnlp; UA Java/; referrer do świeżo zarejestrowanych domen | Korelować z następnymi procesami potomnymi i zapisami w profilu użytkownika. |
| EDR/AV | Detekcje apletów i loaderów | Nazwy: Exploit:Java/CVE-2012-1723 (Microsoft), sygnatury IDS/IPS (Symantec/Broadcom). |
| DNS | Rozwiązania domen wykorzystywanych w kampaniach | Domeny jednorazowe, fast‑flux. |
| CloudTrail (S3 Data Events)* | Rzadkie — pobrania GetObject .jar przez konta korp. | eventSource='s3.amazonaws.com' AND eventName='GetObject' AND requestParameters.key LIKE '%.jar' — tylko jeśli włączone Data Events/Lake. |
| K8s audit / M365 | [brak bezpośrednich artefaktów] | Nie dotyczy — klientowa eksploitacja Javy. |
* Uwaga: większość scenariuszy drive‑by nie przechodzi przez konta AWS ofiary.
Detekcja (praktyczne reguły)
Sigma (Sysmon / Windows)
title: Java Spawning Suspicious Children (CVE-2012-1723 Pattern)
id: 8da0d2b5-4f2b-4a1e-9f1e-1723java-rce
status: experimental
description: Wykrywa uruchamianie podejrzanych procesów potomnych przez java.exe/javaw.exe
references:
- https://nvd.nist.gov/vuln/detail/CVE-2012-1723
- https://attack.mitre.org/techniques/T1203/
- https://attack.mitre.org/techniques/T1189/
tags:
- attack.t1203
- attack.t1189
logsource:
product: windows
service: sysmon
detection:
parent_java:
ParentImage|endswith:
- '\java.exe'
- '\javaw.exe'
child_susp:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\rundll32.exe'
- '\mshta.exe'
condition: parent_java and child_susp
falsepositives:
- Narzędzia deweloperskie (Maven/Gradle), instalatory
level: high
Splunk (SPL, Sysmon EID=1)
index=endpoint sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1
| eval parent=lower(ParentImage), child=lower(Image)
| search parent="*\\java.exe" OR parent="*\\javaw.exe"
| search child="*\\cmd.exe" OR child="*\\powershell.exe" OR child="*\\wscript.exe" OR child="*\\cscript.exe" OR child="*\\rundll32.exe" OR child="*\\mshta.exe"
| stats count min(_time) as first_seen max(_time) as last_seen by host, ParentImage, ParentCommandLine, Image, CommandLine, User, process_guid, parent_process_guid
KQL (Microsoft 365 Defender)
DeviceProcessEvents
| where InitiatingProcessFileName in~ ("java.exe","javaw.exe")
| where FileName in~ ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","rundll32.exe","mshta.exe")
| summarize count(), first_seen=min(Timestamp), last_seen=max(Timestamp)
by DeviceName, InitiatingProcessAccountName, InitiatingProcessFileName, FileName,
InitiatingProcessCommandLine, CommandLine, InitiatingProcessSHA256, SHA256
(Opcjonalnie, korelacja ruchu sieciowego):
DeviceNetworkEvents
| where InitiatingProcessFileName in~ ("java.exe","javaw.exe")
| where RemoteUrl has_any (".jar",".jnlp",".class")
| summarize dcount(RemoteUrl), makeset(RemoteUrl) by DeviceName, InitiatingProcessFileName, bin(Timestamp, 15m)
AWS (CloudTrail Lake / Athena — tylko gdy włączone S3 Data Events)
-- CloudTrail Lake / Athena (przykład): pobrania *.jar* przez tożsamości korp.
SELECT eventTime, userIdentity.arn, sourceIPAddress, requestParameters.bucketName as bucket,
requestParameters.key as objectKey, userAgent
FROM cloudtrail_logs
WHERE eventSource = 's3.amazonaws.com'
AND eventName = 'GetObject'
AND requestParameters.key LIKE '%.jar'
AND userAgent LIKE 'Java/%';
Wymaga rejestrowania Data Events dla S3 i zapytań Lake/Athena.
Elastic (EQL)
process where
process.parent.name in ("java.exe","javaw.exe") and
process.name in ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","rundll32.exe","mshta.exe")
Heurystyki / korelacje (co łączyć)
- Łańcuch czasowy (±5 min): (Proxy/EDR) pobranie
*.jar/*.jnlp→ (Sysmon)java[w].exestart → proces potomny z interpretatorem/skryptem → (Sysmon 3) nowa sesja sieciowa C2. - UA i referer:
User-Agent: Java/+ domena świeżo zarejestrowana + brak wcześniejszych hitów w organizacji. - Ścieżki plików: zapisy w
%TEMP%,%USERPROFILE%\AppData\Local\Temp\z rozszerzeniami.jar/.class, po których następuje wykonanie EXE/DLL. - EDR/AV: alarmy typu Exploit:Java/CVE-2012-1723 skorelowane z ruchem do nowych domen.
False positives / tuning
- Deweloperzy Java (Maven/Gradle/ant) mogą sporadycznie uruchamiać powłokę — whitelisting hostów dev, podpisanych ścieżek narzędzi (np. maven wrapper) i repozytoriów artefaktów.
- Instalatory (np. launchery gier/aplikacji na Javie) — filtruj po katalogu
Program Files\Java\bin\java.exevs. embedded JRE w katalogu aplikacji. - Agreguj alert dopiero, gdy co najmniej dwa warunki spełnione: java → child proc i pobranie
*.jar/.jnlpz nieznanej domeny.
Playbook reagowania (IR)
- Kwalifikacja/izolacja: odłącz host od sieci (EDR izolacja).
- Identyfikacja wersji JRE/JDK:
java -version; w Windows sprawdźHKLM\Software\JavaSoft\Java Runtime Environment\*. - Zabezpieczenie dowodów: ram dump (jeśli polityka pozwala), MFT/$UsnJrnl, prefetch, zestaw logów (Sysmon, proxy, DNS).
- Triage wskaźników: hashe pobranych JAR/EXE, domeny, UA
Java/. - Remediacja: usuń artefakty, zablokuj domeny/URL-e, zaktualizuj JRE/JDK do 7u5/6u33+ (lub nowszych LTS), wyłącz przestarzałe wtyczki Java/Java Web Start.
- Hunt (24–72h wstecz): wzorzec
java[w].exe → {cmd/powershell/...}+ GET*.jarw proxy/DNS. - Lessons learned: egzekwuj M1021/M1048/M1051 (Mitigations, poniżej).
Przykłady z kampanii / case studies
- Blackhole exploit kit (2012): szybka integracja exploitu na CVE‑2012‑1723; ataki drive‑by masowo infekowały hosty przez aplety Javy; publiczny opis procesu wykorzystania i ucieczki z sandboxa.
- Microsoft WDSI: rodzina detekcji Exploit:Java/CVE‑2012‑1723 — aplet pobiera i uruchamia dodatkowe pliki z zewnętrznego hosta po wejściu na zhakowaną stronę.
- Sygnatury IPS (Broadcom/Symantec): gotowe reguły sieciowe podkomponentu HotSpot dla tego CVE.
- CISA KEV: CVE wpisany do Known Exploited Vulnerabilities (wymóg patchowania dla FCEB). Informacja widnieje m.in. na karcie NVD (odniesienie do KEV).
Lab (bezpieczne testy) — symulacja dla SOC
Cel: przetestować reguły bez eksploitacji — wygenerować podejrzany łańcuch
java → shell.
- Kod (bezpieczny):
TestSpawn.javaimport java.io.*; public class TestSpawn { public static void main(String[] args) throws Exception { new ProcessBuilder("cmd.exe", "/c", "echo HelloFromJava").start().waitFor(); } } - Budowa i uruchomienie (host testowy/VM):
javac TestSpawn.java jar --create --file test.jar TestSpawn.class java -cp . TestSpawn java -jar test.jar - Oczekiwane artefakty: Sysmon EID=1 (
java.exe→cmd.exe), opcjonalnie EID=3 (połączenia, jeśli dodaćcurlw ProcessBuilder). - Weryfikacja: sprawdź, czy zadziałały Sigma/SPL/KQL/EQL z sekcji 7.
Uwaga: Testy wyłącznie w odizolowanej VM i ze znanym, niewinnym ładunkiem.
Mapowania (Mitigations, powiązane techniki)
Mitigations (ATT&CK Enterprise):
- M1051 — Update Software: szybkie łatki JRE/JDK (7u5/6u33+).
- M1042 — Disable or Remove Feature or Program: usuń/wyłącz wtyczkę Java, Java Web Start.
- M1021 — Restrict Web‑Based Content: proxy/WAF/filtry treści blokujące
*.jar/*.jnlp. - M1048 — Application Isolation and Sandboxing: sandboxing przeglądarki/aplikacji.
- M1031 — Network Intrusion Prevention: sygnatury IDS/IPS dla znanych kampanii.
Powiązane techniki ATT&CK:
- T1189 — Drive‑by Compromise (wejście na stronę inicjuje eksploatację).
- T1203 — Exploitation for Client Execution (podatność w aplikacji klienckiej — Java).
Źródła / dalsza lektura
- NVD (CVE-2012-1723): opis, CVSS 3.1 (9.8), wzmianka o KEV, historia zmian. (NVD)
- Oracle Java SE CPU — czerwiec 2012 (tekstowa risk matrix): opis CVE‑2012‑1723 (HotSpot), dotknięte wersje, scenariusz klienta. (Oracle)
- Tenable (Nessus 64848): wersje naprawcze 7u5/6u33/5.0u36/1.4.2_38. (Tenable®)
- OpenJDK (mailing list): powiązanie z Issues in client compiler (S7152811). (mail.openjdk.java.net)
- ESET WeLiveSecurity: analiza (błąd w weryfikatorze bajtkodu, Blackhole). (We Live Security)
- Microsoft WDSI: Exploit:Java/CVE-2012-1723 — zachowanie zagrożenia. (Microsoft)
- Broadcom/Symantec: sygnatura Web Attack: Oracle Java SE CVE‑2012‑1723. (Broadcom)
- ATT&CK v18 (Version history): aktualna wersja ramy. (MITRE ATT&CK)
- ATT&CK techniki: T1189, T1203. (MITRE ATT&CK)
- AWS (CloudTrail/Athena/Lake): przykłady zapytań i wymagania dla Data Events. (AWS Documentation)
Checklisty dla SOC / CISO (krótko)
SOC (operacyjne):
- Wdrożone reguły: Sigma/EQL/KQL/SPL z korelacją
java[w].exe → child + *.jar/.jnlp - Blokady proxy:
*.jar,*.jnlp, UAJava/z Internetu, wyjątki tylko dla zaufanych repozytoriów - Polowanie na hosty z niezałatanym JRE/JDK; inwentaryzacja wersji
- Blokada/wycofanie wtyczek Java/Java Web Start (jeśli jeszcze obecne)
- Feed KEV — CVE-2012-1723 oznaczone jako exploited-in-the-wild (priorytet)
CISO (strategiczne):
- Polityka M1051: SLA na łatki dla RCE w komponentach klienckich
- M1042/M1048: eliminacja legacy pluginów + izolacja aplikacji przeglądarkowych
- M1021/M1031: restrykcja treści web i IPS na granicy
- Program zarządzania technologiami starszymi (EOL) oraz egzekwowanie standardów oprogramowania
Uwaga o ryzyku: CVE‑2012‑1723 pozostaje klasycznym przykładem, jak jedna luka w środowisku klienckim może zapewnić atakującym natychmiastowy punkt wejścia (Initial Access) i wykonanie kodu (Execution). Nawet dziś, w retrospektywie, jej wzorce artefaktów (Java → child proc, pobrania JAR) są cennymi sygnałami do budowy analityk behawioralnych w SOC.
Jeden komentarz do “CVE-2012-1723 — Oracle Java SE HotSpot (bytecode verifier) RCE”
Możliwość komentowania została wyłączona.