Estoy revisando mis sistemas con el siguiente comando:
env X="() { :;} ; echo busted" /bin/sh -c "echo completed"
Lo que me da: "completado", sin "reventado", lo que parece bueno. Así que lo intenté de nuevo con:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
Lo que resulta en:
bash: warning: testbug: ignoring function definition attempt
bash: error importing function definition for 'testbug'
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for 'x'
this is a test
Lo que de nuevo, parece bueno. Sin embargo, cuando corro:
env x='()' ; echo vulnerable; bash -c "echo this is a test"
Obtengo un volcado de todas las variables ambientales, seguido de:
_=/usr/bin/env
x=()
vulnerable
bash: warning: testbug: ignoring function definition attempt
bash: error importing function definition for 'testbug'
this is a test
Ahora estoy preocupado. ¿Debería estar?
EDITAR: Las dos referencias a 'testbug' se deben a una prueba anterior que definió esa variable. Desconecté esa variable y el resto de la salida sigue apareciendo