Shell-Shock: rbenv で環境変数に仕込んだコードを実行してみる
rbenv の shebang が /usr/bin/env bash なので ruby 実行するだけで環境変数に仕込んだコマンド実行される
— Kazuhito Hokamura (@hokaccha) 2014, 9月 25
わああと思ったので試してみた。
再現環境
- Mac OSX 10.9.5
- デフォルトシェル /usr/local/bin/zsh
- GNU bash バージョン 4.3.25(1)-release (x86_64-apple-darwin13.4.0)
- (Patched)
再現
$ env x='() { :;}; echo vulnerable' ruby -e "p 'a'" bash: 警告: x: ignoring function definition attempt bash: `x' の関数定義をインポート中にエラーが発生しました bash: 警告: x: ignoring function definition attempt bash: `x' の関数定義をインポート中にエラーが発生しました bash: 警告: x: ignoring function definition attempt bash: `x' の関数定義をインポート中にエラーが発生しました bash: 警告: x: ignoring function definition attempt bash: `x' の関数定義をインポート中にエラーが発生しました bash: 警告: x: ignoring function definition attempt bash: `x' の関数定義をインポート中にエラーが発生しました bash: 警告: x: ignoring function definition attempt bash: `x' の関数定義をインポート中にエラーが発生しました bash: 警告: x: ignoring function definition attempt bash: `x' の関数定義をインポート中にエラーが発生しました bash: 警告: x: ignoring function definition attempt bash: `x' の関数定義をインポート中にエラーが発生しました bash: 警告: x: ignoring function definition attempt bash: `x' の関数定義をインポート中にエラーが発生しました bash: 警告: x: ignoring function definition attempt bash: `x' の関数定義をインポート中にエラーが発生しました "a"
わああ。
未検証ですが、パッチが当たっていない bash の場合は、
$ env x='() { :;}; echo vulnerable' ruby -e "p 'a'" vulnerable vulnerable vulnerable vulnerable vulnerable vulnerable vulnerable vulnerable vulnerable vulnerable "a"
となるかと思います。
Shell-Shock の概要を知るにはこちらの解説が網羅的、かつわかりやすかったです。
--