Trois ans après la vague de vulnérabilités (, , , , ) dans la sous-système AF_PACKET du noyau Linux , un nouveau problème (), permettant à un utilisateur local non privilégié d’exécuter du code avec des privilèges root ou de sortir des conteneurs isolés, en ayant accès à ceux-ci en tant que root.
Pour créer un socket AF_PACKET et exploiter la vulnérabilité, des privilèges CAP_NET_RAW sont nécessaires. Cependant, ce privilège peut être obtenu par un utilisateur non privilégié dans des conteneurs créés dans des systèmes avec la prise en charge des espaces de noms utilisateur activée. Par exemple, les espaces de noms utilisateur sont activés par défaut dans Ubuntu et Fedora, mais ne le sont pas dans Debian et RHEL. Sur Android, le processus mediaserver a le droit de créer des sockets AF_PACKET, permettant ainsi l'exploitation de la vulnérabilité.
La vulnérabilité réside dans la fonction tpacket_rcv et est causée par une erreur de calcul de la variable netoff. Un attaquant peut créer des conditions dans lesquelles la valeur de netoff sera inférieure à celle de maclen, ce qui entraînera un dépassement de mémoire lors du calcul "macoff = netoff - maclen" et un mauvais réglage ultérieur du pointeur sur le tampon pour les données entrantes. En fin de compte, un attaquant pourrait initier l'écriture de 1 à 10 octets dans la zone hors des limites du tampon alloué. Il est à noter qu'un exploit est en cours de développement pour obtenir des privilèges root dans le système.
Le problème est présent dans le noyau depuis juillet 2008, c'est-à-dire qu'il se manifeste dans tous les noyaux actuels. Un correctif est pour l'instant disponible sous forme de . On peut suivre l'apparition des mises à jour de paquets dans les distributions sur les pages suivantes : , , , , , .
Source : opennet.ru
