La technique d'exploitation de la vulnérabilité dans le sous-système tty du noyau Linux a été divulguée.

Des chercheurs de l'équipe Google Project Zero ont publié une méthode d'exploitation de la vulnérabilité (CVE-2020-29661) dans l'implémentation du gestionnaire ioctl TIOCSPGRP de la sous-système tty du noyau Linux, et ont également examiné en détail les mécanismes de protection qui pourraient bloquer de telles vulnérabilités.

L'erreur problématique a été corrigée dans le noyau Linux le 3 décembre de l'année dernière. Le problème se manifeste dans les noyaux jusqu'à la version 5.9.13, mais la plupart des distributions ont corrigé le problème dans les mises à jour des paquets avec noyau proposées l'année dernière (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Une vulnérabilité similaire (CVE-2020-29660) a été trouvée simultanément dans l'implémentation de l'appel ioctl TIOCGSID, mais elle a également été largement corrigée.

Le problème provient d'une erreur dans l'installation des verrous, entraînant une condition de concurrence dans le code drivers/tty/tty_jobctrl.c, qui a été exploité pour créer des conditions d'accès à la mémoire après sa libération (use-after-free), exploitable depuis l'espace utilisateur par le biais de manipulations de l'appel ioctl TIOCSPGRP. Un exploit fonctionnel a été démontré pour obtenir des privilèges élevés sur Debian 10 avec le noyau 4.19.0-13-amd64.

Dans l'article publié, l'accent n'est pas tant mis sur la technique de création d'un exploit fonctionnel, mais sur les outils que le noyau dispose pour se protéger contre de telles vulnérabilités. La conclusion est peu encourageante, les méthodes telles que la segmentation de la mémoire en tas et le contrôle des accès à la mémoire après sa libération ne sont pas appliquées en pratique, car elles entraînent une diminution des performances, et la protection basée sur CFI (Control Flow Integrity), qui bloque les exploits à des stades avancés de l'attaque, nécessite des améliorations.

En considérant ce qui pourrait changer la situation à long terme, l'accent est mis sur l'application de vérificateurs statiques avancés ou sur l'utilisation de langages assurant une gestion sûre de la mémoire, tels que Rust et les dialectes du langage C avec des annotations étendues (par exemple, Checked C), au moment de la compilation pour vérifier l'état des verrous, des objets et des pointeurs. Parmi les méthodes de protection, on mentionne également l'activation du mode panic_on_oops, la conversion des structures du noyau en mode lecture seule et la limitation de l'accès aux appels système à l'aide de mécanismes tels que seccomp.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster