Le US-CERT, le centre américain de réponse d'urgence aux menaces sur la sécurité informatique, a révélé mercredi la découverte d'une faille d'une gravité extrême dans Bash (ou Bourne-Again shell). Il s'agit du shell Unix utilisé sur une part importante des systèmes GNU/Linux, et présent également dans Mac OS/X. L'utilitaire créé à la fin des années 1980 par la Free Software Foundation (FSF) facilite la saisie de commandes par l'utilisateur, en proposant un langage simplifié qu'il interprète et traduit vers le langage de l'OS, avec au passage une vérification syntaxique qui permet de prévenir des éventuelles erreurs de saisie.
La faille de Bash détectée par l'US-CERT obtient la note maximale de 10 en terme de gravité et est jugée "peu complexe" à mettre en oeuvre pour qui souhaite l'exploiter. Contrairement à Heartbleed qui permettait "uniquement" d'accéder à une partie des données restées dans une mémoire tampon, le bug de Bash permet d'accéder à l'intégralité des données stockées sur un serveur, et de prendre le contrôle du serveur pour y modifier des données, des fichiers, ou en effacer. En revanche, moins de serveurs sont vulnérables, la faille n'étant exploitable qu'en fonction des configurations. Le problème a été confirmé et détaillé par les équipes de sécurité de Red Hat.
La technique consiste à créer des variables d'environnement dont la valeur est un code malicieux. En exploitant certaines applications installées sur le serveur, qui permettent de transférer des valeurs d'environnement au moment de lancer le shell Bash, le code est lu et exécuté par l'interpréteur. RedHat cite ainsi des exploits possibles en passant par ForceCommand, par un serveur Apache qui utilise mod_cgi ou mod_cgid, par un client DHCP, et plus globalement toute application qui utilise des scripts Bash.
Selon Florian Weiner qui a été le premier à divulguer la faille, le principal vecteur d'attaques par Bash est l'envoi de scripts CGI par des requêtes HTTP.
Une mise à jour de bash a été immédiatement publiée pour interdire que du code exécutable soit mis comme valeur de la variable d'environnement, mais le correctif a été jugé "incomplet" par Tavis Ormandy, chercheur en sécurité :
The bash patch seems incomplete to me, function parsing is still brittle. e.g. $ env X='() { (a)=>' sh -c "echo date"; cat echo
— Tavis Ormandy (@taviso) 24 Septembre 2014
Les éditeurs de distributions Linux ont également publié des conseils particuliers :
- Red Hat: https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-6271
- Novell: http://support.novell.com/security/cve/CVE-2014-6271.html
- Debian: https://www.debian.org/security/2014/dsa-3032
- Ubuntu: http://www.ubuntu.com/usn/usn-2362-1/
- Arch: https://bugs.archlinux.org/task/42102
+ rapide, + pratique, + exclusif
Zéro publicité, fonctions avancées de lecture, articles résumés par l'I.A, contenus exclusifs et plus encore.
Découvrez les nombreux avantages de Numerama+.
Vous avez lu 0 articles sur Numerama ce mois-ci
Tout le monde n'a pas les moyens de payer pour l'information.
C'est pourquoi nous maintenons notre journalisme ouvert à tous.
Mais si vous le pouvez,
voici trois bonnes raisons de soutenir notre travail :
- 1 Numerama+ contribue à offrir une expérience gratuite à tous les lecteurs de Numerama.
- 2 Vous profiterez d'une lecture sans publicité, de nombreuses fonctions avancées de lecture et des contenus exclusifs.
- 3 Aider Numerama dans sa mission : comprendre le présent pour anticiper l'avenir.
Si vous croyez en un web gratuit et à une information de qualité accessible au plus grand nombre, rejoignez Numerama+.
Abonnez-vous à Numerama sur Google News pour ne manquer aucune info !