
Framework d'exploitation pour CVE-2026-86950, un débordement d'entier dans CoreGraphics : il fabrique des polices TrueType et des PDF malveillants, extrait les fuites ASLR et construit des chaînes ROP ARM64.
Framework d'exploitation pour CVE-2026-86950, un débordement d'entier critique dans le rastériseur d'anti-aliasing CoreGraphics d'Apple affectant iOS 26.7 et macOS 26.7.
Un débordement d'entier dans aa_double_to_fixed() lors du rendu de polices déclenche une écriture hors limites dans le tas via des calculs de boîte englobante corrompus. Exploitable au moyen de polices TrueType malveillantes intégrées dans des PDF.
exploit_full.py — Générateur d'exploit macOS (police + PDF + chaîne ROP)exploit_ios.py — Variante iOS (complexité réduite, mise à l'échelle à 5 niveaux)leak_extractor.py — Analyse des vidages de plantage, calcul de contournement de l'ASLRrop_builder.py — Construction de chaîne de gadgets ROP ARM64CVE-2026-86950_ArXiv.pdf — Article technique complet (20 pages, prêt pour évaluation par les pairs)exploit.ttf / ios_exploit.ttf — Polices malveillantes (chaînage de glyphes composites)exploit.pdf / ios_exploit.pdf — PDF déclencheurs avec polices intégréescve_2026_86950_payload.bin — Binaire de chaîne ROP ARM64ACADEMIC_PAPER.md — Source Markdown de l'article de rechercheATTRIBUTION.md — Crédits des auteurs et référencesQUICK_START.txt — Guide de configuration en 5 minutesMakefile — Configuration de compilationrun_exploit.sh — Pipeline automatisé en 6 étapespython3 exploit_full.py .
# Outputs: exploit.ttf, exploit.pdf, Makefile
python3 exploit_ios.py .
# Outputs: ios_exploit.ttf, ios_exploit.pdf, ios_payload.bin
python3 leak_extractor.py crash.log
# Parse lldb output, calculate library bases
python3 rop_builder.py 0x0000000192200000
# Generate: cve_2026_86950_payload.bin
make -C . all
make -C . run # Requires lldb debugger
CGImageSourceCreateThumbnailAtIndex() → plantage avec écriture hors limitesLes étapes 4 à 6 nécessitent une découverte réelle de gadgets via Ghidra/IDA Pro sur les binaires CoreGraphics.
int32_t aa_double_to_fixed(double px) {
double v = 0.5 + 4096.0 * px; // No overflow check
return (int32_t)v; // Cast overflow
}
Débordement lorsque px > 524 288 pixels. Différence ARM64 : FCVTZS sature à INT32_MAX, mais le vecteur XTN tronque → inversion de la boîte englobante → allocation de tas sous-dimensionnée.
aa_double_to_fixed() dans le pipeline de rendu| macOS | iOS | |
|---|---|---|
| Vecteur | PDF direct | Pièce jointe PDF (Messages/WhatsApp) |
| Processus | Preview.app | Démon ImageIO (sandboxé) |
| Niveaux de mise à l'échelle | 7 | 5 (limite mémoire) |
| Privilège | Utilisateur | Démon (évasion de sandbox nécessaire) |
✅ Couvre :
⚠️ Nécessite des recherches externes :
Recherche fournie à des fins de :
L'exploitation non autorisée est illégale.
Auteur : 34zY
Date : Octobre 2026
Statut : Corrigé, framework éducatif
Avertissement : Ce projet est destiné uniquement à des tests de sécurité autorisés. L'accès non autorisé à des systèmes informatiques est illégal.