
Esto contiene el Dockerfile para construir y reproducir shellshock
CVSS 10.0. Bash analiza incorrectamente comandos posteriores a una definición de función almacenada en una variable de entorno, ejecutándolos durante la inicialización del shell.
Las variables de entorno de Bash pueden codificar definiciones de funciones: x='() { :; }' Cuando bash importa esto como variable de entorno y se inicializa, analiza el cuerpo de la función, pero no detiene el análisis tras la llave de cierre, ejecutando cualquier texto posterior como un comando.
docker build -t shellshock-poc .
docker run --rm -it shellshock-poc env x='() { :;}; echo VULNERABLE' bash -c "echo test"
VULNERABLE test
[Dockerfile parcheado / salida aquí]
Los scripts CGI que llaman a bash con cabeceras controladas por el atacante (p. ej., User-Agent) hacen que esas cabeceras se establezcan como variables de entorno — una variable de entorno controlada por el atacante que llega a la inicialización de bash es la superficie de ataque real, no solo el uso interactivo del shell.
El parche upstream obliga a que el análisis se detenga en la llave de cierre de la definición de la función. CVE-2014-7169 cubre un bypass posterior por un parche incompleto.