
Framework de explotación para CVE-2026-86950, un desbordamiento de entero en CoreGraphics: crea fuentes TrueType y PDFs maliciosos, extrae filtraciones de ASLR y construye cadenas ROP para ARM64.
Framework de explotación para CVE-2026-86950, un desbordamiento de entero crítico en el rasterizador de suavizado de bordes (anti-aliasing) CoreGraphics de Apple que afecta a iOS 26.7 y macOS 26.7.
El desbordamiento de entero en aa_double_to_fixed() durante el renderizado de fuentes provoca una escritura fuera de límites en el heap mediante cálculos de bounding box corruptos. Explotable a través de fuentes TrueType maliciosas en PDFs.
exploit_full.py — Generador de exploits para macOS (fuente + PDF + cadena ROP)exploit_ios.py — Variante para iOS (complejidad reducida, escalado de 5 niveles)leak_extractor.py — Analiza volcados de fallos, cálculo de bypass de ASLRrop_builder.py — Construcción de cadena de gadgets ROP para ARM64CVE-2026-86950_ArXiv.pdf — Artículo técnico completo (20 páginas, listo para revisión por pares)exploit.ttf / ios_exploit.ttf — Fuentes maliciosas (encadenamiento de glifos compuestos)exploit.pdf / ios_exploit.pdf — PDFs de activación con fuentes incrustadascve_2026_86950_payload.bin — Binario de cadena ROP para ARM64ACADEMIC_PAPER.md — Fuente Markdown del artículo de investigaciónATTRIBUTION.md — Créditos de autoría y referenciasQUICK_START.txt — Guía de configuración en 5 minutosMakefile — Configuración de compilaciónrun_exploit.sh — Pipeline automatizado de 6 etapaspython3 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() → fallo con escritura OOBLas etapas 4-6 requieren el descubrimiento de gadgets reales mediante Ghidra/IDA Pro sobre los binarios de 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
}
Desbordamiento cuando px > 524,288 píxeles. Diferencial en ARM64: FCVTZS satura a INT32_MAX, pero el vector XTN trunca → inversión del cuadro delimitador → asignación de heap de tamaño insuficiente.
aa_double_to_fixed() en el pipeline de renderizado| macOS | iOS | |
|---|---|---|
| Entrega | PDF directo | Adjunto PDF (Messages/WhatsApp) |
| Proceso | Preview.app | Demonio ImageIO (en sandbox) |
| Niveles de escalado | 7 | 5 (límite de memoria) |
| Privilegio | Usuario | Demonio (se requiere escape del sandbox) |
✅ Cubre:
⚠️ Requiere investigación externa:
Investigación proporcionada para:
La explotación no autorizada es ilegal.
Autor: 34zY
Fecha: Octubre de 2026
Estado: Parcheado, framework educativo
Descargo de responsabilidad: Este proyecto es solo para pruebas de seguridad autorizadas. El acceso no autorizado a sistemas informáticos es ilegal.