Démonstration d'un rootkit linux io_uring qui échappe à la détection par les outils de sécurité basés sur les appels système

L'introduction de io_uring dans le noyau Linux en 2019 a été une avancée pour les opérations d'E/S asynchrones, améliorant performance et l'efficacité. Cependant, son conception a involontairement ouvert une importante surface d'attaque aux rootkits. De récentes démonstrations révèlent une nouvelle génération de rootkits exploitant l'architecture d'io_uring pour contourner les outils de sécurité conventionnels basés sur les appels système, tels que KernelCare, CrowdStrike et Symantec. Cette capacité représente un défi majeur pour les organisations qui s'appuient sur les suites de sécurité de McAfee, Palo Alto Networks, FireEye, Check Point, Kaspersky, Darktrace et Fortinet, qui surveillent traditionnellement les appels système pour détecter les activités malveillantes. La nature furtive de ces rootkits exige une réévaluation critique des méthodologies de surveillance de la sécurité d'exécution dans les environnements Linux.

Comprendre l'interface io_uring de Linux et son exploitation par les rootkits

Le interface io_uring Facilite les E/S asynchrones en utilisant deux tampons circulaires économes en mémoire : la file de soumission (SQ) et la file de complétion (CQ) pour coordonner l'espace utilisateur et le noyau. Ce mécanisme élimine les appels système fréquents, réduisant ainsi la latence et la surcharge système. Cependant, ce changement d'architecture signifie également que de nombreux outils de sécurité dépendant de l'interception des appels système ne détectent plus les actions effectuées via les files d'attente io_uring.

  • Les outils de sécurité traditionnels surveillent les appels système tels que lire(), écrire(), et ouvrir() largement.
  • Les opérations io_uring se produisent principalement via des files d'attente de mémoire partagée, contournant les chemins d'appel système typiques.
  • Les rootkits exploitant io_uring peuvent effectuer des actions d'E/S malveillantes sans déclencher d'alertes basées sur les appels système.

Ce modus operandi permet la furtivité en évitant les hooks du noyau utilisés par des outils comme CrowdStrike et KernelCare, qui sont conçus pour intercepter les activités d'appel système pour détection des menaces.

Comparaison entre la surveillance des appels système et la détection d'activité d'E/S basée sur io_uring

Approche de sécurité Méthode de suivi Visibilité des opérations io_uring Capacité de détection de rootkit
Surveillance basée sur les appels système (par exemple, CrowdStrike, Symantec) Interception et accrochage des appels système Limité – io_uring contourne la plupart des appels système Faible voire nul contre les rootkits io_uring
Surveillance basée sur la mémoire et le comportement (par exemple, Darktrace, Fortinet) Analyse de la mémoire du noyau, anomalies de comportement Modéré – potentiel de détection d'E/S asynchrones anormales Détection améliorée mais nécessite des heuristiques avancées
Solutions de correctifs du noyau (par exemple, KernelCare) Corriger les vulnérabilités dans les E/S asynchrones du noyau Variable – dépend des patchs appliqués Peut réduire l'exposition si les correctifs couvrent les exploits io_uring

Présentation technique des techniques d'évasion de rootkit basées sur io_uring

Le rootkit, illustré par la preuve de concept d'ARMO nommée « Guérir », manipule l'interface io_uring pour injecter des charges malveillantes et intercepter les fonctions du noyau sans laisser de traces d'appels système. En interagissant directement avec le noyau via les files d'attente de soumission et de complétion, il effectue des opérations secrètes telles que :

  • Chargement de modules de noyau non autorisés sans déclencher les hooks de chargement des modules de noyau.
  • Interception de l'accès au système de fichiers et des E/S réseau avec un encombrement minimal.
  • Maintenir la persistance en détournant les rappels d'E/S asynchrones.
LIRE  Python : tout ce que vous devez savoir sur le langage principal du Big Data et du Machine Learning

Ces méthodes permettent aux attaquants de conserver des privilèges élevés et d’exécuter du code arbitraire au niveau du noyau tout en échappant à la détection des solutions de sécurité des terminaux, notamment McAfee, Palo Alto Networks, Check Point et FireEye.

Mesures prises par le rootkit pour contourner la surveillance des appels système

  1. Initialiser les tampons d'interface io_uring pour la soumission et l'achèvement.
  2. Soumettez directement des requêtes d'E/S élaborées qui invoquent un code de noyau malveillant.
  3. Utilisez la file d'attente d'achèvement pour recevoir des réponses, en contournant les notifications d'appel système classiques.
  4. Accrochez les fonctions critiques du noyau en corrigeant les pointeurs de fonction dans la mémoire du noyau.
  5. Évitez la détection heuristique et basée sur les signatures en évitant les empreintes de signature dans les journaux d'appels système surveillés.

Les organisations qui s'appuient uniquement sur les signaux de surveillance des appels système, notamment celles qui utilisent la protection des terminaux de Symantec, peuvent avoir du mal à détecter ces rootkits. Seules des méthodes de détection améliorées et axées sur le comportement peuvent révéler ces attaques sophistiquées.

Stratégies d'atténuation et techniques de détection avancées contre les rootkits io_uring

La lutte contre les rootkits exploitant io_uring nécessite une approche multicouche incluant la gestion des correctifs du noyau, l'inspection de la mémoire et la détection avancée des anomalies. Les stratégies recommandées sont les suivantes :

  • Appliquer rapidement les correctifs KernelCare pour fermer les vulnérabilités io_uring connues.
  • Déploiement de plateformes de sécurité centrées sur le comportement comme Darktrace et Fortinet qui analysent le comportement du noyau et des E/S asynchrones.
  • Intégration de l'analyse médico-légale de la mémoire pour détecter les modifications non autorisées du noyau.
  • Mise à jour des agents de sécurité pour surveiller et auditer les files d'attente de soumission et d'achèvement io_uring pour détecter les modèles suspects.
  • Utilisation d'outils d'analyse dynamique pour simuler et exposer des séquences d'E/S asynchrones anormales.
Technique d'atténuation Efficacité Défis
Application de correctif KernelCare Élevé si opportun et complet Nécessite une gestion continue des correctifs
Détection basée sur le comportement (Darktrace, Fortinet) Modéré à élevé Nécessite des heuristiques affinées
Analyse de la mémoire et vérification de l'intégrité du noyau Haut Nécessite beaucoup de ressources et nécessite une analyse experte
Surveillance directe des files d'attente io_uring Technique émergente Prise en charge limitée des outils actuellement

Des fournisseurs de premier plan tels que CrowdStrike, Kaspersky et Check Point étendent leurs capacités de détection pour intégrer la surveillance des E/S asynchrones et l'analyse de la mémoire du noyau. Se tenir informé des mises à jour des fournisseurs et des nouvelles technologies de détection est essentiel pour garantir une sécurité robuste des terminaux Linux.