Risques
- Déni de service à distance
- Exécution de code arbitraire à distance
Systèmes affectés
- Amazon FreeRTOS version 10.4.1
- Apache Nuttx OS version 9.1.0
- ARM CMSIS-RTOS2 versions antérieures à 2.1.3
- ARM Mbed OS version 6.3.0
- ARM mbed-ualloc version 1.3.0
- BlackBerry QNX OS for Medical versions antérieures à 1.1.1
- BlackBerry QNX OS for Safety versions antérieures à 1.0.2
- BlackBerry QNX SDP versions antérieures à 6.5.0SP1 sans le dernier correctif
- Cesanta Software Mongoose OS version 2.17.0
- eCosCentric eCosPro RTOS versions 2.0.1 à 4.5.3
- Google Cloud IoT Device SDK version 1.0.2
- Linux Zephyr RTOS versions antérieures à 2.5.0
- Media Tek LinkIt SDK versions antérieures à 4.6.1
- Micrium OS, versions antérieures à 5.10.1
- Micrium uC/OS: uC/LIB versions antérieures à 1.39.00
- NXP MCUXpresso SDK versions antérieures à 2.8.2
- NXP MQX versions antérieures à 5.1
- Redhat newlib versions antérieures à 4.0.0
- RIOT OS version 2020.01.1
- Samsung Tizen RT RTOS versions antérieures à 3.0.GBB
- TencentOS-tiny, version 3.1.0
- Texas Instruments CC32XX versions antérieures à 4.40.00.07
- Texas Instruments SimpleLink MSP432E4XX
- Texas Instruments SimpleLink-CC13XX versions antérieures à 4.40.00
- Texas Instruments SimpleLink-CC26XX versions antérieures à 4.40.00
- Texas Instruments SimpleLink-CC32XX versions antérieures à 4.10.03
- Uclibc-NG versions antérieures à 1.0.36
- Windriver VxWorks versions antérieures à 7.0
- Zephyr Project RTOS versions antérieures à 2.5
Résumé
De multiples vulnérabilités ont été découvertes dans les systèmes d'exploitation temps réel (RTOS, Real Time OS). Elles permettent à un attaquant de provoquer une exécution de code arbitraire à distance et un déni de service à distance.
Cette famille de vulnérabilités dans les RTOS a été découverte, décrite puis nommée « BadAlloc » par Microsoft, appellation donnée en raison de l’absence de vérification des entrées dans l’allocateur mémoire de tas. Ces vulnérabilités d'exécution de code à distance (RCE) sont référencées par 26 CVEs et affectent potentiellement un large éventail de domaines, de l'IoT grand public et médical à l'IoT industriel, aux technologies opérationnelles (OT) et aux systèmes de contrôle industriel. Une dizaine d’éditeurs sont concernés.
Solution
- Les intégrateurs de ces RTOS sont invités à prendre contact rapidement avec l’éditeur du produit affecté afin de corriger leurs propres solutions et diffuser le correctif ;
- Les utilisateurs d’équipements basés sur ces RTOS sont invités à prendre contact avec le fournisseur afin de mettre à jour les équipements affectés ;
-
Il convient en outre d’appliquer les bonnes pratiques référencées
dans le guide ANSSI [1] et notamment celles ci-après.
- S’assurer que les appareils concernés ne sont pas accessibles depuis Internet.
- S’assurer que les systèmes ne se connectent qu'à des réseaux ou sous-réseaux isolés de confiance. Adopter une démarche de défense en profondeur permet de se protéger contre des menaces qui ne sont pas encore connues, de diminuer le périmètre sur lequel une menace est exercée ou d’en atténuer l’impact. Le simple cloisonnement des réseaux par des pare-feux ne suffit pas. D’autres mécanismes doivent l’accompagner et à différents niveaux (contrôle d’accès physique, durcissement des configurations, protection antivirale...).
- Inclure des mécanismes de détection et de surveillance des installations. Surveiller de façon permanente les appareils à la recherche de comportements anormaux ou non autorisés tels que la communication avec des hôtes locaux ou distants inconnus. Enfin la collecte des informations au travers des journaux d’alarmes et d’événements est indispensable aux analyses ultérieures. Ces journaux pourront dans certains cas apporter des éléments utiles et des preuves dans le cadre d’une enquête judiciaire.
- Réduire la surface d'attaque en éliminant les services sans utilité fonctionnelle ou non sécurisés.
[1] Guide de l'ANSSI sur la sécurité industrielle : https://www.ssi.gouv.fr/uploads/IMG/pdf/Guide_securite_industrielle_Version_finale.pdf
Documentation
- Bulletin de sécurité Apache Nuttx OS du 21 juin 2021 https://lists.apache.org/thread.html/r806fccf8b003ae812d807c6c7d97950d44ed29b2713418cbe3f2bddd%40%3Cdev.nuttx.apache.org%3E
- Bulletin de sécurité ARM CMSIS RTOS2 du 24 juin 2021 https://www.keil.com/pack/doc/CMSIS/RTOS2/html/rtos_revisionHistory.html
- Bulletin de sécurité ARM mbed du 22 mars 2021 https://github.com/ARMmbed/mbed-os/pull/14408
- Bulletin de sécurité BlackBerry du 17 août 2021 https://support.blackberry.com/kb/articleDetail?articleNumber=000082334&language=en_US
- Bulletin de sécurité eCosCentric eCosPro RTOS 1002437 du 16 août 2021 https://bugzilla.ecoscentric.com/show_bug.cgi?id=1002437
- Bulletin de sécurité FreeRTOS du 07 décembre 2020 https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/224
- Bulletin de sécurité Google Cloud IoT Device du 12 avril 2021 https://github.com/GoogleCloudPlatform/iot-device-sdk-embedded-c/pull/119/files
- Bulletin de sécurité RedHat newlib du 17 novembre 2020 https://sourceware.org/git/?p=newlib-cygwin.git;a=commit;h=aa106b29a6a8a1b0df9e334704292cbc32f2d44e
- Bulletin de sécurité Texas Instruments TI-PSIRT-2020-100074 du 29 avril 2021 https://www.ti.com/lit/an/swra709/swra709.pdf?ts=1629129702198
- Bulletin de sécurité Wind River VxWorks 20210203 du 03 février 2021 https://support2.windriver.com/index.php?page=cve&on=view&id=CVE-2020-28895
- Bulletin de sécurité Wind River VxWorks 20210319 du 19 mars 2021 https://support2.windriver.com/index.php?page=security-notices&on=view&id=7048
- Bulletin de sécurité Zephyr Project RTOS du 23 mars 2021 https://github.com/zephyrproject-rtos/zephyr/pull/31796
- Bulletin de sécurité BadAlloc icsa-21-119-04 du 20 mai 2021, mis à jour le 17 août 2021 https://us-cert.cisa.gov/ics/advisories/icsa-21-119-04
- Référence CVE CVE-2020-13603 https://www.cve.org/CVERecord?id=CVE-2020-13603
- Référence CVE CVE-2020-28895 https://www.cve.org/CVERecord?id=CVE-2020-28895
- Référence CVE CVE-2020-35198 https://www.cve.org/CVERecord?id=CVE-2020-35198
- Référence CVE CVE-2021-22156 https://www.cve.org/CVERecord?id=CVE-2021-22156
- Référence CVE CVE-2021-22636 https://www.cve.org/CVERecord?id=CVE-2021-22636
- Référence CVE CVE-2021-22680 https://www.cve.org/CVERecord?id=CVE-2021-22680
- Référence CVE CVE-2021-22684 https://www.cve.org/CVERecord?id=CVE-2021-22684
- Référence CVE CVE-2021-26461 https://www.cve.org/CVERecord?id=CVE-2021-26461
- Référence CVE CVE-2021-26706 https://www.cve.org/CVERecord?id=CVE-2021-26706
- Référence CVE CVE-2021-27411 https://www.cve.org/CVERecord?id=CVE-2021-27411
- Référence CVE CVE-2021-27417 https://www.cve.org/CVERecord?id=CVE-2021-27417
- Référence CVE CVE-2021-27419 https://www.cve.org/CVERecord?id=CVE-2021-27419
- Référence CVE CVE-2021-27421 https://www.cve.org/CVERecord?id=CVE-2021-27421
- Référence CVE CVE-2021-27425 https://www.cve.org/CVERecord?id=CVE-2021-27425
- Référence CVE CVE-2021-27427 https://www.cve.org/CVERecord?id=CVE-2021-27427
- Référence CVE CVE-2021-27429 https://www.cve.org/CVERecord?id=CVE-2021-27429
- Référence CVE CVE-2021-27431 https://www.cve.org/CVERecord?id=CVE-2021-27431
- Référence CVE CVE-2021-27433 https://www.cve.org/CVERecord?id=CVE-2021-27433
- Référence CVE CVE-2021-27435 https://www.cve.org/CVERecord?id=CVE-2021-27435
- Référence CVE CVE-2021-27439 https://www.cve.org/CVERecord?id=CVE-2021-27439
- Référence CVE CVE-2021-27502 https://www.cve.org/CVERecord?id=CVE-2021-27502
- Référence CVE CVE-2021-27504 https://www.cve.org/CVERecord?id=CVE-2021-27504
- Référence CVE CVE-2021-30636 https://www.cve.org/CVERecord?id=CVE-2021-30636
- Référence CVE CVE-2021-31571 https://www.cve.org/CVERecord?id=CVE-2021-31571
- Référence CVE CVE-2021-31572 https://www.cve.org/CVERecord?id=CVE-2021-31572
- Référence CVE CVE-2021-3420 https://www.cve.org/CVERecord?id=CVE-2021-3420