Plusieurs vulnérabilités locales et distantes ont été découvertes dans le noyau Linux, qui pouvaient permettre un déni de service ou l'exécution de code arbitraire. Le projet « Common Vulnerabilities and Exposures » a identifié les problèmes suivants :
Plusieurs dépassements dans le pilote io_edgeport pouvaient être utilisés pour mener une attaque par déni de service.
Bryan Fulton a signalé un bogue de vérification des limites dans la fonction coda_pioctl, qui pouvait permettre aux utilisateurs locaux d'exécuter du code arbitraire ou de provoquer un déni de service.
Une erreur dans la fonction skb_checksum_help() issue de netfilter permettait de contourner les règles de filtrage des paquets ou de provoquer un déni de service.
Tim Yamin a découvert que les entrées n'étaient pas correctement vérifiées par le pilote zisofs destiné aux systèmes de fichiers ISO compressés, ce qui permettait des attaques par déni de service en utilisant des images ISO malveillantes.
Un dépassement de tampon dans la fonction sendmsg() permettait aux utilisateurs locaux d'exécuter du code arbitraire.
Herbert Xu a découvert que la fonction setsockopt() n'était pas restreinte aux utilisateurs et processus avec le droit CAP_NET_ADMIN, ce qui permettait à des attaquants de manipuler les politiques IPSEC et de mener des attaques par déni de service.
Al Viro a découvert une condition de concurrence dans la gestion via /proc des périphériques de réseau. Un attaquant local pouvait exploiter une référence bancale après l'arrêt de l'interface, afin de provoquer un déni de service et peut-être d'exécuter du code dans l'espace noyau.
Jan Blunck a découvert que des lectures répétées en échec de /proc/scsi/sg/devices provoquaient des fuites de mémoire, permettant une attaque par déni de service.
Tetsuo Handa a découvert que la fonction udp_v6_get_port() du code IPv6 pouvait être entraînée dans une boucle sans fin, permettant une attaque par déni de service.
Vasiliy Averin a découvert que les compteurs de référence des fonctions sockfd_put() et fput() pouvaient être amenés à se chevaucher, ce qui permettait une attaque par déni de service en utilisant un déférencement de pointeur nul.
Eric Dumazet a découvert que l'appel système set_mempolicy() acceptait une valeur négative pour premier paramètre, déclenchant une réponse BUG(). Ceci permettait une attaque par déni de service.
Harald Welte a découvert que si un processus délivrait une requête URB (« USB Request Block ») à un périphérique et terminait avant la fin de l'URB, un pointeur bancal serait déréférencé. Ceci pouvait être utilisé pour provoquer un déni de service.
Pavel Roskin a découvert que le pilote des cartes sans-fils Orinoco ne nettoyait pas ses tampons correctement. Ceci pouvait mener à la fuite d'informations sensibles vers l'espace utilisateur.
Robert Derr a découvert que le sous-système d'audit utilisait une fonction incorrecte pour libérer la mémoire, ce qui permettait une attaque par déni de service.
Rudolf Polzer a découvert que le noyau ne restreignait pas correctement l'accès à l'ioctl KDSKBSENT, ce qui pouvait peut-être permettre l'usurpation de droits.
Doug Chapman a découvert que l'appel système mq_open pouvait être amené à décrémenter deux fois un compteur interne, ce qui permettait de provoquer un déni de service par un arrêt inopiné du noyau (« kernel panic »).
Doug Chapman a découvert que passer un masque à 0 comme paramètre de l'appel système set_mempolicy() provoquait un arrêt inopiné du noyau (« kernel panic »), ce qui permettait une attaque par déni de service.
Le code de ptrace qui utilise CLONE_THREAD n'utilisait pas l'identifiant de groupe du processus léger pour déterminer si l'appelant est attaché ou pas à lui-même. Ceci permettait une attaque par déni de service.
La fonctionnalité de nettoyage automatique des processus fils incluait des processus tracés avec ptrace(), ce qui permettait un déni de service en utilisant des références bancales.
Yen Zheng a découvert que le code pour le champ d'étiquette de flux ( flow label ) dans IPv6 ne modifiait pas la bonne variable, ce qui pouvait provoquer la corruption de la mémoire et un déni de service.
Il a été découvert qu'un processus temps réel utilisant des processus légers pouvait être mis dans une situation d'interblocage, en lui envoyant le signal SIGKILL pendant qu'il sauvegardait son état mémoire (« core dump »). Cela permettait une attaque par déni de service.
Ollie Wild a découvert une fuite mémoire dans la fonction icmp_push_reply(), qui permettait de provoquer un déni de service par la consommation de mémoire.
Chris Wright a découvert que l'allocation excessive de verrous dans la couche VFS pouvait épuiser la mémoire et remplir entièrement le système de journalisation. ce qui permettait une attaque par déni de service.
Patrick McHardy a découvert une fuite mémoire dans la fonction ip6_input_finish() du code IPv6, qui permettait une attaque par déni de service.
Karl Janmar a découvert que l'erreur due à un mélange de variables de types signés et non signés dans le code de procfs pouvait être exploité pour lire la mémoire du noyau, ce qui pouvait mener à la divulgation d'informations sensibles.
Yi Ying a découvert que sysctl n'appliquait pas correctement la taille d'un tampon, ce qui permettait une attaque par déni de service.
Stefan Rompf a découvert que dm_crypt ne nettoyait pas une structure interne avant de la libérer, ce qui pouvait mener à la divulgation d'informations sensibles.
Les vérifications des droits effectuées par le pilote SDLA lors d'une mise à jour de microcode étaient insuffisantes.
Ludovic Courtes a découvert que get_compat_timespec() ne vérifiait pas correctement les entrées, ce qui permettait une attaque locale par déni de service.
La fonction ptrace() sur l'architecture ia64 permettait une attaque locale de déni de service si le noyau était préemptif.
Le tableau suivant explique pour chaque architecture quelle version contient la correction :
| Debian 3.1 (Sarge) | |
|---|---|
| Source | 2.6.8-16sarge2 |
| architecture Alpha | 2.6.8-16sarge2 |
| architecture AMD64 | 2.6.8-16sarge2 |
| architecture HP Precision | 2.6.8-6sarge2 |
| architecture Intel IA-32 | 2.6.8-16sarge2 |
| architecture Intel IA-64 | 2.6.8-14sarge2 |
| architecture Motorola 680x0 | 2.6.8-4sarge2 |
| architecture PowerPC | 2.6.8-12sarge2 |
| architecture IBM S/390 | 2.6.8-5sarge2 |
| architecture Sun Sparc | 2.6.8-15sarge2 |
Le tableau suivant liste les paquets supplémentaires qui ont été reconstruits à des fins de compatibilité ou pour tirer parti de cette mise à jour :
| Debian 3.1 (Sarge) | |
|---|---|
| kernel-latest-2.6-alpha | 101sarge1 |
| kernel-latest-2.6-amd64 | 103sarge1 |
| kernel-latest-2.6-hppa | 2.6.8-1sarge1 |
| kernel-latest-2.6-sparc | 101sarge1 |
| kernel-latest-2.6-i386 | 101sarge1 |
| kernel-latest-powerpc | 102sarge1 |
| fai-kernels | 1.9.1sarge1 |
| hostap-modules-i386 | 0.3.7-1sarge1 |
| mol-modules-2.6.8 | 0.9.70+2.6.8+12sarge1 |
| ndiswrapper-modules-i386 | 1.1-2sarge1 |
Nous vous recommandons de mettre à jour votre paquet de noyau immédiatement et de réamorcer la machine. Si vous avez construit une noyau personnalisé en utilisant le paquet des sources du noyau, vous devez le reconstruire pour tirer parti de ces corrections.
Cette mise à jour introduit une changement dans l'interface binaire du noyau, qui a nécessité la reconstruction des paquets pour noyaux affectés. Si vous utilisez des ajouts sous forme de rustines, vous devrez également les reconstruire. Enfin, en raison d'un changement dans le nom des paquets, vous devez utiliser apt-get dist-upgrade pour mettre à niveau votre système.
Les sommes MD5 des fichiers indiqués sont disponibles sur la page originale de l'alerte de sécurité.