CVE-2012-0507 — Java SE (AtomicReferenceArray, type confusion)

securitybeztabu.pl 7 godzin temu

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 / ArtefaktWindows (EID/Sysmon)macOS/LinuxProxy/WAF/ALB/CFCloudTrailK8s auditM365 (Defender XDR)
Pobranie JAR/apletu z WWWSysmon EID 3 (połączenie), EID 22 (DNS); Security 5156Unified Logging (Safari/Chrome net events)ALB/CloudFront/WAF: UA Java/*, ścieżka *.jarn/dn/dUrlClickEvents (klik źródła), DeviceNetworkEvents (host)
Egzekucja exploitaSysmon EID 1: java.exe/javaw.exeprocess: 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].exeparent: java → child: sh/bash/pythonDeviceProcessEvents korelacja InitiatingProcessFileName
Zapisy dropperaSysmon EID 11 (file create), EID 13 (reg set)File audit/journaldProxy: 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 *.jar z domen o niskiej reputacji → koreluj z procesami Java na hostach.
  • macOS: brak Gatekeeper promptów przy apletach w WWW (historycznie); sprawdzaj ~/Library/LaunchAgents po 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)

  1. Izoluj host/VDI (EDR „isolate”).
  2. Zabezpiecz artefakty: pamięć, %TEMP%/Downloads, ~/Library/ (macOS), logi proxy/EDR.
  3. Weryfikuj wersje Javy i wtyczek:
    • Windows (PowerShell): Get-ItemProperty 'HKLM:\SOFTWARE\JavaSoft\Java Runtime Environment' | select CurrentVersion
    • macOS: /usr/libexec/java_home -V
  4. Analiza drzew procesów: szukaj java[w].exe → cmd/powershell/mshta/rundll32/....
  5. Zidentyfikuj źródło: domene/URL z UrlClickEvents i proxy; odetnij na FW/DNS.
  6. Eradykacja: odinstaluj/wyłącz plugin Java w przeglądarkach (M1042), zaktualizuj JRE/JDK (M1051).
  7. Hunting wsteczny: wzorce z pkt 7 i 8, retro na 2012‑style TTP (dla zestawów lab/archiwum).
  8. 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.jar z 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.jar Nastę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.jar w 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 adekwatny 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 + proces java[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).
Idź do oryginalnego materiału