
Preuve de concept de suite d'exploits pour les vulnérabilités du chargeur d'amorçage U-Boot, incluant des mécanismes de mise à jour non sécurisés, des identifiants codés en dur, l'accès aux interfaces de débogage et l'absence de protections anti-recul, destinée aux tests de sécurité IoT autorisés.
Cette preuve de concept (PoC) a été créée pour vérifier les vulnérabilités du chargeur d'amorçage U-Boot version 1.1.3 compilé le 27 août 2019. Le code implémente cinq vulnérabilités différentes correspondant aux catégories du guide de test de sécurité IoT OWASP (ISTG).
ATTENTION : Utilisez cette PoC uniquement sur des appareils pour lesquels vous avez l'autorisation de tester. L'utilisation sur des systèmes sans autorisation peut enfreindre les lois applicables.
# Installer les bibliothèques requises
pip install pyserial cryptography
Pour utiliser cette PoC, vous devez vous connecter à l'interface série de l'appareil cible :
/dev/ttyUSB0 sous Linux, COM3 sous Windows)Ce script propose plusieurs modes de fonctionnement pour tester chaque vulnérabilité séparément ou toutes à la fois.
python3 uboot_exploit_poc.py --port /dev/ttyUSB0
Vous pouvez exécuter une exploitation spécifique avec le paramètre --exploit :
# Tester la vulnérabilité « Mécanisme de mise à jour non sécurisé »
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 1
# Tester la vulnérabilité « Valeurs sensibles codées en dur »
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 2
# Tester la vulnérabilité « Accès à l'interface de débogage »
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 3
# Tester la vulnérabilité « Absence de protection contre la rétrogradation du firmware »
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 4
# Tester la vulnérabilité « Absence de canal sécurisé pour les mises à jour »
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 5
# Changer le débit en bauds (par défaut : 115200)
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --baudrate 57600
# Changer le délai d'attente série (par défaut : 1 seconde)
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --timeout 2
Le script créera un répertoire nommé uboot_extracted contenant :
Le fichier full_exploitation_summary.txt fournit un résumé complet de tous les tests de vulnérabilité.
Le chargeur d'amorçage manque de vérification de signature appropriée pour les mises à jour du firmware, permettant l'installation de firmware non autorisé.
Des valeurs sensibles telles que des identifiants et des clés sont codées en dur dans le binaire du chargeur d'amorçage, permettant l'extraction d'informations sensibles.
L'interface de débogage est insuffisamment protégée, permettant l'accès aux contrôles bas niveau du système sans authentification.
Le chargeur d'amorçage manque de mécanismes anti-rollback, permettant des rétrogradations vers des versions présentant des vulnérabilités connues.
Les mises à jour du firmware sont transmises sur des canaux non sécurisés sans chiffrement ni authentification, permettant l'interception et la modification.
Les preuves collectées par cette PoC peuvent être utilisées pour soutenir une soumission CVE. Pour une soumission CVE :
uboot_extractedCet outil est fourni à des fins éducatives et de test de sécurité professionnel uniquement. Les auteurs ne sont pas responsables de toute mauvaise utilisation ou des dommages causés par cet outil. Obtenez toujours une autorisation appropriée avant de tester tout système ou appareil.