CVE‑2025‑27158 es una vulnerabilidad crítica en Adobe Acrobat y Reader (versiones clásicas y DC hasta 24.001.30225 / 20.005.30748 / 25.001.20428) derivada de un Access of Uninitialized Pointer (CWE-824) en el módulo de procesamiento de fuentes (CFF2) dentro de archivos PDF. Al abrir un archivo PDF malicioso, puede desencadenarse una lectura desde un puntero no inicializado, resultando en ejecución arbitraria de código con los permisos del usuario actual (CVSS 3.1: 7.8).
El fallo reside en la lógica que interpreta tablas CFF2 embebidas en fuentes tipográficas dentro de PDFs:
Este tipo de fallo permite manipular el flujo de ejecución: incluso sin control total del código, la corrupción de estructuras internas puede derivar en RCE (ejecución remota de código).
El atacante crea un PDF que contiene una fuente CFF2 especialmente manipulada: específica para desencadenar acceso a puntero no inicializado.
Al abrir el PDF, Acrobat reserva estructura de FontVariationStore sin inicializar campos críticos.
Se invocan funciones que leen esos punteros, interpretando datos arbitrarios de memoria.
Con técnicas combinadas (heap grooming, ROP), se fuerza la ejecución de payload dentro del proceso.
Se logra ejecución de código con permisos de usuario, abriendo puertas para persistencia, descarga de malware u otras acciones.
https://github.com/CodeBugBox/CodeBugBox/blob/main/CVE%E2%80%912025%E2%80%9127158
Este script crea un PDF que al abrirlo en Acrobat provoca el acceso indebido y permite que el atacante inyecte payloads específicos.
Adobe publicó el boletín APSB25‑14 el 11 de marzo de 2025, corrigiendo este fallo en las siguientes versiones:
Actualizar inmediatamente a estas versiones es la medida más eficaz.
CVE‑2025‑27158 demuestra cómo un fallo sutil como un puntero no inicializado en una rutina de fuentes puede derivar en una vulnerabilidad crítica. 📌
🔍 Puntos clave:
🔒 Impacto en seguridad:
📌 Lección técnica:
Incluso funciones aparentemente “inocuas” como el parseo de fuentes pueden dejar vectores de ataque críticos si no se hace initialization defensiva. La seguridad requiere verificar cada dato antes de usarlo, especialmente en parsers complejos.