Trouvé une vulnérabilité dans le sous-système tty du noyau Linux

Des chercheurs de l'équipe Google Project Zero libérés récemment à travers un article de blog une nouvelle méthode d'exploitation des vulnérabilités (CVE-2020-29661) dans la mise en place du gestionnaire ioctl TIOCSPGRP du Sous-système tty du noyau Linux, ainsi que des mécanismes de protection détaillés qui pourraient bloquer ces vulnérabilités.

Il est mentionné dans le message que le problème est causé par une erreur dans les paramètres de verrouillage, conduisant à une race condition dans le code de /tty/tty_jobctrl.c, qui a été utilisé pour créer des conditions d'accès à la mémoire après le lancement (use-after-free), exploitée par l'espace utilisateur via une manipulation avec ioct- en appelant TIOCSPGRP.

En plus des informations publiées, également une démo d'exploit fonctionnel a été réalisée pour l'élévation des privilèges dans Debian 10 avec noyau 4.19.0-13-amd64 et qui n'exclut pas non plus que cela puisse affecter diverses distributions, parmi lesquelles bien sûr celles basées et dérivées de Debian.

Bon nombre des techniques d'exploitation individuelles et des options d'atténuation que je décris ici ne sont pas nouvelles. Cependant, je pense que cela vaut la peine de les écrire ensemble pour montrer comment diverses atténuations interagissent avec un exploit après-libre assez normal.

Les extraits de code dans cet article de blog qui sont pertinents pour l'exploit sont tirés de la version précédente 4.19.160, car c'est sur cela que le noyau Debian cible est basé ; certains autres extraits de code proviennent de la ligne principale de Linux.

Parallèlement, dans l'article publié, l'accent n'est pas tant sur la technique de création d'un exploit fonctionnel, mais sur quels outils dans le noyau pour te protéger contre de telles vulnérabilités.

La conclusion est décevante, car il est mentionné que des méthodes telles que la segmentation de la mémoire dans le tas et le contrôle de l'accès à la mémoire après sa libération ne sont pas appliquées dans la pratique car elles entraînent une dégradation des performances et une protection basée sur CFI (Control Flow Integrity), qui bloque les exploits dans le dernier étapes d'une attaque, nécessite des améliorations.

Les pseudo-terminaux sont un type particulier de terminal, qui sont utilisés lorsque, par exemple, vous ouvrez une application de terminal dans un environnement graphique ou vous vous connectez à une machine distante via SSH. Alors que d'autres terminaux sont connectés à un type de matériel, les deux extrémités d'un pseudo-terminal sont contrôlées par l'espace utilisateur, et les pseudo-terminaux peuvent être créés librement par l'espace utilisateur (sans privilèges).

Chaque fois que /dev/ptmx est ouvert (abréviation de "pseudo-terminal multiplexer"), le descripteur de fichier résultant représente le côté périphérique (appelé dans la documentation et les sources du noyau "le pseudo-terminal maître") d'un périphérique. nouveau pseudo Terminal.

 Le terminal correspondant (auquel un shell se connecte normalement) est créé automatiquement par le noyau sous /dev/pts/ .

Lorsque l'on examine ce qui pourrait faire la différence à long terme, l'accent est mis sur l'utilisation d'analyseurs syntaxiques statiques avancés ou sur l'utilisation de langages sécurisés en mémoire comme les dialectes Rust et C avec des annotations étendues (comme le C éprouvé) pour créer des vérificateurs d'état, des verrous, objets et pointeurs. Les méthodes de protection mentionnent également l'activation du mode panic_on_oops, rendant les structures du noyau en lecture seule et restreignant l'accès aux appels système via des mécanismes tels que seccomp.

L'erreur à l'origine du problème il a été corrigé dans le noyau Linux le 3 décembre de l'année dernière. Le problème se manifeste dans les noyaux antérieurs à la version 5.9.13, mais la plupart des distributions ont résolu le problème dans les mises à jour des packages du noyau qui ont été proposées l'année dernière.

Une vulnérabilité similaire est également mentionnée (CVE-2020-29660) qui a été trouvée simultanément dans la mise en œuvre de l'appel ioctl TIOCGSID, mais a également été supprimée partout.

Enfin Si vous souhaitez en savoir plus, vous pouvez vérifier les détails dans le lien suivant.


Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.