Risque(s)
- Exécution de code arbitraire à distance
- Déni de service à 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 SDP versions antérieures à 6.5.0SP1 sans le dernier correctif
- BlackBerry QNX OS for Safety versions antérieures à 1.0.2
- BlackBerry QNX OS for Medical versions antérieures à 1.1.1
- 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é 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 - 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é Apache Nuttx OS du 21 juin 2021
https://lists.apache.org/thread.html/r806fccf8b003ae812d807c6c7d97950d44ed29b2713418cbe3f2bddd%40%3Cdev.nuttx.apache.org%3E - 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é 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é FreeRTOS du 07 décembre 2020
https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/224 - 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é 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é 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é Zephyr Project RTOS du 23 mars 2021
https://github.com/zephyrproject-rtos/zephyr/pull/31796 - Bulletin de sécurité BlackBerry du 17 août 2021
https://support.blackberry.com/kb/articleDetail?articleNumber=000082334&language=en_US - Référence CVE CVE-2021-30636
https://www.cve.org/CVERecord?id=CVE-2021-30636 - 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-27427
https://www.cve.org/CVERecord?id=CVE-2021-27427 - Référence CVE CVE-2021-22684
https://www.cve.org/CVERecord?id=CVE-2021-22684 - Référence CVE CVE-2021-27439
https://www.cve.org/CVERecord?id=CVE-2021-27439 - Référence CVE CVE-2021-27425
https://www.cve.org/CVERecord?id=CVE-2021-27425 - Référence CVE CVE-2021-26461
https://www.cve.org/CVERecord?id=CVE-2021-26461 - Référence CVE CVE-2020-35198
https://www.cve.org/CVERecord?id=CVE-2020-35198 - Référence CVE CVE-2020-28895
https://www.cve.org/CVERecord?id=CVE-2020-28895 - 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-27417
https://www.cve.org/CVERecord?id=CVE-2021-27417 - Référence CVE CVE-2021-3420
https://www.cve.org/CVERecord?id=CVE-2021-3420 - Référence CVE CVE-2021-27421
https://www.cve.org/CVERecord?id=CVE-2021-27421 - Référence CVE CVE-2021-22680
https://www.cve.org/CVERecord?id=CVE-2021-22680 - Référence CVE CVE-2021-27419
https://www.cve.org/CVERecord?id=CVE-2021-27419 - Référence CVE CVE-2021-27429
https://www.cve.org/CVERecord?id=CVE-2021-27429 - Référence CVE CVE-2021-22636
https://www.cve.org/CVERecord?id=CVE-2021-22636 - Référence CVE CVE-2021-27504
https://www.cve.org/CVERecord?id=CVE-2021-27504 - Référence CVE CVE-2021-27502
https://www.cve.org/CVERecord?id=CVE-2021-27502 - Référence CVE CVE-2021-27411
https://www.cve.org/CVERecord?id=CVE-2021-27411 - Référence CVE CVE-2021-26706
https://www.cve.org/CVERecord?id=CVE-2021-26706 - Référence CVE CVE-2020-13603
https://www.cve.org/CVERecord?id=CVE-2020-13603 - Référence CVE CVE-2021-22156
https://www.cve.org/CVERecord?id=CVE-2021-22156