3.0 KiB

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é :

// 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.
  1. Déclencher l'analyse :
sips --verifyColor malicious.icc
  1. 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

{{#include ../../banners/hacktricks-training.md}}