MAccConc (Memory Access Concurrency) es una suite de herramientas desarrollada para identificar y analizar condiciones de carrera en el kernel de Linux, un tipo de error de seguridad que surge cuando la ejecución multihilo requiere una intercalación específica de operaciones para manifestarse. El proyecto, disponible en GitHub bajo el nombre MAccConc, aborda las dificultades inherentes a la prueba de estos bugs, donde los métodos tradicionales como la recompilación con retardos condicionales o el uso de DTrace resultan lentos y poco fiables. La herramienta se basa en el trazado de accesos a memoria y la inyección de retardos basados en la pila para explorar sistemáticamente las intercalaciones posibles entre hilos.
El sistema opera mediante la instrumentación ASAN en modo outline, que genera llamadas a funciones auxiliares en cada acceso a memoria, permitiendo detectar puntos de comunicación donde dos hilos acceden a rangos de memoria superpuestos, al menos uno de los cuales es una escritura. Estos datos se recopilan utilizando el mecanismo KCOV del kernel, elegido por su representación de datos en memoria más simple y su instrumentación estática siempre activa, a diferencia de ftrace. MAccConc ofrece tres componentes principales: una herramienta para probar automáticamente todas las intercalaciones A-B-A de un caso de prueba, una interfaz de usuario de terminal para la exploración manual y una interfaz gráfica de usuario para el mismo propósito. Aunque la parte del kernel está diseñada para ser utilizable en el descubrimiento automático de bugs mediante fuzzing, la herramienta de espacio de usuario para ese propósito específico aún está en desarrollo. El proyecto se inspira en trabajos previos como sockfuzzer y SKI, pero difiere en su implementación al utilizar instrumentación del compilador en lugar de parchear QEMU, lo que teóricamente permite su uso en hardware bare-metal.
