Risque(s)
- Exécution de code arbitraire à distance
- Déni de service à distance
- Contournement de la politique de sécurité
- Atteinte à l’intégrité des données
Systèmes affectés
- Tianocore EDKII sans les derniers correctifs de sécurité
- Les microgiciels UEFI des constructeurs
Résumé
De multiples vulnérabilités ont été découvertes dans la pile réseau du projet EDK II de la fondation Tianocore, largement utilisée par les constructeurs d’ordinateurs comme socle de développement pour leur micrologiciel UEFI.
EDK II est une implémentation open-source des spécifications UEFI (Unified Extensible Firmware Interface) et PI (Platform Initialisation). Remplaçant du BIOS (bien que ce terme soit encore utilisé par abus de langage), il est responsable du démarrage de l’ordinateur, y compris des phases de sélection, vérification et chargement du système d’exploitation, qui sont critiques pour l’intégrité de l’ordinateur. Une partie du code UEFI reste également présente en mémoire après le démarrage du système d’exploitation, avec un haut niveau de privilèges, pour permettre l’accès à certaines fonctionnalités matérielles (par exemple la mise en veille).
Les vulnérabilités affectent la pile de protocoles réseau IP implémentée par EDK II dans le module NetworkPkg. Ce module fournit une bibliothèque utilisée par certaines fonctionnalités du code UEFI nécessitant l’accès au réseau, telles que l’amorçage PXE (Preboot Execution Environment). PXE permet au micrologiciel de configurer une interface réseau (via DHCP) puis de contacter un serveur dans le but de télécharger le système d’exploitation à amorcer. Il est important de noter que l’UEFI de certains constructeurs peut accéder au réseau pour des raison autres que l’amorçage PXE – par exemple pour des fonctionnalités de restauration, d’identification ou d’administration à distance du système.
Au total, 9 vulnérabilités ont été découvertes, permettant l’exécution de code arbitraire à distance et l’injection de trafic dans des sessions TCP.
Les 7 premières vulnérabilités affectent l’implémentation des protocoles IPv6 (en particulier la gestion des en-têtes IPv6), Neighbour Discovery et DHCPv6. Ces vulnérabilités permettent à un attaquant de provoquer une exécution de code arbitraire au niveau UEFI (corruption de l’intégrité de la chaîne de démarrage, y compris lorsque Secure Boot est activé) ou au minimum un déni de service (blocage avant le chargement du système d’exploitation). Ces vulnérabilités nécessitent que l’attaquant ait un accès au réseau local. Cependant, si l’interface réseau utilisée par l’UEFI est accessible depuis un réseau non sûr (réseau bureautique, etc.), certaines vulnérabilités peuvent être exploitées à distance, notamment celles impliquant le décodage d’options dans les en-têtes IPv6.
Les 2 dernières vulnérabilités affectent la génération de nombres pseudo-aléatoires utilisés pour IP et TCP (génération des numéros de séquence). Celles-ci pourraient permettre à un attaquant d’altérer le trafic réseau ou d’injecter des paquets arbitraires à distance. Cependant, les conséquences pratiques ne sont pas établies à ce stade.
Le code d’EDK II est utilisé ou intégré de façon diverse par les différents éditeurs de code UEFI (souvent dénommé BIOS par abus de langage), qui fournissent à leur tour leur solution aux différents fabricants d’ordinateurs. L’impact de ces vulnérabilités dépend donc fortement des modalités d’utilisation d’EDK II et de sa pile IP par les différents fabricants, ainsi que de la configuration des équipements.
Solution
Le CERT-FR recommande donc :
- D’appliquer les mises à jour du code UEFI lorsqu’elles seront fournies par le fabricant ;
- De limiter l’utilisation du réseau par le code UEFI s’il n’est pas absolument nécessaire :
- Soit en désactivant totalement le support de la pile réseau UEFI (a minima pour la version IPv6), lorsque le menu de configuration du BIOS le permet,
- Soit en désactivant PXE dans la configuration UEFI,
- ou à défaut en déclarant PXE comme dernière option pour le démarrage de l’ordinateur ;
- De mettre en place une authentification par mot de passe pour toute modification de la configuration UEFI, et en particulier pour l’activation de PXE ou le choix de l’ordre de démarrage ;
- De sécuriser le réseau utilisé par PXE afin de prévenir ou détecter l’injection de trafic malveillant sur les sous-réseaux utilisés lors du démarrage des ordinateurs, notamment en isolant les clients PXE les uns des autres à l’aide du mode VLAN privé (private VLAN) lorsque cela est possible ;
- De sécuriser le serveur jouant le rôle de point de distribution PXE des images de systèmes d’exploitation ;
- De lister explicitement les certificats autorisés pour le démarrage si le mode de démarrage HTTPS (HTTPS boot) est disponible et activé.
Par ailleurs, le CERT-FR recommande d’appliquer les bonnes pratiques suivantes :
- Activer le Secure Boot notamment pour pouvoir vérifier l’intégrité des images chargées, restreindre les certificats autorisés aux seuls certificats utilisés et ajouter à la base de révocation DBX les images connues pour leur vulnérabilité ;
- Gérer l’obsolescence du parc et assurer la mise à jour régulière du code UEFI déployé sur le parc ;
- Activer la fonctionnalité « d’anti-rollback » des mises à jour du code UEFI lorsque cela est possible ;
- Sécuriser les réseaux qui sont utilisés, notamment en dédiant et en cloisonnant (physiquement ou, à défaut, logiquement) le réseau de production, celui utilisé pour l’amorçage distant, type PXE, et celui utilisé pour l’administration distante, type BMC.
Documentation
- Bulletin de Tianocore GHSA-hc6x-cw6p-gj7h du 16 janvier 2024
https://github.com/tianocore/edk2/security/advisories/GHSA-hc6x-cw6p-gj7h - Bulletin de CERT/CC du 16 janvier 2024
https://kb.cert.org/vuls/id/132380 - Référence CVE CVE-2023-45229
https://www.cve.org/CVERecord?id=CVE-2023-45229 - Référence CVE CVE-2023-45230
https://www.cve.org/CVERecord?id=CVE-2023-45230 - Référence CVE CVE-2023-45231
https://www.cve.org/CVERecord?id=CVE-2023-45231 - Référence CVE CVE-2023-45232
https://www.cve.org/CVERecord?id=CVE-2023-45232 - Référence CVE CVE-2023-45233
https://www.cve.org/CVERecord?id=CVE-2023-45233 - Référence CVE CVE-2023-45234
https://www.cve.org/CVERecord?id=CVE-2023-45234 - Référence CVE CVE-2023-45235
https://www.cve.org/CVERecord?id=CVE-2023-45235 - Référence CVE CVE-2023-45236
https://www.cve.org/CVERecord?id=CVE-2023-45236 - Référence CVE CVE-2023-45237
https://www.cve.org/CVERecord?id=CVE-2023-45237
Rappel des avis émis
Dans la période du 08 au 14 janvier 2024, le CERT-FR a émis les publications suivantes :
- CERTFR-2024-ALE-001 : [MàJ] Multiples vulnérabilités dans Ivanti Connect Secure et Policy Secure Gateways
- CERTFR-2024-ALE-002 : [MàJ] Multiples Vulnérabilités dans GitLab
- CERTFR-2024-AVI-0011 : Multiples vulnérabilités dans les produits Qnap
- CERTFR-2024-AVI-0012 : Multiples vulnérabilités dans Microsoft Edge
- CERTFR-2024-AVI-0013 : [SCADA] Multiples vulnérabilités dans les produits Schneider Electric
- CERTFR-2024-AVI-0014 : [SCADA] Multiples vulnérabilités dans les produits Siemens
- CERTFR-2024-AVI-0015 : Multiples vulnérabilités dans les produits Splunk
- CERTFR-2024-AVI-0016 : Multiples vulnérabilités dans les produits Trend Micro
- CERTFR-2024-AVI-0017 : Multiples vulnérabilités dans les produits Intel
- CERTFR-2024-AVI-0018 : Multiples vulnérabilités dans les produits SAP
- CERTFR-2024-AVI-0019 : Multiples vulnérabilités dans les produits Fortinet
- CERTFR-2024-AVI-0020 : Vulnérabilité dans Microsoft Office
- CERTFR-2024-AVI-0021 : Multiples vulnérabilités dans Microsoft Windows
- CERTFR-2024-AVI-0022 : Multiples vulnérabilités dans Microsoft .Net
- CERTFR-2024-AVI-0023 : Vulnérabilité dans Microsoft Azure
- CERTFR-2024-AVI-0024 : Multiples vulnérabilités dans les produits Microsoft
- CERTFR-2024-AVI-0025 : Vulnérabilité dans SPIP
- CERTFR-2024-AVI-0026 : Vulnérabilité dans Cisco Unity Connection
- CERTFR-2024-AVI-0027 : Multiples vulnérabilités dans les produits Juniper Networks
- CERTFR-2024-AVI-0028 : Vulnérabilité dans SPIP
- CERTFR-2024-AVI-0029 : Multiples vulnérabilités dans Microsoft Edge
- CERTFR-2024-AVI-0030 : Multiples vulnérabilités dans GitLab
- CERTFR-2024-AVI-0031 : Multiples vulnérabilités dans les produits IBM
- CERTFR-2024-AVI-0032 : Vulnérabilité dans les produits WithSecure
- CERTFR-2024-AVI-0033 : Multiples vulnérabilités dans le noyau Linux de RedHat
- CERTFR-2024-AVI-0034 : Multiples vulnérabilités dans le noyau Linux d’Ubuntu