Para visualizar el sitio de manera óptima actualice el navegador. ×

Sleeping with the /*Enemy*/ Compiler: Software Vulnerabilities Caused by Optimizations

Existen algunas técnicas para evitar vulnerabilidades, como por ejemplo llenar con ceros los buffers que están en el stack antes de salir de las funciones; sin embargo, técnicas modernas de optimización como la Dead Store Elimination pueden hacer que el compilador crea que el llenado con ceros no sea necesario, eliminándolo. En esta charla voy a presentar algunos ejemplos de software de seguridad conocido en los que las optimizaciones del compilador provocaron vulnerabilidades; adicionalmente voy a mostrar un ejemplo en vivo de una aplicación de juguete en la que se puede explotar una vulnerabilidad causada por una optimización del compilador. Posteriormente, voy a mostrar soluciones comunes a estos problemas, tales como funciones provistas por los sistemas operativos y otras técnicas. Finalmente, daré una introducción al funcionamiento interno de los compiladores e invitaré a los asistentes a contribuir a compiladores conocidos para evitar estas situaciones con algunas ideas como mejoras en los diagnósticos y la generación de código.

Sobre Daniel Gutson

Mi vida ha sido maldecida con una dolorosa sucesión de desarrollos de compiladores exóticos, algunos de los cuales ni siquiera me dejaron saber para qué se usaban. Tuve lidiar con todo el rango de abstracción ya que los compiladores combinan desde algoritmos de alto nivel hasta el conocimiento de bajo nivel de la arquitectura destino. Contribuí al toolchain de GNU (implementé hardware erratas, agregué máquinas de estado finito al ensamblador, correcciones al debugger) y al comité de estandarización del lenguaje C++. Desde mediados de los 90, he estado haciendo desarrollo embebido y OS con un fuerte enfoque de seguridad. Actualmente soy co-fundador de una empresa de seguridad de firmware donde aplicamos muchas de estas experiencias. Me gusta guiar y motivar a otra gente a crecer e involucrarse con la comunidad del software libre, especialmente compiladores y herramientas en términos de seguridad.