54 lines
3.0 KiB
Markdown

# WWW2Exec - sips ICC Profile Out-of-Bounds Write (CVE-2024-44236)
{{#include ../../banners/hacktricks-training.md}}
## Aperçu
Une vulnérabilité d'écriture hors limites dans le parseur de profil ICC du Système de Traitement d'Image Scriptable d'Apple macOS (`sips`) (macOS 15.0.1, sips-307) en raison d'une validation incorrecte du champ `offsetToCLUT` dans les balises `lutAToBType` (`mAB `) et `lutBToAType` (`mBA `). Un fichier ICC conçu peut déclencher des écritures nulles jusqu'à 16 octets au-delà du tampon de tas, corrompant les métadonnées du tas ou les pointeurs de fonction et permettant l'exécution de code arbitraire (CVE-2024-44236).
## Code Vulnérable
La fonction vulnérable lit et met à zéro 16 octets à partir d'un décalage contrôlé par l'attaquant sans s'assurer qu'il se trouve dans le tampon alloué :
```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;
}
```
Seule une vérification `offsetToCLUT <= totalDataLength` est effectuée. En définissant `offsetToCLUT == tagDataSize`, la boucle indexe jusqu'à 16 octets au-delà de la fin de `buffer`, corrompant les métadonnées de tas adjacentes.
## Étapes d'exploitation
1. **Créer un profil `.icc` malveillant :**
- Construire l'en-tête ICC (128 octets) avec la signature `acsp` et une seule entrée de tag `lutAToBType` ou `lutBToAType`.
- Dans la table des tags, définir `offsetToCLUT` égal à la `taille` du tag (`tagDataSize`).
- Placer des données contrôlées par l'attaquant immédiatement après le bloc de données du tag pour écraser les métadonnées de tas.
2. **Déclencher l'analyse :**
```bash
sips --verifyColor malicious.icc
```
3. **Corruption des métadonnées de tas :** Les écritures zéro OOB écrasent les métadonnées de l'allocateur ou les pointeurs adjacents, permettant à l'attaquant de détourner le flux de contrôle et d'atteindre l'exécution de code arbitraire dans le contexte du processus `sips`.
## Impact
Une exploitation réussie entraîne l'exécution de code arbitraire à distance avec des privilèges utilisateur sur les systèmes macOS exécutant l'utilitaire `sips` vulnérable.
## Détection
- Surveiller les transferts de fichiers sur des protocoles courants (FTP, HTTP/S, IMAP, SMB, NFS, SMTP).
- Inspecter les fichiers transférés avec la signature `acsp`.
- Pour chaque tag `mAB ` ou `mBA `, vérifier si le champ `Offset to CLUT` est égal à la `Taille des données du tag`.
- Signaler comme suspect si cette condition est remplie.
## Références
- Blog ZDI : CVE-2024-44236 : Vulnérabilité d'exécution de code à distance dans l'utilitaire sips d'Apple macOS
https://www.thezdi.com/blog/2025/5/7/cve-2024-44236-remote-code-execution-vulnerability-in-apple-macos
- Mise à jour de sécurité d'Apple d'octobre 2024 (patch expédiant CVE-2024-44236)
https://support.apple.com/en-us/121564
{{#include ../../banners/hacktricks-training.md}}