Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
detect_CVE-2026-86950 — Una herramienta en Python para detectar archivos PDF que explotan CVE-2026-86950 | Kitploit
Herramientas/GitHubGitHub/decalage2/detect_cve-2026-86950
Análisis EstáticoEscáneres de VulnerabilidadesAnálisis de VulnerabilidadesExplotaciónAnálisis de MalwarePapers e Investigación
GitHubdecalage2/detect_cve-2026-86950

detect_CVE-2026-86950

Una herramienta en Python para detectar archivos PDF que explotan CVE-2026-86950

Ver Repositorio
62hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Detector de exploits PDF CVE-2026-86950

Para más contexto sobre este proyecto y CVE-2026-86950, consulte https://decalage.info/CVE-2026-86950/

Aviso legal: la mayor parte de este readme y del código de detección se han escrito con la ayuda de agentes de programación con IA. La herramienta se ha probado con éxito en miles de archivos PDF legítimos y en la prueba de concepto disponible publicada aquí. Sin embargo, esta herramienta es nueva y el algoritmo de detección es bastante complejo, así que úsela con precaución.

detect_cve_2026_86950.py analiza estáticamente archivos PDF en busca de fuentes incrustadas manipuladas para explotar CVE-2026-86950 ("The Great Glyph Grift"), una escritura fuera de límites en el rasterizador de glifos con antialiasing de Apple CoreGraphics (corregido en iOS / macOS 26.7.1).

Nunca renderiza la fuente ni ejecuta código de exploit alguno: analiza el PDF y el programa de fuente incrustado y busca la firma estructural del ataque.

La vulnerabilidad (por qué funciona la detección)

CoreGraphics convierte una coordenada de dispositivo en coma flotante en un entero de coma fija 16.12 aproximadamente con:

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

Cuando 4096 * px excede el rango de int32, la conversión es un comportamiento indefinido, y dos sitios de llamada (aa_moveto vs. aa_lineto) no coinciden — uno satura, otro trunca. Esa discrepancia corrompe el cálculo del cuadro delimitador del glifo en aa_add_edges, por lo que el búfer de cobertura en aa_cache_render se asigna demasiado pequeño y el rasterizador escribe fuera de los límites. El parche 26.7.1 añade un recorte explícito a ±0x3FFFF001.

La prueba de concepto pública construye una fuente TrueType maliciosa que fuerza tal coordenada sobredimensionada:

  • una cadena profunda de glifos compuestos, cada uno escalando el anterior por ~2× (escala F2Dot14 cerca de su máximo de ~1.99994);
  • un glifo hoja diminuto con un contorno degenerado de 2 puntos en una coordenada grande;
  • de modo que el contorno real del glifo superior alcanza ~16 millones de unidades de fuente (~1000× el cuadro em) mientras que el cuadro delimitador almacenado del glifo permanece diminuto;
  • con un tamaño de texto grande (/Tf 1024), 4096 × device_coord desborda int32.

Qué comprueba el detector

  1. Extrae cada programa de fuente de contorno incrustado con pikepdf — TrueType (/FontFile2) y CFF / OpenType (/FontFile3).
  2. Analiza cada fuente con fontTools y mide la extensión de coordenadas real de cada glifo:
    • TrueType: resuelve recursivamente los componentes compuestos (de modo que se sigue una cadena de escalado anidada hasta su extensión real);
    • CFF / Type2: dibuja cada charstring a través de un lápiz de límites de control (de modo que se miden las coordenadas acumuladas a través de muchos operadores relativos).
  3. Marca una fuente cuando se cumple cualquiera de estas condiciones:
    • el contorno real de un glifo se extiende mucho más allá del cuadro em (ningún glifo legítimo lo hace — umbral 10× em, casi seguro por encima de 100× em);
    • la extensión real empequeñece el propio cuadro delimitador declarado del glifo (la "mentira" del cuadro delimitador de la que depende el exploit);
    • (solo TrueType) anidamiento compuesto profundo combinado con componentes de escalado ascendente (>1) — la cadena de amplificación de coordenadas que usa el PoC público.
  4. Combina la coordenada del peor caso con los tamaños de texto usados en los flujos de contenido de la página (/Tf, Tm) y comprueba si 4096 × device_coord realmente excede INT32_MAX — es decir, si el desbordamiento de punto fijo es alcanzable.

Veredictos: exploit (desbordamiento alcanzable), suspicious (geometría sobredimensionada pero sin desbordamiento en el tamaño observado), clean.

Instalación y ejecución

# 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

Código de salida: 0 limpio, 1 exploit/sospechoso encontrado, 2 error.

Limitaciones

  • La causa raíz del CVE es la conversión de punto fijo en el rasterizador de trazados compartido aa_* de CoreGraphics, que renderiza tanto contornos TrueType glyf como CFF/Type2. El PoC público amplifica las coordenadas con glifos compuestos TrueType; una fuente CFF puede alcanzar coordenadas sobredimensionadas directamente (por ejemplo, acumulando operadores relativos), por lo que se analizan tanto /FontFile2 como /FontFile3. La heurística de cadenas compuestas es específica de TrueType; para CFF la señal es la comprobación de coordenadas sobredimensionadas / mentira en el bounding-box.
  • El escaneo del tamaño de texto (/Tf, Tm) de los flujos de contenido es de mejor esfuerzo; no evalúa completamente el estado gráfico del PDF / CTM. Cuando no se encuentra ningún tamaño, se asume un valor predeterminado conservador de 1024 para la comprobación de desbordamiento. Las señales de geometría sobredimensionada intrínsecas a la fuente no dependen de esto.
  • Este es un detector estructural heurístico, no un renderizador en sandbox: está pensado para detectar el patrón de exploit conocido y fuentes obviamente malformadas, no para demostrar que un archivo es seguro.
Descargar herramienta