
これには、shellshockをビルドおよび再現するためのDockerfileが含まれています。
CVSS 10.0。Bash は環境変数に格納された関数定義の後に続くコマンドを不正に解析し、シェル初期化中にそれらを実行します。
Bash の環境変数は関数定義をエンコードできます: x='() { :; }' bash がこれを環境変数としてインポートして初期化するとき、関数本体を解析しますが、閉じ括弧の後に解析を停止せず、続くテキストをコマンドとして実行します。
docker build -t shellshock-poc .
docker run --rm -it shellshock-poc env x='() { :;}; echo VULNERABLE' bash -c "echo test"
VULNERABLE test
[パッチ適用後の Dockerfile / 出力はこちら]
攻撃者が制御するヘッダー(例: User-Agent)を付けて bash を呼び出す CGI スクリプトは、 それらのヘッダーを環境変数として設定します — 攻撃者が制御する環境変数が bash の初期化に到達することが、インタラクティブシェルでの使用だけでなく、実際の攻撃面となります。
上流のパッチは、解析が関数定義の閉じ括弧で停止することを強制します。CVE-2014-7169 は、その後の不完全な修正によるバイパスを対象としています。