
Visualisation, Fuzzing, Exploit et Correctif de la vulnérabilité Baron Samedit
Visualisation, Fuzzing, Exploit et Patch de la vulnérabilité Baron Samedit
Voir le rapport »
Francesco Marchiori
·
Alessandro Lotto
Tout système d'exploitation basé sur Unix est équipé de la commande sudo, qui permet une élévation temporaire des privilèges root pour les utilisateurs censés pouvoir en bénéficier. Sudo offre donc une fonctionnalité critique qui, si elle est abusée, peut conduire à la compromission de la sécurité et de la fiabilité du système lui-même. En raison de son importance au sein du système d'exploitation, le code source de sudo est soumis à des tests fréquents et à des revues de code. Ces derniers ont conduit à la découverte d'une vulnérabilité de débordement de tas, nommée CVE-2021-3156, qui est restée cachée pendant près de 10 ans. Même les techniques de fuzzing, l'une des techniques les plus utilisées pour la découverte de bugs et de vulnérabilités, n'avaient pas permis de la repérer auparavant. Dans cet article, nous analysons en détail la vulnérabilité CVE-2021-3156 de sudo, depuis le débordement de tampon jusqu'à la manière dont il peut être exploité pour obtenir un shell root, même en étant un utilisateur non privilégié ou en n'étant pas autorisé à utiliser la commande sudo.
Dans le répertoire Visualization, nous avons placé quelques scripts utilisés pour visualiser comment les arguments sont analysés avec ou sans caractères antislash, et pour analyser comment les variables d'environnement affectent la disposition du tas, afin de mieux comprendre la structure de l'exploit proposé.
Dans le répertoire Fuzzing se trouvent les fichiers nécessaires pour effectuer du fuzzing sur la version vulnérable de sudo. Nous y décrivons également comment fuzzer et comment résoudre les problèmes qui empêchent AFL de fonctionner directement, expliquant ainsi comment la vulnérabilité est restée cachée pendant près de 10 ans.
Dans le répertoire Exploit se trouvent les fichiers nécessaires pour effectuer l'attaque sur une autre version vulnérable de sudo. Nous exploitons la population de la mémoire via les variables d'environnement pour effectuer du heap feng shui et écraser le nom de l'objet service_user, afin d'exécuter notre propre code au lieu de charger une bibliothèque.
Dans le répertoire Patch se trouve un script overflow_simulation_patch.c qui simule le comportement du débordement et le corrige avec du code supplémentaire que nous avons écrit. Étant donné que les développeurs du projet Sudo ont décidé de corriger le flux d'exécution de la vulnérabilité plutôt que le code lui-même, nous présentons une approche différente et montrons comment elle peut être corrigée avec seulement quelques lignes de code.