El Kernel Address Sanitizer (KASAN) es la herramienta de referencia en el kernel de Linux para detectar en tiempo de ejecución dos de los errores de memoria más comunes en código C: accesos fuera de los límites y use-after-free. Aunque Rust gana terreno en el núcleo, la mayor parte del código sigue escribiéndose en C, un lenguaje propenso a comportamientos indefinidos, desbordamientos de búfer y fallos de segmentación. Para identificarlos antes de que lleguen a producción, los desarrolladores cuentan con KASAN, cuyo funcionamiento combina dos piezas. La primera es la instrumentación que introduce el compilador (GCC o LLVM) mediante la biblioteca Address Sanitizer de Google: añade código antes de cada acceso a memoria. La segunda es la memoria sombra, una región especial mantenida por el propio kernel que registra el estado de toda la memoria usable y permite distinguir accesos legítimos de inválidos. KASAN se activa con la opción CONFIG_KASAN al recompilar el kernel, y ofrece parámetros ajustables: instrumentación inline u outlined, soporte de etiquetas por hardware o software (MTE en arquitecturas compatibles) y selección de qué regiones se monitorizan (vmalloc, pila, etc.). Para experimentar de forma segura, Bootlin recomienda virtme-ng de Andrea Righi, que lanza el kernel instrumentado dentro de QEMU. Tras cargar el módulo kasan_test, dmesg muestra informes detallados: naturaleza del fallo, contexto de ejecución, pila de llamadas completa, tamaño del objeto, redzones adyacentes (zonas de memoria de relleno que detectan desbordamientos) y estado de la memoria sombra circundante, datos indispensables para depurar el error.
