AddressSanitizer (ASan) es un detector de errores de memoria rápido y de código abierto que se integra en compiladores como Clang y GCC. Utiliza una combinación de instrumentación en tiempo de compilación y una biblioteca de tiempo de ejecución para detectar una amplia gama de errores de memoria, incluyendo desbordamientos de búfer (heap, stack, global), uso de memoria después de liberarla (use-after-free), doble liberación (double-free), uso de memoria después de salir del ámbito (use-after-scope) y uso de memoria no inicializada. ASan funciona asignando una 'shadow memory' a cada byte de la memoria de la aplicación, donde se almacena información sobre el estado de accesibilidad de ese byte. Las operaciones de memoria se instrumentan para verificar esta 'shadow memory' antes de cada acceso, lo que permite detectar accesos inválidos con una sobrecarga de rendimiento relativamente baja.
ASan es ampliamente utilizado en el desarrollo de software de sistemas y aplicaciones de alto rendimiento donde la seguridad y la estabilidad son críticas. Proyectos como Chromium, Firefox, Android y el kernel de Linux (a través de KASan, su variante para el kernel) lo emplean de forma rutinaria en sus pipelines de CI/CD para identificar y corregir errores de memoria antes de que lleguen a producción. También es una herramienta fundamental en la detección de vulnerabilidades de seguridad, ya que muchos exploits se basan en la explotación de errores de corrupción de memoria. Empresas como Google y Microsoft lo utilizan internamente para mejorar la robustez de sus productos y servicios.
Para un arquitecto, la importancia de ASan radica en su capacidad para elevar significativamente la calidad y seguridad del software. Integrar ASan en el proceso de desarrollo y pruebas (especialmente en entornos de CI/CD) permite detectar clases enteras de errores de memoria que son notoriamente difíciles de depurar y que a menudo conducen a vulnerabilidades de seguridad críticas o fallos de servicio. El trade-off principal es la sobrecarga de rendimiento y memoria: ASan típicamente introduce un overhead de CPU de 2x y un overhead de memoria de 3x, lo que lo hace inadecuado para entornos de producción con requisitos de latencia o recursos extremadamente estrictos. Sin embargo, su valor en entornos de desarrollo, pruebas y fuzzing es inmenso, permitiendo a los equipos construir sistemas más robustos y seguros, reduciendo el riesgo de incidentes de seguridad y mejorando la fiabilidad general de la plataforma.