Solo dos parches de cada 500: por qué los desarrolladores suelen ocultar vulnerabilidades y cómo AutoPiff las saca a la luz

Solo dos parches de cada 500: por qué los desarrolladores suelen ocultar vulnerabilidades y cómo AutoPiff las saca a la luz

Nuevo software reduce el análisis de parches de seguridad de 12 horas a apenas unos minutos

image

Los proveedores publican cientos de actualizaciones de controladores al año, y entre ellas es fácil pasar por alto una corrección silenciosa de seguridad sin número de vulnerabilidad. Revisar cada versión manualmente es casi imposible. La nueva herramienta AutoPiff intenta resolver el problema y encuentra automáticamente en los parches los cambios que pueden cerrar fallos de seguridad.

AutoPiff es el Marco Automatizado de Inteligencia y Detección de Parches. El sistema analiza las diferencias entre la versión vulnerable y la corregida del controlador para el núcleo de Windows y busca señales características de parches de protección. El motor se apoya en un conjunto de reglas semánticas estrictas en formato YAML y procura trabajar con la máxima precisión para reducir el número de falsos positivos.

La herramienta presta atención a escenarios de explotación habituales. Entre ellos, correcciones de errores de uso tras liberación, cuando tras la llamada ExFreePool se asigna NULL al puntero; la adición de comprobaciones de longitud antes de memcpy; el refuerzo de la frontera entre el modo usuario y el modo kernel mediante ProbeForRead y ProbeForWrite; la protección contra desbordamientos enteros mediante funciones aritméticas seguras; así como mejoras en los contadores de referencias mediante operaciones atómicas. AutoPiff también supervisa la validación de los datos de entrada de IOCTL, la protección frente a la corrupción del pool de memoria y las comprobaciones adicionales de privilegios.

Los desarrolladores describen un panorama típico: de 500 actualizaciones de controladores al año, 490 están relacionadas con nuevas funciones o con optimizaciones, ocho corrigen errores menores y solo dos contienen correcciones silenciosas de seguridad sin asignación de CVE. Sin automatización, hay que revisar las 500 versiones para encontrar un par de cambios significativos. AutoPiff reduce el conjunto a una decena de actualizaciones más sospechosas con una alta puntuación de riesgo.

El sistema está integrado en la canalización Karton y dividido en varios microservicios que intercambian datos a través de Redis y RabbitMQ. Primero, el módulo driver-monitor comprueba la aparición de nuevas versiones de controladores mediante WinBIndex y VirusTotal y carga los archivos en el repositorio MWDB. A continuación, karton-patch-differ empareja versiones, lanza la descompilación en Ghidra y mapea funciones. Una etapa separada analiza la alcanzabilidad de las funciones modificadas desde los puntos de entrada IOCTL e IRP, tras lo cual el módulo de clasificación asigna a cada cambio detectado una puntuación final teniendo en cuenta la gravedad, la alcanzabilidad y la presencia de llamadas peligrosas. Si la puntuación supera un umbral establecido, autopiff-alerter envía una notificación a Telegram.

AutoPiff utiliza 58 reglas en 22 categorías y rastrea más de 50 funciones potencialmente peligrosas, incluyendo operaciones de copia de memoria, asignación y liberación del pool, validación de los búferes de usuario y operaciones atómicas con contadores. La puntuación final se calcula mediante una fórmula que considera el peso de la regla, la confianza del emparejamiento, la proximidad a llamadas peligrosas y la posibilidad de alcanzar la sección vulnerable desde la interfaz externa del controlador. Los hallazgos con bajo nivel de confianza son descartados por el sistema.

Según los autores, el análisis manual de un par de controladores lleva de cuatro a doce horas. AutoPiff realiza los mismos pasos preparatorios en unos minutos y genera automáticamente un informe en formato JSON, que se adjunta a la muestra en MWDB. No obstante, la herramienta no sustituye el análisis de la vulnerabilidad por completo. El especialista aún debe verificar la posibilidad de explotación, analizar la causa raíz del error y evaluar el riesgo real.

El proyecto se distribuye bajo la licencia MIT y puede funcionar como parte de la infraestructura driver_analyzer con MWDB y un panel de control, o bien como una biblioteca independiente. El código está disponible en GitHub e incluye el conjunto de reglas, los esquemas de datos y más de cien pruebas unitarias.