8 février

Wojciech publie les deux vulnérabilités qu'il a trouvées. La première concerne la fonction vmsplice_to_user() qui déréférence des pointeurs passé par l'utilisateur. La seconde concerne copy_from_user_mmap_sem() qui ne vérifie pas les données passées en argument par l'utilisateur.

Le même jour, Linux 2.6.24.1 est publié : il contient de nombreux correctifs dont deux correctifs pour copy_from_user_mmap_sem() et vmsplice_to_user().

9 février

Le lendemain de la publication, deux exploits démontrant la faille sont publiés sur milw0rm. Rapidement, on constate que Linux 2.6.24.1 est aussi vulnérable. Les versions 2.6.17 à 2.6.24.1 de Linux sont affectées, qu'importe le matériel (processeurs et pilotes utilisés).

11 février

Linux 2.6.24.2 est publié avec un seul correctif pour get_iovec_page_array(). Les failles publiées sont maintenant toutes corrigées comme il faut.

18 février

DistroWatch compare les temps de réaction des distributions Linux pour corriger les failles. Il prend Debian comme référence étant donné que c'était la première. RedHat, Ubuntu et CentOS sont les derniers avec +27 heures par rapport à Debian (3 jours et 27 heures depuis l'annonce de la vulnérabilité).

26 février

Linux 2.6.24.3 est publié avec un correctif pour get_user_pages(). Le message de commit est fort intéressant.

Le vrai problème de toute cette histoire est que la fonction get_user_pages() utilise un nombre signé et ne vérifie pas les débordements d'entier. Le correctif est donc simplissime : un simple ajout de « if (len <= 0) return 0; » au bon endroit. Pourtant, il est suffisant pour éviter tous les exploits vmsplice().

Pour en savoir plus sur les vulnérabilités vmsplice(), lisez l'article the making of a local root exploit.