Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-66628 — Analyse technique de CVE-2025-66628, un débordement d'entier dans l'analyseur TIM d'ImageMagick conduisant à des lectures hors limites, avec cause racine, étapes d'exploitation et conseils de remédiation. | Kitploit
Outils/GitHubGitHub/sumitshah00/cve-2025-66628
Analyse StatiqueAnalyse des VulnérabilitésAnalyse de CodeExploitationAnalyse de BinairesArticles et RechercheApprentissage et Éducation
GitHubsumitshah00/cve-2025-66628

CVE-2025-66628

Analyse technique de CVE-2025-66628, un débordement d'entier dans l'analyseur TIM d'ImageMagick conduisant à des lectures hors limites, avec cause racine, étapes d'exploitation et conseils de remédiation.

Voir le dépôt
111il y a 9 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2025-66628 : Débordement d'entier dans l'analyseur TIM d'ImageMagick

AttributDétails
ID CVECVE-2025-66628
FournisseurImageMagick Studio LLC
ProduitImageMagick
Versions affectées< 7.1.2-10
Version corrigée7.1.2-10
Type de vulnérabilitéCWE-190 (Débordement d'entier)
Score CVSS v3.17.5 (Élevé)
Vecteur CVSSCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
ChercheurSumit Shah

Résumé

Une vulnérabilité de débordement d'entier existe dans la fonction ReadTIMImage du fichier coders/tim.c d'ImageMagick. Lors du traitement de fichiers image TIM (PlayStation) sur des systèmes 32 bits, la multiplication non contrôlée des valeurs de largeur et de hauteur contrôlées par l'utilisateur entraîne une sous-allocation mémoire, conduisant à des lectures hors limites lors du traitement des pixels.


Détails techniques

Code affecté

La logique vulnérable se trouve dans coders/tim.c :

/* coders/tim.c - Analyseur d'image TIM */

// Entrée contrôlée par l'utilisateur depuis l'en-tête du fichier TIM
width = ReadBlobLSBShort(image);   // 2 octets (0-65535)
height = ReadBlobLSBShort(image);  // 2 octets (0-65535)

// VULNÉRABLE : Débordement d'entier sur systèmes 32 bits
image_size = 2 * width * height;  // Aucune vérification de débordement

// Mémoire allouée avec une taille tronquée
pixels = (unsigned char *) AcquireQuantumMemory(image_size, sizeof(*pixels));

// La boucle traite les dimensions COMPLÈTES, lisant au-delà du tampon
for (y = 0; y < height; y++) {
    for (x = 0; x < width; x++) {
        pixel_index = (y * width + x) * 2;
        pixels[pixel_index] = ReadBlobByte(image);
        pixels[pixel_index + 1] = ReadBlobByte(image);
    }
}

Cause racine

Sur les architectures 32 bits, size_t est limité à 32 bits avec une valeur maximale UINT_MAX = 4,294,967,295.

Lorsque la largeur et la hauteur sont toutes deux définies à la valeur maximale non signée 16 bits :

width = 65535 (0xFFFF)
height = 65535 (0xFFFF)

Calcul attendu :
2 × 65535 × 65535 = 8 589 869 050 octets (~8,5 Go)

Résultat réel (enroulement 32 bits) :
8 589 869 050 % 4 294 967 296 = 4 294 901 754
Résultat après troncature : Tampon alloué de petite taille

Le débordement amène l'allocateur mémoire à réserver un tampon considérablement plus petit que nécessaire, tandis que la boucle de traitement itère toujours sur la grille complète de 65535 × 65535 pixels, entraînant des lectures hors limites.

Exploitation

Étape 1 : L'attaquant crée un fichier TIM avec des dimensions provoquant un débordement

[Magic: 0x10]
[Type: 0x02]
[Width: 0xFFFF]   # 65535
[Height: 0xFFFF]  # 65535
[Données pixels...]

Étape 2 : La victime traite le fichier malveillant

convert malicious.tim output.png

Étape 3 : Une lecture hors limites se produit, entraînant :

  • Divulgation de mémoire du tas (fuite dans l'image de sortie ou observable via des temporisations)
  • Défaut de segmentation (déni de service)

Plateformes affectées

Systèmes 32 bits où size_t est sur 32 bits. Les systèmes 64 bits ne sont pas affectés en raison d'une largeur d'entier suffisante pour représenter la taille calculée sans débordement.


Impact

Divulgation d'informations (Principal) : La mémoire du tas du processus ImageMagick peut être lue lors de l'accès hors limites. Cette mémoire peut contenir :

  • Données d'image précédemment traitées
  • Variables d'environnement
  • Chemins de fichiers
  • Identifiants en cache (dans les environnements multi-locataires)

Les données divulguées peuvent être intégrées dans l'image de sortie convertie ou extraites via une analyse par canal auxiliaire.

Déni de service (Secondaire) : La lecture de régions mémoire non mappées déclenche un SIGSEGV, provoquant la terminaison du processus ImageMagick et une interruption de service dans les pipelines automatisés de traitement d'images.


Preuve de concept

Les détails techniques sont fournis à des fins de validation. Aucun code exécutable d'exploitation n'est distribué.

Conditions de déclenchement

  • Version d'ImageMagick < 7.1.2-10 compilée pour architecture 32 bits
  • Fichier TIM malveillant avec des octets d'en-tête spécifiant width=65535, height=65535
  • Traitement via convert, magick, ou tout appel API ImageMagick

Comportement attendu (Vulnérable)

$ convert malicious.tim output.png
Erreur de segmentation (core dumped)

Ou conversion réussie avec des données de tas divulguées intégrées dans la sortie.

Comportement attendu (Corrigé)

$ convert malicious.tim output.png
convert: Allocation mémoire échouée `malicious.tim' @ error/tim.c/ReadTIMImage/XXX.

Remédiation

Pour les administrateurs

Mettez à jour ImageMagick vers la version 7.1.2-10 ou ultérieure :

# Vérifier la version actuelle
convert --version

# Mise à jour via le gestionnaire de paquets
apt update && apt upgrade imagemagick      # Debian/Ubuntu
yum update imagemagick                     # RHEL/CentOS
brew upgrade imagemagick                   # macOS

Pour les développeurs

Implémentez une vérification de débordement avant les opérations arithmétiques :

// Non sécurisé
image_size = 2 * width * height;

// Sécurisé
if (height != 0 && width > (SIZE_MAX / 2) / height) {
    ThrowReaderException(ResourceLimitError, "MemoryAllocationFailed");
}
image_size = 2 * width * height;

Appliquez une validation des entrées et des limites raisonnables sur les valeurs de dimensions avant d'effectuer les calculs.


Références

  • Enregistrement CVE : https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-66628
  • Avis GitHub : https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-6hjr-v6g4-3fm8
  • Dépôt ImageMagick : https://github.com/ImageMagick/ImageMagick
  • CWE-190 : https://cwe.mitre.org/data/definitions/190.html

Méthodologie de découverte

Cette vulnérabilité a été identifiée par analyse de variantes. Suite à la divulgation d'un débordement d'entier similaire dans le décodeur BMP d'ImageMagick, une revue systématique des analyseurs de formats hérités a été menée. La recherche de motifs correspondant à des calculs width * height non vérifiés a conduit à l'identification de la même faille dans l'analyseur TIM.

Les décodeurs de formats d'image hérités (TIM, SGI, VIFF, etc.) représentent des cibles de grande valeur en raison d'audits de sécurité peu fréquents et de l'utilisation d'arithmétique C non sécurisée.


Divulgation responsable

Cette vulnérabilité a été signalée de manière privée aux mainteneurs d'ImageMagick via les avis de sécurité GitHub. La divulgation publique n'a eu lieu qu'après la disponibilité du correctif et l'attribution du CVE. Cette recherche a été menée de manière éthique dans le respect des principes de divulgation responsable.

Découvreur

SUMIT SHAH

Chercheur : SUMIT SHAH

  • LinkedIn : linkedin.com/in/sumit-shah-614625350
  • Instagram : @hacksagex
Télécharger l’outil