アップデートポップアップからUbuntuをアップデートしました。Shellshockについては知っているので、すぐにインストールを進めました。今、実行してみると
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
出力が得られません(以前は得られていました)
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
記載の通りCVE-2014-6271 bash の脆弱性 (Shellshock) とは何ですか? また、これを修正するにはどうすればよいですか?
代わりに、今は「hello」だけが表示されます。インストールした更新プログラムによってこれらのエラー メッセージが非表示になっていると考えてよいでしょうか? ソフトウェア センターを確認すると、インストールした更新プログラムが次のとおりであることがわかります。
unity-settings-daemon (14.04.0+14.04.20140414-0ubuntu1, 14.04.0+14.04.20140606-0ubuntu1
aptdaemon-data (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
python-aptdaemon.gtk3widgets (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
bash (4.3-7ubuntu1.3, 4.3-7ubuntu1.4)
python-aptdaemon (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
もっと具体的に言うと、4.3-7ubuntu1.4 は関数定義の試行エラー メッセージを非表示にしますか? 疑って申し訳ありませんが、Google で検索してみましたが、同様の問題は見つかりませんでした。 わかりやすく教えていただけると助かります。 ありがとうございます!
答え1
によるとこのFedora Magazineの投稿:
env x='() { :;}; echo OOPS' bash -c :
これは脆弱なシステムでは「OOPS」と表示されますが、bash にパッチが適用されている場合は何も表示されずに終了します。
これは次の場合に見られる動作です:
- Debian
squeeze
(bash
パッケージ4.1-3+deb6u2
) - CentOS 6.5 (
bash
パッケージ0:4.1.2-15.el6_5.2
) - Arch Linux (
bash
パッケージ4.3.026-1
)
この修正は、このような動作をするように意図されていると推測しますが、何らかの理由で、Ubuntu の初期bash
パッチは、追加のコードを黙って無視するのではなく、エラーを生成しました。
最初のパッチは実際には意図されました環境変数に不正な関数定義が見つかった場合にエラーを生成します。更新されたパッチは、特別なプレフィックスが付いた変数のみを参照するため、現実世界でのリスクはほとんどすべて排除されます。試してみて
env 'BASH_FUNC_x()'='() { :;}; echo OOPS' bash -c :
ください。エラーが表示されるはずです。
私はこれを検証しました:
$ env 'BASH_FUNC_x()'='() { :;}; echo OOPS' bash -c :
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x`
$ bash --version | head -1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
$ apt-cache policy bash | grep Installed
Installed: 4.3-7ubuntu1.4