Un fuzzer para detectar vulnerabilidades de uso después de liberar
Autores: Zhao, Xiaoqi; Qu, Haipeng; Yi, Jiaohong; Wang, Jinlong; Tian, Miaoqing; Zhao, Feng
Idioma: Inglés
Editor: MDPI
Año: 2024
Acceso abierto
Artículo científico
2024
Un fuzzer para detectar vulnerabilidades de uso después de liberar
Categoría
Matemáticas
Subcategoría
Matemáticas generales
Palabras clave
Fuzzing
Detección de vulnerabilidades
Uso después de liberar
UAF-Fuzzer
Operaciones de memoria
Análisis estático
Licencia
CC BY-SA – Atribución – Compartir Igual
Consultas: 23
Citaciones: Sin citaciones
El Fuzzing es una técnica de detección de vulnerabilidades automatizada ampliamente utilizada. La mayoría de los fuzzers existentes están guiados por la cobertura de bordes, lo que los hace menos efectivos en la detección de vulnerabilidades específicas, especialmente las vulnerabilidades de uso después de liberar (UAF). Esto se debe a que la activación de una vulnerabilidad UAF no solo debe cubrir una operación de memoria específica, sino también cumplir con una secuencia específica de operaciones. En este documento, proponemos UAF-Fuzzer para detectar UAFs, que consta de etapas de análisis estático y fuzzing. En la etapa de análisis estático, UAF-Fuzzer primero utiliza la identificación del objetivo para determinar los bloques básicos que pueden causar UAFs como los bloques básicos objetivo; posteriormente, instrumenta estos bloques básicos objetivo. Posteriormente, proponemos un método de evaluación de operaciones de memoria para evaluar la complejidad de las operaciones de memoria. En la etapa de fuzzing, UAF-Fuzzer asigna energía a las semillas utilizando una operación de evaluación de memoria y emplea un algoritmo de selección de semillas novedoso para priorizar la ejecución de casos de prueba que probablemente desencadenen vulnerabilidades UAF. Diseñamos e implementamos un UAF-Fuzzer para mejorar la detección de UAFs y lo comparamos con AFL, AFLFast, FairFuzz, MOPT, EcoFuzz y TortoiseFuzz en términos de detección de vulnerabilidades UAF, detección de fallos y descubrimiento de rutas. Los resultados mostraron que UAF-Fuzzer es más efectivo en términos de detectar vulnerabilidades UAF. También hemos descubierto tres vulnerabilidades UAF, las hemos enviado al mantenimiento de software para su corrección y hemos obtenido IDs de CVE.
Descripción
El Fuzzing es una técnica de detección de vulnerabilidades automatizada ampliamente utilizada. La mayoría de los fuzzers existentes están guiados por la cobertura de bordes, lo que los hace menos efectivos en la detección de vulnerabilidades específicas, especialmente las vulnerabilidades de uso después de liberar (UAF). Esto se debe a que la activación de una vulnerabilidad UAF no solo debe cubrir una operación de memoria específica, sino también cumplir con una secuencia específica de operaciones. En este documento, proponemos UAF-Fuzzer para detectar UAFs, que consta de etapas de análisis estático y fuzzing. En la etapa de análisis estático, UAF-Fuzzer primero utiliza la identificación del objetivo para determinar los bloques básicos que pueden causar UAFs como los bloques básicos objetivo; posteriormente, instrumenta estos bloques básicos objetivo. Posteriormente, proponemos un método de evaluación de operaciones de memoria para evaluar la complejidad de las operaciones de memoria. En la etapa de fuzzing, UAF-Fuzzer asigna energía a las semillas utilizando una operación de evaluación de memoria y emplea un algoritmo de selección de semillas novedoso para priorizar la ejecución de casos de prueba que probablemente desencadenen vulnerabilidades UAF. Diseñamos e implementamos un UAF-Fuzzer para mejorar la detección de UAFs y lo comparamos con AFL, AFLFast, FairFuzz, MOPT, EcoFuzz y TortoiseFuzz en términos de detección de vulnerabilidades UAF, detección de fallos y descubrimiento de rutas. Los resultados mostraron que UAF-Fuzzer es más efectivo en términos de detectar vulnerabilidades UAF. También hemos descubierto tres vulnerabilidades UAF, las hemos enviado al mantenimiento de software para su corrección y hemos obtenido IDs de CVE.