
Ceci contient le Dockerfile pour construire et reproduire shellshock.
CVSS 10.0. Bash analyse incorrectement les commandes qui suivent une définition de fonction stockée dans une variable d'environnement, et les exécute lors de l'initialisation du shell.
Les variables d'environnement de Bash peuvent encoder des définitions de fonctions : x='() { :; }' Lorsque bash importe cette variable d'environnement et s'initialise, il analyse le corps de la fonction mais omet de s'arrêter après l'accolade fermante, exécutant tout texte qui suit comme commande.
docker build -t shellshock-poc .
docker run --rm -it shellshock-poc env x='() { :;}; echo VULNERABLE' bash -c "echo test"
VULNERABLE test
[Dockerfile corrigé / sortie ici]
Les scripts CGI appelant bash avec des en-têtes contrôlés par l'attaquant (p. ex. User-Agent) voient ces en-têtes définis comme variables d'environnement — une variable d'environnement contrôlée par l'attaquant atteignant l'initialisation de bash constitue la véritable surface d'attaque, pas seulement l'utilisation interactive du shell.
Le correctif en amont impose que l'analyse s'arrête à l'accolade fermante de la définition de fonction. CVE-2014-7169 couvre un contournement ultérieur d'un correctif incomplet.