Use-after-free dans ll'implémentation du protocole DCCP dans le noyau Linux - CVE-2017-6074

Public Date: February 17, 2017, 20:06
Mis à jour February 8, 2024, 11:53 - Chinese, Simplified Anglais Japanese Korean
Resolved État
Important Impact

Red Hat Product Security a découvert une vulnérabilité dans l'implémentation IPv6 du protocole DCCP du noyau Linux. Cette vulnérabilité s'est vue attribuée CVE-2016-5195. Cette vulnérabilité a été rendue public le 20 février 2017 et a été classifiée Important.

Informations générales

DCCP est une couche de protocole (transport) de niveau 4 qui permet aux programmeurs de contrôler les paramètres de congestion du réseau sur la couche d'application. Ce protocole est routable sur internet car il utilise IP comme couche de protocole (réseau) niveau 3. Pour cette raison, le protocole a été conçu pour fonctionner à la fois sur les systèmes basés IPV4 et IPV6. Cette vulnérabilité utilise explicitement les connexions DCCP basées IPV6.

DCCP utilise une machine à états interne afin de conserver une trace des connexions. Dans le cas qui nous intéresse, la machine à états de DCCP ne gère pas correctement les structures de données DCCP_PKT_REQUEST quand le socket est en état d'écoute LISTEN. Cela permet à un utilisateur local qui peut contrôler le client et le serveur sur le même nœud en réseau de créer une situation «Use After Free». Lorsqu’une connexion est établie, une structure de données appelée skbuff est créée pour chaque connexion. À la suite de skbuff, se trouve une autre structure appelée skb_shared_info, qui contient à son tour une structure ubuf_info . Cette structure contient un pointeur de fonction à appeler quand skb doit être nettoyé. La condition d’erreur, c’est que la fonction de rappel de cette structure ubuf_info était appelée après que la mémoire de la structure skbuff ait été libérée. Cela permettait donc à un attaquant de créer une situation dans laquelle cette mémoire pouvait être remplacée par des instructions malveillantes, exploitant la valeur de pointeur de fonction dans le temps qui s'écoule entre la libération et la seconde utilisation malveillante.

Pour que l'attaque puisse avoir lieu, le client et le serveur doivent tous deux exécuter sur le même système pour que toute référence à la structure sk_shared_info puisse être référencée à nouveau une fois libérée.


Red Hat Product Security a évalué l'impact de sécurité à un niveau Important.

Produits concernés

Les versions de produits Red Hat suivants sont concernées :

  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise MRG 2
  • Red Hat Openshift Online v2
  • Red Hat Virtualization (RHEV-H/RHV-H)
  • RHEL Atomic Host 

Description et impact de l'attaque

Cette faille permet à un attaquant disposant d’un compte sur le système local de pouvoir élever potentiellement les privilèges. Cette classe de faille est communément appelé UAF (de l'anglais Use After Free). Les défauts de cette nature sont généralement exploitées en créant un chemin de code qui accède à la mémoire via un pointeur qui ne référence plus une allocation en cours d'utilisation en raison d’une opération free() venant d'avoir lieu. À ce point précis, il y a alors une la faille dans le code réseau DCCP et il peut être pénétré par un attaquant doté d'un accès suffisant pour initier une connexion de réseau DCCP sur une interface locale. Ces actions de malveillance peuvent aboutir à un plantage du noyau de l’hôte, à une exécution du code dans le contexte du noyau de l'hôte ou à d'autres appropriations de privilèges abusives en modifiant les structures de mémoire du noyau. Un attaquant doit avoir accès à un compte local sur le système ; ce n’est pas une attaque à distance et il faut que le support IPv6 soit activé.

Diagnostiquer votre vulnérabilité


Déterminer si votre système est vulnérable

Utiliser le script de détection ci-dessous afin de déterminer si votre système est concerné par cette vulnérabilité.

Action

On conseille à tous les clients Red Hat utilisant actuellement les versions de noyau affectées de mettre leur noyau à jour le plus rapidement possible dès que les correctifs seront disponibles. Les informations sur les packages concernés, ainsi que les mesures de mitigation recommandées sont notées ci-dessous. Un redémarrage du système s'impose pour que la mise à niveau du noyau puisse avoir lieu.

ProduitPaquetAlerte
Red Hat Enterprise Linux 7noyauRHSA-2017:0000
Red Hat Enterprise Linux 7kernel-rtRHSA-2017:0000
Red Hat Enterprise Linux 7.2 Extended Update Support*noyauen attente
Red Hat Enterprise Linux 7.1 Extended Update Support*noyauen attente
Red Hat Enterprise Linux 6noyauRHSA-2017:0000
Red Hat Enterprise Linux 6.7 Extended Update Support*noyauen attente
Red Hat Enterprise Linux 6.6 Advanced Update Support**noyauen attente
Red Hat Enterprise Linux 6.5 Advanced Update Support**noyauen attente
Red Hat Enterprise Linux 6.2 Advanced Update Support***noyauen attente
Red Hat Enterprise Linux 5noyauRHSA-2017:0000
Red Hat Enterprise Linux 5.9 Advanced Update Support**noyauen attente
Red Hat Enterprise Linux 5.6 Advanced Update Support**noyauen attente
RHEL Atomic Hostnoyauen attente
Red Hat Enterprise MRG 2kernel-rten attente
Red Hat Virtualization (RHEV-H/RHV-H)noyauen attente

Mises à jour des produits concernés

*Un abonnement EUS actif est requis pour pouvoir accéder à ce correctif.

Veuillez contacter  l'équipe de ventes de Red Hat ou votre représentant commercial personnel pour plus d'informations si votre compte n'a pas d'abonnement actif en cours actuellement.

Qu'est- ce qu'un abonnement Red Hat Enterprise Linux Extended Update Support ?

*Un abonnement AUS actif est exigé pour pouvoir accéder à ce correctif dans RHEL AUS.

Mitigation

Le module du noyau DCCP sera chargé automatiquement lorsqu’une application tente d’utiliser le protocole DCCP. On peut empêcher le chargement de ce module en utilisant les règles modprobe à l’échelle du système. La commande suivante, exécutée en tant que root, empêchera tout chargement accidentel ou intentionnel du module. Red Hat Product Security estime que cette méthode est assez robuste pour empêcher le chargement accidentel du module, même par des utilisateurs privilégiés.





# echo "install dccp /bin/true" >> /etc/modprobe.d/disable-dccp.conf 


Le système devra être redémarré si les modules DCCP sont déjà chargés. Dans la plupart des cas, les modules du noyau DCCP ne pourront pas être déchargés s'ils sont en cours d’utilisation ou quand une interface réseau est active.

Pour obtenir de l'aide, consulter l'article KCS ( https://access.redhat.com/solutions/41278 ) ou bien, veuillez contacter le Service de Support technique Global de Red Hat (GSS).

De plus, la stratégie SELinux par défaut ciblée pour les systèmes totalement mis à jour RHEL 6 et 7 pourront mitiger cette vulnérabilité, comme décrit dans les informations de Bugzilla CVE-2017-6074 .















Comments