
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 najważniejsze 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 gwałtownie 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
| 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żeli 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: highSplunk (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_guidKQL (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].exe start → 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.exe vs. embedded JRE w katalogu aplikacji.
- Agreguj alert dopiero, gdy co najmniej dwa warunki spełnione: java → child proc i pobranie *.jar/.jnlp z 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 *.jar w 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.java import 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żeli dodać curl w 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, UA Java/ 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). choćby dziś, w retrospektywie, jej wzorce artefaktów (Java → child proc, pobrania JAR) są cennymi sygnałami do budowy analityk behawioralnych w SOC.















