
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, skuteczność)
- 5 Artefakty i logi (tabela)
- 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
CVE‑2012‑0507 to błąd type confusion w Java SE (klasa AtomicReferenceArray), umożliwiający zdalne wykonanie kodu przez złośliwy aplet na stronie (drive‑by). Luka była masowo wykorzystywana w 2012 r. (m.in. Blackhole EK i botnet Flashback), szczególnie na macOS, gdzie łatka pojawiła się z opóźnieniem. SOC powinien łączyć telemetry z przeglądarek/proxy (pobrania JAR), EDR (łańcuch procesów java[w].exe → LOLBIN), Sysmon (EID 1/3/11/22) i M365 UrlClickEvents. Podstawowe mitygacje: aktualizacje (M1051), wyłączenie/odinstalowanie wtyczki Java (M1042), restrykcja treści web (M1021), kontrola egzekucji (M1038).
Krótka definicja techniczna
CVE‑2012‑0507 to podatność w Java Runtime Environment (JRE 7u2 i starsze, 6u30 i starsze, 5.0u33 i starsze) w module Concurrency; nieprawidłowe sprawdzanie typów w AtomicReferenceArray pozwala atakującemu ominąć sandbox i wykonać dowolny kod w kontekście użytkownika po otwarciu złośliwego apletu/aplikacji Java Web Start.
Gdzie występuje / przykłady platform
- Windows / Linux / macOS: przeglądarka z wtyczką Java/Java Web Start. W 2012 r. Flashback masowo infekował macOS przez CVE‑2012‑0507 (ponad 550k–600k hostów), m.in. z powodu opóźnienia w wydaniu łatki dla Java na macOS.
- VDI/DaaS, stacje adminów, serwery jump: ryzyko przy swobodnym surfowaniu z podatną wtyczką.
- Chmura / M365: wektor kliknięcia z e‑maila/Teams (telemetria
UrlClickEvents), hosty w VDI w chmurze. - Przeglądarki: drive‑by przez skompromitowane witryny, malvertising, iFrame; klasyczny T1189.
Szczegółowy opis techniki (jak działa, cele, skuteczność)
CVE‑2012‑0507 umożliwia eskalację uprawnień apletu poprzez błędną obsługę typów w AtomicReferenceArray. Poprzez manipulację obiektem zserializowanym atakujący doprowadza do type confusion i zapisu referencji poza oczekiwanym typem, co skutkuje wyjściem z sandboxa Javy i RCE. W praktyce exploit był osadzany w stronie www; odwiedziny (lub przeklikany link) inicjowały pobranie JAR i łańcuch dalszej egzekucji/pobrania ładunku (np. przez exploit kity typu Blackhole), czyli T1189 → T1203, często poprzedzone T1204.001.
Dlaczego skuteczna?
W 2012 r. wtyczki Java były powszechne; rozproszenie wersji, opóźnienia łatek (zwł. macOS) i automatyczne uruchamianie apletów w przeglądarkach sprzyjało cichym kompromitacjom (drive‑by). Kampania Flashback osiągnęła setki tysięcy ofiar; Oracle załatało błąd w lutym 2012, a Apple dostarczyło aktualizację dla macOS dopiero na początku kwietnia.
Artefakty i logi (tabela)
| Zdarzenie / Artefakt | Windows (EID/Sysmon) | macOS/Linux | Proxy/WAF/ALB/CF | CloudTrail | K8s audit | M365 (Defender XDR) |
|---|---|---|---|---|---|---|
| Pobranie JAR/apletu z WWW | Sysmon EID 3 (połączenie), EID 22 (DNS); Security 5156 | Unified Logging (Safari/Chrome net events) | ALB/CloudFront/WAF: UA Java/*, ścieżka *.jar | n/d | n/d | UrlClickEvents (klik źródła), DeviceNetworkEvents (host) |
| Egzekucja exploita | Sysmon EID 1: java.exe/javaw.exe | process: java w unify/journald/auditd (execve) | — | — | — | DeviceProcessEvents (jeśli MDE) |
Łańcuch: Java → LOLBIN (np. rundll32, mshta, wscript, powershell) | Sysmon EID 1 z ParentImage=java[w].exe | parent: java → child: sh/bash/python | — | — | — | DeviceProcessEvents korelacja InitiatingProcessFileName |
| Zapisy droppera | Sysmon EID 11 (file create), EID 13 (reg set) | File audit/journald | Proxy: kolejny GET (payload) | — | — | DeviceFileEvents |
Uwaga: to ataki klienckie – CloudTrail nie rejestruje procesów na hostach; w chmurze szukaj korelacji w ALB/CF/WAF/NGFW oraz telemetry endpointów.
Detekcja (praktyczne reguły)
Sigma (Sysmon/Windows) – Java → podejrzany child
title: Java Spawns Suspicious Child Process (CVE-2012-0507 tradecraft)
id: 5c4b6a0e-9d7a-4d8f-8b28-java-child-suspicious
status: experimental
description: Wykrywa łańcuch java.exe/javaw.exe uruchamiający interpretery/LOLBIN po potencjalnym drive-by (np. Blackhole/Flashback-era).
references:
- https://attack.mitre.org/techniques/T1189/
- https://attack.mitre.org/techniques/T1203/
logsource:
product: windows
category: process_creation
detection:
selection_parent:
ParentImage|endswith:
- '\java.exe'
- '\javaw.exe'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\rundll32.exe'
- '\regsvr32.exe'
- '\msiexec.exe'
condition: selection_parent and selection_child
fields:
- CommandLine
- ParentCommandLine
- Image
- ParentImage
falsepositives:
- Instalatory/launchery oparte na Java (Install4j/Launch4j)
level: high
tags:
- attack.t1189
- attack.t1203
Splunk (Sysmon + Proxy)
# Child processes z Java (Sysmon)
index=endpoint sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1
(ParentImage="*\\java.exe" OR ParentImage="*\\javaw.exe")
Image IN ("*\\powershell.exe","*\\cmd.exe","*\\wscript.exe","*\\cscript.exe","*\\rundll32.exe","*\\mshta.exe","*\\regsvr32.exe","*\\msiexec.exe")
| stats count earliest(_time) as first latest(_time) as last by host, ParentImage, ParentCommandLine, Image, CommandLine, ParentProcessGuid, ProcessGuid
# Proxy/secure web gateway: pobrania JAR z UA Java (dostosuj pola)
index=proxy (cs_user_agent="Java*" OR user_agent="Java*") (uri_path="*.jar" OR url="*.jar")
| stats count by src_ip, user, url, user_agent
KQL (Defender for Endpoint / Microsoft 365 Defender)
// 1) Child processy z Java
DeviceProcessEvents
| where InitiatingProcessFileName in~ ("java.exe","javaw.exe")
| where FileName in~ ("powershell.exe","cmd.exe","wscript.exe","cscript.exe","mshta.exe","rundll32.exe","regsvr32.exe","msiexec.exe")
| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, FileName, ProcessCommandLine
// 2) Pobrania JAR przez procesy Java
DeviceNetworkEvents
| where InitiatingProcessFileName in~ ("java.exe","javaw.exe")
| where RemoteUrl endswith ".jar" or RequestUrl endswith ".jar"
| summarize cnt=count(), firstSeen=min(Timestamp), lastSeen=max(Timestamp) by DeviceName, InitiatingProcessFileName, RemoteUrl
// 3) Kliknięcia linków (MDO Safe Links)
UrlClickEvents
| where Url has ".jar" or Url has "java" // dopasuj pod kampanie
| project Timestamp, AccountUpn, Url, ActionType, Workload, IPAddress, ThreatTypes
(„UrlClickEvents” w Advanced Hunting zawiera pełny URL i werdykt kliknięcia.)
AWS (CloudWatch Logs Insights — ALB/CloudFront/WAF)*
fields @timestamp, @message
| filter @message like /User-Agent=.*Java\/[0-9]/ and @message like /\.jar/
| sort @timestamp desc
| limit 100
(*CloudTrail nie loguje żądań HTTP do aplikacji; użyj logów ALB/CloudFront/WAF lub NGFW.)
Elastic / EQL
// Java -> LOLBIN
process where process.parent.name in ("java.exe","javaw.exe") and
process.name in ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","mshta.exe","rundll32.exe","regsvr32.exe","msiexec.exe")
// HTTP: UA Java + JAR (przykładowy ECS)
network where network.protocol == "http" and
http.request.method == "GET" and
http.request.headers.user_agent : "Java*" and
url.path : "*.jar"
Heurystyki / korelacje
- Łańcuch czasowy:
browser → java[w].exe → LOLBIN → outbound(HTTP/DNS) w krótkim oknie. - Proxy/NGFW: UA „Java/*” oraz
*.jarz domen o niskiej reputacji → koreluj z procesami Java na hostach. - macOS: brak Gatekeeper promptów przy apletach w WWW (historycznie); sprawdzaj
~/Library/LaunchAgentspo nietypowych wpisach. - Zestawy exploitów: obserwuj wzorce Blackhole/Blacole (historyczne IOC/telemetria) jako retro‑threat hunting.
False positives / tuning
- Instalatory oparte na Java (Install4j/Launch4j) uruchamiają
msiexec.exe/regsvr32.exe— whitelist po ścieżce, podpisie i hashu. - Narzędzia deweloperskie (Gradle/Maven) – generują ruch HTTP; filtruj po docelowych repo (
repo.maven.org, wew. Artifactory). - UA „Java/*” bywa używany przez skrypty integracyjne — weryfikuj hosty serwerowe vs. stacje użytkowników.
Playbook reagowania (IR)
- Izoluj host/VDI (EDR „isolate”).
- Zabezpiecz artefakty: pamięć,
%TEMP%/Downloads,~/Library/(macOS), logi proxy/EDR. - Weryfikuj wersje Javy i wtyczek:
- Windows (PowerShell):
Get-ItemProperty 'HKLM:\SOFTWARE\JavaSoft\Java Runtime Environment' | select CurrentVersion - macOS:
/usr/libexec/java_home -V
- Windows (PowerShell):
- Analiza drzew procesów: szukaj
java[w].exe→cmd/powershell/mshta/rundll32/.... - Zidentyfikuj źródło: domene/URL z
UrlClickEventsi proxy; odetnij na FW/DNS. - Eradykacja: odinstaluj/wyłącz plugin Java w przeglądarkach (M1042), zaktualizuj JRE/JDK (M1051).
- Hunting wsteczny: wzorce z pkt 7 i 8, retro na 2012‑style TTP (dla zestawów lab/archiwum).
- Lessons learned: polityka disable‑by‑default dla wtyczek, ASR/AppControl (M1038), URL filtering (M1021).
Przykłady z kampanii / case studies
- OSX/Flashback (2012) — masowe infekcje macOS (550k–600k hostów) przez CVE‑2012‑0507; Apple wydało aktualizację w kwietniu 2012 i dodało narzędzia usuwające.
- Blackhole Exploit Kit (2012) — zestaw exploitów zaczął obsługiwać CVE‑2012‑0507, znacząco zwiększając skuteczność drive‑by.
Lab (bezpieczne testy) — przykładowe komendy
Cel: wygenerować telemetrię detekcyjną, bez exploita.
- Proxy/ALB telemetry: serwuj plik
hello.jarz wewn. HTTP i symuluj pobranie „klient‑Java”:# serwer python3 -m http.server 8000 # klient (symulacja UA Java z curl) curl -A "Java/1.6.0_31" http://<lab-web>:8000/hello.jar -o /tmp/hello.jarNastępnie uruchom zapytania (Splunk/Elastic/KQL/Insights) z sekcji 7. - EDR/Sysmon łańcuch procesów (symulacja benign): uruchom legalną aplikację Java, a oddzielnie (ręcznie) proces pomocniczy, by sprawdzić reguły korelacyjne — nie symuluj złośliwego kodu.
- M365: wyślij do siebie e‑mail z bezpiecznym linkiem do
hello.jarw labie i sprawdźUrlClickEvents(czy klik i domena są odnotowane).
Mapowania (Mitigations, powiązane techniki)
Mitigations (ATT&CK):
- M1051 – Update Software (szybkie łatanie JRE/JDK; polityki patch).
- M1042 – Disable or Remove Feature or Program (wyłączenie/odinstalowanie wtyczki Java w przeglądarkach).
- M1021 – Restrict Web‑Based Content (URL filtering, blokowanie typów plików, skanowanie pobrań).
- M1038 – Execution Prevention (AppControl/ASR, blokada uruchamiania niepodpisanych binariów).
- M1037 – Filter Network Traffic (blokada znanych domen EK/C2, polityki egress).
- M1017 – User Training (świadomość dot. linków/ostrzeżeń przeglądarki).
Powiązane techniki:
- T1189 — Drive‑by Compromise – Exploit ładuje się po wejściu na stronę (watering hole/malvertising/iFrame), skanuje wersje wtyczek i serwuje JAR z exploitem; po skutecznym RCE dropper pobiera właściwy malware.
- T1203 — Exploitation for Client Execution – Wykorzystanie luki w aplikacji klienckiej (tu: plugin/Java Web Start) do wykonania kodu — bez potrzeby interakcji poza wejściem na stronę.
- T1204.001 — User Execution: Malicious Link – Często poprzedza drive‑by; kliknięcie linku kieruje do strony serwującej exploit i uruchamia T1203.
Źródła / dalsza literatura
- MITRE ATT&CK: T1189, T1203, T1204 (sub‑tech). (MITRE ATT&CK)
- ATT&CK wersjonowanie: v18.0 (Oct 28, 2025). (MITRE ATT&CK)
- NVD / CVE record: opis, zakres wersji. (NVD)
- Oracle CPU (Feb 2012) – advisory i tabeli ryzyka/wersje. (Oracle)
- Analiza techniczna typu type confusion (
AtomicReferenceArray). (media.blackhat.com) - Flashback/ekosystem 2012: ESET whitepaper/blog, Dr.Web liczby, przegląd prasy. (web-assets.esetstatic.com)
- Blackhole EK: wpisy ESET, Krebs, overview MS/F‑Secure. (We Live Security)
- M365 UrlClickEvents – schema/detekcja klików. (Microsoft Learn)
Checklisty dla SOC / CISO (krótko)
SOC
- Reguły detekcji: Java → LOLBIN (Endpoint + Sigma/SPL/KQL/EQL).
- Korelacje: UA
Java/*+*.jar+ procesjava[w].exe. - Blokady: FW/DNS dla domen kampanii; zasady SWG (blok JAR).
- Telemetria: Sysmon EID 1/3/11/22 wdrożone i wysyłane.
- Retrospektywa na 2012‑style TTP (archiwalne logi/laby).
CISO
- Polityka disable‑by‑default dla przeglądarkowych wtyczek/Java.
- Patch SLA dla JRE/JDK (M1051) i egzekucja wytycznych.
- URL filtering/SSL inspection (M1021/M1037) i polityki egress.
- AppControl/ASR (M1038) na stacjach użytkowników.
- Program szkoleniowy nt. drive‑by/kliknięć (M1017).
Jeden komentarz do “CVE-2012-0507 — Java SE (AtomicReferenceArray, type confusion)”
Możliwość komentowania została wyłączona.