Analyses on the evolution of memory corruption into the concurrent era and detection methods
- Llorente Vázquez, Oscar
- Pablo García Bringas Director/a
- Igor Santos Grueiro Director
Universidad de defensa: Universidad de Deusto
Fecha de defensa: 18 de diciembre de 2023
- Emilio Santiago Corchado Rodríguez Presidente/a
- Iker Pastor López Secretario/a
- Giuseppe Psaila Vocal
Tipo: Tesis
Resumen
Esta tesis doctoral profundiza en tres elementos interrelacionados: (i) errores de memoria, (ii) vulnerabilidades de concurrencia (centrándose en la corrupción de memoria de concurrencia), y (iii) técnicas de instrumentación dinámica de binarios (DBI). Primero, analizamos las características de los distintos tipos de errores de memoria y cómo son explotados por los atacantes, así como los principales métodos de defensa propuestos. Además, sistematizamos las técnicas más relevantes en materia de detección de corrupción de memoria. Asimismo, desarrollamos una herramienta para analizar la evolución del panorama de la corrupción de memoria en programas reales. Analizamos de forma sistemática las vulnerabilidades de concurrencia en programas escritos en C y C++, su explotación y su detección, centrándonos en la corrupción de memoria de concurrencia. Organizamos el trabajo previo sobre las características y detección de errores de concurrencia, destacando las diferencias en relación a las vulnerabilidades. Después, ampliamos nuestra herramienta anterior para analizar la presencia y las propiedades de las vulnerabilidades de concurrencia en programas reales, identificando una tendencia en aumento. Además, analizamos y comparamos los enfoques existentes para la detección de vulnerabilidades de corrupción de memoria de concurrencia, muchos de ellos implementados sobre DBI. En cuanto a la instrumentación dinámica de binarios (DBI), unificamos los enfoques a nivel de proceso y de sistema. Identificamos y definimos sus bloques básicos y analizamos las técnicas de instrumentación subyacentes, comparando su capacidad para instrumentar primitivas y eventos. Después, evaluamos su rendimiento al implementar cada primitiva, y destacamos las observaciones relevantes. Nuestros resultados muestran que ninguna técnica es mejor que el resto en todas las circunstancias.