Une vulnérabilité (CVE-2024-1086) a été identifiée dans Netfilter, un sous-système du noyau Linux utilisé pour le filtrage et la modification des paquets réseau, permettant à un utilisateur local d'exécuter du code au niveau du noyau et d'augmenter ses privilèges dans le système. Ce problème est causé par un double libération de mémoire (double-free) dans le module nf_tables, qui est responsable du filtrage de paquets nftables. Le chercheur en sécurité ayant découvert la vulnérabilité a développé et publié un prototype fonctionnel d'exploit.
Le fonctionnement de l'exploit a été démontré dans les versions actuelles de Debian et Ubuntu avec les noyaux Linux 5.14 — 6.6, ainsi que dans un environnement avec un noyau KernelCTF (Capture the Flag), qui inclut des patchs supplémentaires pour bloquer les méthodes communes d'exploitation et est utilisé par Google dans son programme de récompense pour la découverte de vulnérabilités. Le taux de réussite de l'exploit est évalué à 99,4%. L'article d'accompagnement détaille le processus de création d'un exploit complexe en plusieurs niveaux et le contournement des mécanismes de protection présents dans le noyau.

Le problème est lié à une erreur dans la fonction nft_verdict_init(), qui permet l'utilisation de valeurs positives comme code d'erreur pour le rejet de paquets (DROP) dans les hooks, ce qui peut être utilisé pour déclencher dans la fonction nf_hook_slow() une opération répétée de libération de mémoire pour un tampon, sur lequel la fonction free() a déjà été appelée. Le problème survient lorsque l'opération NF_DROP est générée avec une erreur et que le noyau interprète d'abord NF_DROP, mais libère ensuite le tampon et renvoie le statut NF_ACCEPT. Cette situation entraîne le fait que, malgré la libération du tampon associé au paquet, son traitement ne s'arrête pas et est transmis à un autre gestionnaire qui appelle à son tour la fonction de libération de mémoire une seconde fois.
La vulnérabilité apparaît à partir de la version 3.15 du noyau Linux, mais l'exploit fonctionne avec les noyaux à partir de la version 5.14. Un correctif pour cette vulnérabilité a été proposé dans la version 6.8-rc1 du noyau Linux et a été intégré fin février dans les branches stables 5.15.149, 6.1.76 et 6.6.15. Il est possible de suivre l'application du correctif dans les distributions sur les pages suivantes : Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.
Il convient également de noter une série de vulnérabilités dans le module ksmbd, qui propose une implémentation intégrée dans le noyau Linux d'un service de partage de fichiers. de serveurs Basé sur le protocole SMB : La vulnérabilité CVE-2024-26592 permet d'exécuter du code à distance sans authentification avec des privilèges noyau sur les systèmes avec le module ksmbd activé. Ce problème est causé par une condition de course dans le code de traitement des connexions TCP, qui survient en raison de l'absence de verrouillage approprié lors de la manipulation de l'objet.
La vulnérabilité CVE-2023-52440 permet également d'exécuter du code à distance avec des privilèges noyau, mais elle est causée par un dépassement de tampon lors du traitement de clés de session incorrectes en raison d'un manque de vérification de la taille des données reçues de l'utilisateur avant leur copie dans un tampon de taille fixe.
Les vulnérabilités (1, 2, 3) CVE-2024-26594, CVE-2023-52442 et CVE-2023-52441 dans ksmbd permettent à un attaquant de déterminer à distance le contenu de la mémoire du noyau sans authentification. La vulnérabilité CVE-2024-26594 est due à une vérification incorrecte des données lors du traitement des jetons SMB2 Mech reçus, ce qui entraîne le retour de données situées en dehors de la limite du tampon. La vulnérabilité CVE-2023-52442 est causée par un manque de vérification adéquate des données d'entrée lors du traitement des requêtes en chaîne. La vulnérabilité CVE-2023-52441 est due à l'absence de vérification nécessaire des données d'entrée lors du traitement des requêtes de négociation de connexion SMB2.
Les vulnérabilités CVE-2024-26594 et CVE-2024-26592 ont été corrigées dans le noyau 6.8 et dans des mises à jour correctives des précédentes branches stables 6.1.75, 6.6.14, 6.7.2. Les autres vulnérabilités ont été corrigées dans le noyau 6.5 et dans les mises à jour 5.15.145, 6.1.53, 6.4.16.
En conclusion, il convient de mentionner l'activation de la nouvelle équipe de développeurs du noyau Linux, créée pour analyser la présence de vulnérabilités et évaluer le lien entre les corrections apportées au noyau et les problèmes de sécurité. En février, les développeurs du noyau ont établi leur propre service CNA (CVE Numbering Authority), qui a reçu le pouvoir d'attribuer de manière autonome des identifiants CVE aux vulnérabilités. Avant cela, l'attribution des CVE et l'analyse des liens entre les corrections et les vulnérabilités potentielles incombaient aux développeurs des distributions, et dans le noyau, les vulnérabilités potentielles n'étaient pas mises en évidence et apparaissaient au même niveau que les corrections ordinaires. Les résultats du nouveau service ont dépassé toutes les attentes : quotidiennement, jusqu'à plusieurs dizaines de nouvelles vulnérabilités sont marquées dans le noyau, qui auparavant n'étaient pas signalées comme des problèmes de sécurité. Par exemple, le 26 mars, de nouveaux identifiants CVE ont été attribués à 14 vulnérabilités qui n'avaient auparavant pas été considérées comme des problèmes de sécurité, et le 25 mars, 41 vulnérabilités.
Source : opennet.ru
