Sto controllando i miei sistemi con il seguente comando:
env X="() { :;} ; echo busted" /bin/sh -c "echo completed"
Che mi dà: "completato", senza "busted", che sembra buono. Così ho provato di nuovo con:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
Quale risulta in:
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
Che di nuovo, sembra buono. Tuttavia, quando corro:
env x='()' ; echo vulnerable; bash -c "echo this is a test"
Ho una copia di tutte le vars ambientali, seguita da:
_=/usr/bin/env
x=()
vulnerable
bash: warning: testbug: ignoring function definition attempt
bash: error importing function definition for 'testbug'
this is a test
Ora sono preoccupato. Dovrei essere?
EDIT: i due riferimenti a "testbug" sono dovuti a un test precedente che ha definito tale variabile. Ho disinserito quella variabile e il resto dell'output appare ancora