Le problème se situe dans la gestion du mot de passe requis au sein de la séquence de démarrage du processus permettant de déverrouiller l’accès aux données chiffrées. Pour profiter de cette faille, il suffit donc d'avoir un accès à une console sur la machine. Le script de Cryptsetup a une erreur de conception qui permet à un utilisateur de réessayer le mot de passe plusieurs fois. Bien que ce ne soit pas suffisant pour faciliter une attaque par force brute, cela conduit à un problème plus important.
Une fois qu'un utilisateur a utilisé toutes les tentatives de mot de passe, l’outil va ouvrir un shell (Busybox dans Ubuntu) doté de privilèges root. Pour le faire apparaître, il suffit d’appuyer sur la touche “Entrée” pendant 70 secondes environ lorsque l'invite du mot de passe de déchiffrement du lecteur s'affiche pendant le démarrage du système.
Comme les chercheurs l’expliquent, la faille permet aux attaquants « d’obtenir un shell root initramfs [système de fichiers RAM initial] sur les systèmes affectés. La vulnérabilité est très fiable car elle ne dépend pas de systèmes ou de configurations spécifiques. Les attaquants peuvent copier, modifier ou détruire le disque dur ainsi que configurer le réseau pour exfiltrer les données. Cette vulnérabilité est particulièrement grave dans des environnements tels que les bibliothèques, les guichets automatiques, les machines d'aéroport, les laboratoires, etc., où le processus de démarrage est protégé (mot de passe en BIOS et GRUB) ».
Ils ont précisé que dans un environnement cloud il est également possible d’exploiter cette vulnérabilité à distance.
Pour les chercheurs, « la cause directe de cette vulnérabilité est la vérification incorrecte du nombre maximal de mots de passe, mais le bogue a été (probablement) introduit par l'ajout de nouvelles fonctionnalités (dans ce cas, des fonctions de sécurité). Il est bien connu que “la complexité est le pire ennemi de la sécurité”. Un système avec plus de fonctionnalités nécessite plus de code et a plus d'interactions entre les sous-systèmes, ce qui rend plus difficile de tester les systèmes et donc apporte plus de bogues ».
Quoiqu’il en soit, ils ont d’ores et déjà proposé un correctif qui bloque l’ouverture du shell au démarrage lorsque le nombre maximal de tentatives de mots de passe a été atteint.
Source : blog Hector Marco