The “Bourne” Ultimatum *

Cet article a pour but de résumer brièvement les informations utiles sur la faille ShellShock. Il n’a toutefois pas pour objectif d’être exhaustif (les informations varient encore en fonction des sources et l’état de correction de cette faille, ainsi que des celles qui en découlent n’est pas forcément encore très clair).

Informations générales

Une faille dans le programme BASH (Bourne Again Shell) a été trouvée.
Cette vulnérabilité permet d’injecter du code dans des variables d’environnement. Ainsi, lorsqu’un programme appellera le shell système, ce code sera exécuté.

Le risque est particulièrement présent sur les scripts CGI accessibles en WEB. Les en-têtes HTTP étant passées dans l’environnement (HTTP_USER_AGENT, etc.), cette vulnérabilité pourrait être exploitée si le script appelé contient lui-même du code effectuant un appel système (system(),popen(), backticks “`”, etc.) De plus, la vulnérabilité est présente seulement si /bin/sh est un symlink vers /bin/bash

Considérons l’exemple suivant appellé en CGI et non pas via mod_php:

<?php
system("cat /var/log/auth.log | grep root");
?>;

Bien qu’il n’y ait pas de paramètre, il est possible d’exécuter du code en définissant une en-tête HTTP telle que

test: () { ignored;}; cat /etc/passwd

L’en-tête test sera passée dans l’environnement du shell appelé par la commande system().

Cette faille peut être testée avec la commande:

$ env var='() { ignore this;}; echo vulnerable' bash -c /bin/true

Cependant, ce premier patch est incomplet. Il est donc toujours possible d’exploiter cette faille avec la commande suivante :

$ env var='() {(a)=>' bash -c "echo date"; cat echo
bash: var: line 1: syntax error near unexpected token `='
bash: var: line 1: `'
bash: error importing function definition for `var'
Fri Sep 26 15:22:39 CEST 2014

Si la date s’affiche, la vulnérabilité est toujours présente.

Normalement, la plupart des distributions Linux ont publié des correctifs, y compris pour la deuxième faille.

Aussi, les distributions Debian et Ubuntu ne sont pas vulnérable dans une configuration par défaut car /bin/sh est un symlink vers /bin/dash.

Fortinet

La société Fortinet a publié une liste des produits affectés par cette vulnérabilité : http://www.fortiguard.com/advisory/FG-IR-14-030/

– FortiAnalyzer (versions 5.0.X and 5.2.0) – authentication required to exploit
– FortiAuthenticator – authentication required to exploit
– FortiDB
– FortiManager (versions 4.3, 5.0.X and 5.2.0) – authentication required to exploit
– AscenLink v7.X

Il est toutefois à noter que les équipements FortiGate ne sont pas affectés. Pour les équipements concernés, un correctif sera publié par Fortinet dès que possible.

De plus, une signature IPS (“Bash.Function.Definitions.Remote.Code.Execution“) est d’ores et déjà disponible et peut être appliquée sur le FortiGate dans le but de protéger les systèmes se trouvant derrière celui-ci.

SEPPMail

La société SEPPMail a confirmé que ses équipements n’étaient pas vulnérables à cette faille.

* https://twitter.com/markstanislav/status/514811987759755265