Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
detect_CVE-2026-86950 — Un outil Python pour détecter les fichiers PDF exploitant CVE-2026-86950 | Kitploit
Outils/GitHubGitHub/decalage2/detect_cve-2026-86950
Analyse StatiqueScanners de VulnérabilitésAnalyse des VulnérabilitésExploitationAnalyse de MalwareArticles et Recherche
GitHubdecalage2/detect_cve-2026-86950

detect_CVE-2026-86950

Un outil Python pour détecter les fichiers PDF exploitant CVE-2026-86950

Voir le dépôt
62il y a 1 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

Détecteur d'exploit PDF CVE-2026-86950

Pour plus de contexte sur ce projet et la CVE-2026-86950, voir https://decalage.info/CVE-2026-86950/

Avertissement : la majeure partie de ce readme et du code de détection ont été écrits avec l'aide d'agents de codage IA. L'outil a été testé avec succès sur des milliers de fichiers PDF légitimes et sur la preuve de concept publiée ici. Cependant, cet outil est récent et l'algorithme de détection est plutôt complexe, utilisez-le donc avec prudence.

detect_cve_2026_86950.py analyse statiquement les fichiers PDF à la recherche de polices embarquées conçues pour exploiter la CVE-2026-86950 (« The Great Glyph Grift »), une écriture hors limites dans le rasteriseur de glyphes anticrénelés d'Apple CoreGraphics (corrigée dans iOS / macOS 26.7.1).

Il ne rend jamais la police ni n'exécute de code d'exploit — il analyse le PDF et le programme de police embarqué et recherche la signature structurelle de l'attaque.

La vulnérabilité (pourquoi la détection fonctionne)

CoreGraphics convertit une coordonnée d'appareil en virgule flottante en un entier en virgule fixe 16.12 avec approximativement :

int32_t aa_double_to_fixed(double px) { return (int32_t)(0.5 + 4096.0 * px); }

Lorsque 4096 * px dépasse la plage de int32, la conversion est un comportement indéfini, et deux sites d'appel (aa_moveto vs. aa_lineto) divergent — l'un sature, l'autre tronque. Cette divergence corrompt le calcul de la boîte englobante du glyphe dans aa_add_edges, de sorte que le tampon de couverture dans aa_cache_render est alloué trop petit et le rasteriseur écrit hors limites. Le correctif 26.7.1 ajoute un écrêtage explicite à ±0x3FFFF001.

La preuve de concept publique construit une police TrueType malveillante qui force une coordonnée surdimensionnée de ce type :

  • une chaîne profonde de glyphes composites, chacun mettant à l'échelle le précédent d'environ 2× (échelle F2Dot14 proche de son maximum d'environ 1,99994) ;
  • un glyphe feuille minuscule avec un contour dégénéré à 2 points à une grande coordonnée ;
  • ainsi le contour réel du glyphe supérieur atteint environ 16 millions d'unités de police (environ 1000× le carré em) tandis que la boîte englobante stockée du glyphe reste minuscule ;
  • à une grande taille de texte (/Tf 1024), 4096 × device_coord déborde de int32.

Ce que le détecteur vérifie

  1. Extrait chaque programme de police de contour intégré avec pikepdf — TrueType (/FontFile2) et CFF / OpenType (/FontFile3).
  2. Analyse chaque police avec fontTools et mesure l'étendue réelle des coordonnées de chaque glyphe :
    • TrueType : résout récursivement les composants composites (ainsi une chaîne d'échelle imbriquée est suivie jusqu'à son étendue réelle) ;
    • CFF / Type2 : dessine chaque charstring via un stylo de contrôle des limites (ainsi les coordonnées accumulées à travers de nombreux opérateurs relatifs sont mesurées).
  3. Signale une police lorsque l'une de ces conditions est remplie :
    • le contour réel d'un glyphe s'étend bien au-delà du carré em (aucun glyphe légitime ne le fait — seuil de 10× em, quasi certain au-delà de 100× em) ;
    • l'étendue réelle écrase la boîte englobante déclarée du glyphe lui-même (le « mensonge » de la boîte englobante dont dépend l'exploit) ;
    • (TrueType uniquement) imbrication composite profonde combinée à des composants d'agrandissement (>1) — la chaîne d'amplification de coordonnées utilisée par le PoC public.
  4. Combine la coordonnée du pire cas avec les tailles de texte utilisées dans les flux de contenu de la page (/Tf, Tm) et vérifie si 4096 × device_coord dépasse réellement INT32_MAX — c'est-à-dire si le débordement en virgule fixe est atteignable.

Verdicts : exploit (débordement atteignable), suspicious (géométrie surdimensionnée mais sans débordement à la taille observée), clean.

Installation et exécution

# with uv (recommended)
uv venv
uv pip install -r requirements.txt

# or any environment with pikepdf + fonttools
python3 detect_cve_2026_86950.py suspicious.pdf
python3 detect_cve_2026_86950.py -v *.pdf      # per-font details
python3 detect_cve_2026_86950.py --json f.pdf  # machine-readable

Code de sortie : 0 propre, 1 exploit/suspect trouvé, 2 erreur.

Limitations

  • La cause racine de la CVE est la conversion en virgule fixe dans le rasteriseur de chemin partagé aa_* de CoreGraphics, qui rend à la fois les contours TrueType glyf et CFF/Type2. Le PoC public amplifie les coordonnées avec des glyphes composites TrueType ; une police CFF peut atteindre directement des coordonnées surdimensionnées (par exemple en accumulant des opérateurs relatifs), c'est pourquoi /FontFile2 et /FontFile3 sont tous deux analysés. L'heuristique de chaîne composite est spécifique à TrueType ; pour CFF, le signal est la vérification des coordonnées surdimensionnées / du mensonge de boîte englobante.
  • L'analyse de la taille du texte (/Tf, Tm) des flux de contenu est effectuée au mieux ; elle n'évalue pas complètement l'état graphique PDF / CTM. Lorsqu'aucune taille n'est trouvée, une valeur par défaut conservatrice de 1024 est supposée pour la vérification de débordement. Les signaux de géométrie surdimensionnée intrinsèques à la police n'en dépendent pas.
  • Il s'agit d'un détecteur structurel heuristique, et non d'un moteur de rendu isolé : il est destiné à détecter le schéma d'exploit connu et les polices manifestement malformées, et non à prouver qu'un fichier est sûr.
Télécharger l’outil