mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
54 lines
3.0 KiB
Markdown
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}}
|