Identifying Linux Kernel Instability Due to Poor RCU Synchronization
Sullivan, Flanagan, Connell
Read-Copy-Update (RCU) is widely used in the Linux kernel to manage concurrent access to shared data structures.However, improper synchronization when removing RCU protected hash table entries can lead to stale pointers, inconsistent lookups, and critical use after free (UAF) vulnerabilities. This paper investigates a driver-level synchronization issue arising from the omission of explicit synchronize_rcu() calls during hash table updates, using a discovered weakness in the Intel ICE network drivers Virtual Function (VF) management. Previous kernel vulnerabilities, such as a bug in the Reliable Datagram Sockets (RDS) subsystem, show how improper RCU synchronization can directly cause kernel crashes. Experimental results demonstrate that removing VF entries without proper synchronization leaves transient stale entries, delays memory reclamation, and results in significant memory fragmentation under rapid insert/delete workloads. RCU hash tables are widely deployed in Linux kernel subsystems such as networking, virtualization, and file systems; improper synchronization can cause memory fragmentation, kernel instability, and out-of-memory (OOM) conditions. Mitigations are proposed, recommending explicit insertion of synchronize_rcu() calls to ensure timely and safe memory reclamation. These findings reinforce established best practices for RCU synchronization, highlighting their importance for maintaining kernel stability and memory safety.
Keywords: RCU, kernel synchronization, hash tables, ICE driver, memory fragmentation, use-after-free
academic
Identification de l'Instabilité du Noyau Linux Due à une Mauvaise Synchronisation RCU
Cet article étudie les problèmes de synchronisation du mécanisme Read-Copy-Update (RCU), largement utilisé dans le noyau Linux pour la gestion des structures de données concurrentes. Les chercheurs découvrent que l'absence d'appels explicites à synchronize_rcu() lors de la suppression d'entrées de tables de hachage protégées par RCU entraîne des pointeurs obsolètes, des recherches incohérentes et des vulnérabilités graves de type use-after-free (UAF). En prenant comme étude de cas les faiblesses découvertes dans la gestion des fonctions virtuelles (VF) du pilote réseau Intel ICE, les auteurs démontrent expérimentalement que, sous des charges de travail d'insertion/suppression rapides, une synchronisation RCU inadéquate provoque des entrées obsolètes transitoires, une récupération de mémoire retardée et une fragmentation mémoire grave, conduisant finalement à l'épuisement de la mémoire (OOM) et à des plantages système. L'article propose une solution d'atténuation basée sur l'insertion explicite d'appels à synchronize_rcu(), soulignant l'importance cruciale d'une synchronisation RCU correcte pour maintenir la stabilité du noyau et la sécurité mémoire.
Le mécanisme RCU du noyau Linux est largement utilisé pour implémenter l'accès aux structures de données sans verrous, permettant aux lecteurs d'accéder aux données sans verrous tandis que les rédacteurs retardent la libération des données jusqu'à ce que tous les lecteurs aient terminé. Cependant, après la suppression d'une entrée d'une table de hachage protégée par RCU, sans mécanisme de synchronisation approprié (tel que synchronize_rcu() ou call_rcu()), les problèmes suivants peuvent survenir:
Problèmes de pointeurs obsolètes: D'autres cœurs de processeur peuvent toujours détenir des références à des objets supprimés
Vulnérabilités Use-After-Free: La mémoire est libérée prématurément mais reste accessible
Fragmentation mémoire: Les cycles rapides d'allocation/libération empêchent la récupération efficace de la mémoire
Instabilité système: Conduisant finalement à OOM et aux plantages du noyau
Ubiquité: Les tables de hachage RCU sont largement déployées dans les sous-systèmes critiques du noyau (réseau, virtualisation, systèmes de fichiers)
Sécurité: Une synchronisation inadéquate peut directement entraîner des plantages du noyau et des vulnérabilités UAF
Impact Pratique: Les cas historiques montrent que les sous-systèmes RDS et eBPF ont tous deux connu des vulnérabilités graves dues à des problèmes similaires
Compromis Performance: Il existe un compromis critique entre la récupération asynchrone et l'attente synchrone
Les auteurs ont choisi le pilote réseau Intel ICE comme cas de test pratique, qui utilise une table de hachage protégée par RCU dans la gestion des fonctions virtuelles SR-IOV. La recherche révèle que lors de la suppression de VF, le pilote utilise hash_del_rcu() sans appeler synchronize_rcu(), fournissant une plateforme expérimentale idéale pour étudier systématiquement les impacts de l'absence de synchronisation RCU.
Découverte de Vulnérabilité et Étude de Cas: Identification et analyse détaillée du problème de synchronisation RCU manquante dans la gestion des VF du pilote Intel ICE, fournissant un cas réel de vulnérabilité au niveau du pilote du noyau
Évaluation Expérimentale Systématique: Conception et mise en œuvre de méthodes de test de stress complètes, incluant:
Tests de cycles rapides de création/suppression de VF
Surveillance de l'utilisation mémoire et des OOM
Analyse temporelle des périodes de grâce RCU
Évaluation quantitative de la fragmentation mémoire
Preuves Empiriques: Démonstration expérimentale de trois conséquences clés de l'absence de synchronize_rcu():
Persistance transitoire d'entrées obsolètes
Retard significatif de la récupération mémoire
Conditions OOM sous opérations rapides (même avec 120 Mo de mémoire disponible)
Solutions d'Atténuation et Meilleures Pratiques: Recommandations de correction explicites (appel à synchronize_rcu()) et stratégies alternatives (call_rcu(), limitation de débit), renforçant les meilleures pratiques de synchronisation RCU
Méthodologie Générique: Fourniture de méthodes de test extensibles à d'autres sous-systèmes du noyau, établissant un paradigme pour la détection systématique des problèmes de synchronisation RCU
Tâche de Recherche: Évaluer l'impact de l'absence d'appels à synchronize_rcu() dans les opérations de suppression de tables de hachage protégées par RCU
Conditions d'Entrée:
Code de gestion des VF du pilote Intel ICE (utilisant hash_del_rcu() sans synchronisation RCU)
Charge de travail de création/suppression rapide de VF
Contrairement à l'analyse théorique, cette recherche est basée sur du code de pilote de niveau production réel, fournissant un cas de problème réellement reproductible.
Vulnérabilité Réelle: La recherche est basée sur des problèmes réels du code de pilote de niveau production, plutôt que sur des constructions théoriques
Reproductibilité: Fournit des étapes de reproduction détaillées et une configuration d'environnement
Valeur Pratique: Les problèmes découverts ont été signalés à Intel et peuvent influencer les déploiements réels
Cet article est un travail de recherche en sécurité des systèmes solide qui réussit à lier les meilleures pratiques théoriques de RCU aux vulnérabilités réelles des pilotes du noyau. À travers le cas spécifique du pilote Intel ICE, les auteurs démontrent systématiquement les conséquences graves de l'absence d'appels à synchronize_rcu(): des pointeurs obsolètes à la fragmentation mémoire en passant par les plantages système.
Le plus grand atout réside dans son caractère pratique et sa reproductibilité. Contrairement à l'analyse purement théorique, cet article fournit une configuration expérimentale détaillée, des scripts de test exécutables et des données quantifiées claires. La découverte paradoxale que l'OOM survient avec 120 Mo de mémoire disponible illustre de manière vivante les dangers de la fragmentation mémoire.
La valeur principale se manifeste à trois niveaux: (1) fournir aux développeurs Intel et d'autres des recommandations de correction opérationnelles; (2) fournir à la communauté du développement du noyau un cas d'avertissement sur la synchronisation RCU; (3) fournir aux chercheurs une méthodologie de test extensible.
Les marges d'amélioration résident principalement dans l'ampleur et la profondeur de l'expérimentation: plus de plates-formes matériques, analyse plus approfondie des internals du noyau, évaluation plus complète des compromis de performance, et preuves plus solides de l'exploitabilité UAF, renforceront tous la persuasion de l'article.
En résumé, c'est un excellent travail ayant une contribution pratique réelle à la communauté du développement du noyau et de la sécurité des systèmes, dont les découvertes et la méthodologie possèdent une valeur à long terme.