Vulnérabilité au sein du noyau Linux

Date de publication :

CVE-2021-3609 [Score CVSS v3 : 7.0]
Une vulnérabilité au sein de l’implémentation du protocole réseau CAN BCM au sein du noyau Linux. Cette faille est due à une situation de concurrence dans le fichier net/can/bcm.c permettant une élévation des privilèges jusqu'à root.

Le protocole réseau CAN BCM permet d'enregistrer un récepteur de messages CAN pour une socket spécifiée. La fonction bcm_rx_handler() est exécutée pour les messages CAN entrants. Simultanément à l'exécution de cette fonction, le socket peut être fermé et la fonction bcm_release() sera appelée. Dans la fonction bcm_release(), les structures bcm_op et struct bcm_sock sont libérées alors que bcm_rx_handler() est toujours en cours d'exécution, ce qui conduit finalement à de multiples cas de use-after-free exploitable par un attaquant local et authentifié.

Informations

La faille est activement exploitée :

Un correctif existe :

Une mesure de contournement existe :

Risques

Risques

  • Elévation de privilèges

Criticité

  • Score CVSS v3 : 7.0

Existence d’un code d’exploitation

  • Un code d'exploitation fonctionnel est disponible ici : 

https://github.com/nrb547/kernel-exploitation/blob/main/cve-2021-3609/cve-2021-3609.md

Composants vulnérables

  •  Noyau Linux version 2.6.25 jusqu’à 5.13-rc6.

CVE

Solutions ou recommandations

Mise en place de correctifs de sécurité

  • Mettre à jour le noyau Linux vers la version 5.13-rc7 ou ultérieure.

Solution de contournement

Il est possible de désactiver le module CAN :

  • # echo "install can-bcm /bin/true" >> /etc/modprobe.d/disable-can-bcm.conf

Le système devra être redémarré si les modules CAN sont chargés. Dans la plupart des cas, les modules du noyau CAN ne pourront pas être déchargés tant qu'une interface réseau est active et que le protocole est utilisé.