
Framework de exploração para CVE-2026-86950, um estouro de inteiro no CoreGraphics: cria fontes TrueType e PDFs maliciosos, extrai vazamentos de ASLR e constrói cadeias ROP para ARM64.
Framework de exploração para CVE-2026-86950, um integer overflow crítico no rasterizador de anti-aliasing CoreGraphics da Apple, afetando iOS 26.7 e macOS 26.7.
Integer overflow em aa_double_to_fixed() durante a renderização de fontes desencadeia uma escrita fora dos limites no heap por meio de cálculos de bounding box corrompidos. Explorável por meio de fontes TrueType maliciosas em PDFs.
exploit_full.py — gerador de exploit para macOS (fonte + PDF + cadeia ROP)exploit_ios.py — variante para iOS (complexidade reduzida, escalonamento em 5 níveis)leak_extractor.py — analisa crash dumps, cálculo de bypass de ASLRrop_builder.py — construção de cadeia de gadgets ROP para ARM64CVE-2026-86950_ArXiv.pdf — Artigo técnico completo (20 páginas, pronto para revisão por pares)exploit.ttf / ios_exploit.ttf — Fontes maliciosas (encadeamento de glifos compostos)exploit.pdf / ios_exploit.pdf — PDFs de disparo com fontes incorporadascve_2026_86950_payload.bin — binário da cadeia ROP para ARM64ACADEMIC_PAPER.md — fonte Markdown do artigo de pesquisaATTRIBUTION.md — créditos dos autores e referênciasQUICK_START.txt — guia de configuração em 5 minutosMakefile — configuração de buildrun_exploit.sh — pipeline automatizado de 6 estágiospython3 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() → crash com escrita OOBOs estágios 4-6 exigem descoberta real de gadgets via Ghidra/IDA Pro nos binários do 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
}
Overflow quando px > 524.288 pixels. Diferencial ARM64: FCVTZS satura para INT32_MAX, mas o vetor XTN trunca → inversão da bounding box → alocação de heap subdimensionada.
aa_double_to_fixed() no pipeline de renderização| macOS | iOS | |
|---|---|---|
| Entrega | PDF direto | Anexo PDF (Messages/WhatsApp) |
| Processo | Preview.app | Daemon ImageIO (em sandbox) |
| Níveis de Escalonamento | 7 | 5 (limite de memória) |
| Privilégio | Usuário | Daemon (necessário escape do sandbox) |
✅ Cobre:
⚠️ Requer pesquisa externa:
Pesquisa fornecida para:
A exploração não autorizada é ilegal.
Autor: 34zY
Data: Outubro de 2026
Status: Corrigido, framework educacional
Aviso legal: Este projeto destina-se apenas a testes de segurança autorizados. O acesso não autorizado a sistemas de computador é ilegal.