
Une lacune de sécurité importante dans la sécurité d’exécution Linux causée par l’interface « io_during » permet aux rootkits de fonctionner sans être détectés sur les systèmes tout en contournant les logiciels de sécurité d’entreprise avancés.
La faille a été découverte par des chercheurs en sécurité d’ARMOR qui ont développé un rootkit de validation de principe appelé « Curing » pour démontrer l’aspect pratique et la faisabilité des attaques exploitant io_uring pour l’évasion.
io_uring est une interface du noyau Linux pour des opérations d’E/S efficaces et asynchrones. Il a été introduit en 2019 avec Linux 5.1 pour résoudre les problèmes de performances et d’évolutivité avec le système d’E/S traditionnel.
Au lieu de s’appuyer sur des appels système qui causent beaucoup de surcharge et de blocages de processus, io_uring utilise des tampons en anneau partagés entre les programmes et le noyau système pour mettre en file d’attente les demandes d’E/S qui seront traitées de manière asynchrone, permettant au programme de continuer à fonctionner.

Le problème, selon ARMO, provient du fait que la plupart des outils de sécurité surveillent les appels système suspects et les connexions (comme « ptrace » ou « seccomp »), ignorant complètement tout ce qui implique l’anneau io_ring, créant un angle mort très dangereux.
Les chercheurs expliquent que io_uring prend en charge un large éventail d’opérations à travers 61 types d’opérations, y compris la lecture/écriture de fichiers, la création et l’acceptation de connexions réseau, les processus de génération, la modification des autorisations de fichiers et la lecture du contenu des répertoires, ce qui en fait un puissant vecteur de rootkit.
Tel est le risque que Google ait décidé de le désactiver par défaut sur Android et ChromeOS, qui utilisent le noyau Linux et héritent de bon nombre de ses vulnérabilités sous-jacentes.
Pour mettre la théorie à l’épreuve, ARMO a créé Curing, un rootkit spécial qui abuse de io_uring pour extraire des commandes d’un serveur distant et exécuter des opérations arbitraires sans déclencher de crochets d’appel système.
Les tests de durcissement contre plusieurs outils de sécurité d’exécution bien connus ont démontré que la plupart ne pouvaient pas détecter son activité.
Plus précisément, Falco s’est avéré entièrement aveugle même lorsque des règles de détection personnalisées ont été utilisées, tandis que Tetragon a montré une incapacité à signaler les activités malveillantes dans la configuration par défaut.
Tetragon, cependant, ne considère pas sa plate-forme vulnérable car la surveillance peut être activée pour détecter ce rootkit.
« Nous avons signalé cela à l’équipe de Tetragon et leur réponse a été que de leur point de vue, Tetragon n’est pas « vulnérable » car ils offrent la flexibilité de s’accrocher pratiquement n’importe où », expliquent les chercheurs.
« Ils ont souligné un bon article de blog qu’ils ont écrit sur le sujet. »
En testant des outils commerciaux, ARMO a en outre confirmé l’incapacité de détecter les logiciels malveillants basés sur io_uring et les interactions du noyau qui n’impliquent pas d’appels système. Cependant, ARMO n’a pas partagé les programmes commerciaux qu’ils ont testés à nouveau.
Pour ceux qui souhaitent tester leurs environnements contre cette menace, ARMO a rendu Curing disponible gratuitement sur GitHub.
ARMO suggère que le problème peut être résolu avec l’adoption de l’Instrumentation de sécurité d’exécution du noyau (KRSI), qui permet aux programmes eBPF d’être attachés aux événements du noyau pertinents pour la sécurité.