Les ingénieurs de Google contribuant au noyau Linux ont annoncé avoir découvert des centaines de « race conditions », littéralement « situation de course » en anglais, dans le noyau en utilisant KCSAN. L’entreprise a travaillé pendant longtemps sur AddressSanitizer pour la recherche de bogues liés à la corruption de la mémoire, ou sur UndefinedBehaviorSanitizer pour le comportement non défini dans le code et d’autres assainisseurs. Cette fois, Google propose un nouveau détecteur de course critique pour le noyau Linux qu’il appelle KCSAN (Kernel Concurrency Sanitizer).
Les vulnérabilités dites de course de course critique ne sont pas nouvelles. En effet, une course critique ou situation de compétition se produit lorsque deux threads ou plus dans un même processus accèdent simultanément au même emplacement mémoire, où au moins un des accès est destiné à l’écriture, et lorsque les threads n’utilisent aucun verrou exclusif pour contrôler leurs accès à cette mémoire. Lorsque ces conditions sont remplies, l’ordre des accès n’est pas déterministe et le calcul peut donner des résultats différents d’une exécution à l’autre en fonction de cet ordre.
Les courses critiques sont de plus en plus considérées comme des bogues d’accès simultané et sont difficiles à reproduire et à diagnostiquer dans des programmes parallèles. Le noyau Linux est un système logiciel à grande échelle, dans lequel un parallélisme intensif au niveau des threads et un entrelacement non déterministe des threads sont plus sujets aux conditions de concurrence. Certaines situations de compétition peuvent être bénignes, mais une grande partie identifiée à ce jour sont considérées comme des bogues.
Le noyau Linux fournit plusieurs mécanismes pour éviter et gérer les conditions de course (race conditions en anglais). Il existe des outils comme Thread Analyzer ou encore KTSAN (Kernel Thread Sanitizer) pour détecter les erreurs de courses critiques dans le noyau Linux. Toutefois, Google, qui contribue également au noyau Linux, a proposé récemment KCSAN, un nouveau détecteur de courses critiques pour le noyau, un peu semblable à KTSAN. KCSAN (Kernel Concurrency Sanitizer) est un détecteur dynamique de course de critiques pour le noyau Linux.