
Questo contiene il Dockerfile per creare e riprodurre shellshock
CVSS 10.0. Bash interpreta erroneamente i comandi finali dopo una definizione di funzione memorizzata in una variabile d'ambiente, eseguendoli durante l'inizializzazione della shell.
Le variabili d'ambiente di Bash possono codificare definizioni di funzione: x='() { :; }' Quando bash importa questa variabile come variabile d'ambiente e si inizializza, interpreta il corpo della funzione ma non si ferma dopo la parentesi graffa di chiusura, eseguendo come comando qualsiasi testo segua.
docker build -t shellshock-poc .
docker run --rm -it shellshock-poc env x='() { :;}; echo VULNERABLE' bash -c "echo test"
VULNERABLE test
[Dockerfile patchato / output qui]
Gli script CGI che chiamano bash con header controllati dall'attaccante (es. User-Agent) ottengono quegli header impostati come variabili d'ambiente — la variabile d'ambiente controllata dall'attaccante che raggiunge l'inizializzazione di bash è la superficie d'attacco effettiva, non solo l'uso interattivo della shell.
La patch upstream impone che l'interpretazione si fermi alla parentesi graffa di chiusura della definizione di funzione. CVE-2014-7169 copre un bypass successivo dovuto a una correzione incompleta.