2014-10-10

bash の脆弱性 "Shellshock" への対策

を Mac ちゃんにするのを忘れてました(汗)

最近使っていなかったのも原因ですが、そんなの理由になりませんよね。
Wikipedia を読んでみたら、脆弱性は1992年から眠っていたとか。

アップデートがリリースされているので、適用した。
OS X bash Update 1.0 – OS X Mavericks

Shellshock 祭り(?)の発端となったバグ CVE-2014-6271 の脆弱性を確認するコマンド。"vulnerable" の文字が表示された場合には脆弱性あり。
env x='() { :;}; echo vulnerable' bash -c 'echo test'

● 脆弱性あり

● 対策済み


ただ、これ以外にも5件、合わせて6件の脆弱性が9月27日までに発見されている。字句解析コードにバグがあったことが原因。
  • CVE-2014-6271 (事の発端となった上記の脆弱性)
  • CVE-2014-7169
  • CVE-2014-7186
  • CVE-2014-7187
  • CVE-2014-6277
  • CVE-2014-6278


テストコードは次の通り。
(OS X の方はアップデートしてしまったので) 仮想マシン上で放置されていた bash 4.3.11 on Ubuntu 14.04 で試してみた結果も合わせて記録しておいた。

● CVE-2014-6271 (再掲)

任意のコード "echo CVE-2014-6271" が実行されてしまう。
$ env x='() { :;}; echo CVE-2014-6271' bash -c 'echo test'

● CVE-2014-7169

任意のコード "echo CVE-2014-7169" が実行されてしまう。(CVE-2014-6271 の修正漏れだそうな。)
下記コマンド実行後に、"cat echo" とコマンドを打つと、"echo CVE-2014-7169" が実行される。
$ env x='() { (a)=>\' bash -c "echo echo CVE-2014-7169"; cat echo

● CVE-2014-7186

DoS攻撃に利用できるらしい。"echo "CVE-2014-7186"" が実行された。"<<EOF" を減らすとエラーが出て、コマンドは実行されない。
$ bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186"

● CVE-2014-7187

これまた。ただ、再現しなかった。
$ (for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187"

● CVE-2014-6277

任意のコードを実行できるらしい。Segmentation fault (core dumped) が発生。断片コードと書かれていたので、これだけでは無理っぽいですが。
$ env x='() { x() { _; }; x() { _; } <<a; }' bash -c :

● CVE-2014-6278

任意のコード "echo CVE-2014-6278" が実行されます。
$ env x='() { _; } >_[$($())] { echo CVE-2014-6278; }' bash -c :


参考:
Shellshock (software bug) - Wikipedia, the free encyclopedia
Bash bug: the other two RCEs, or how we chipped away at the original fix (CVE-2014-6277 and '78)

0 件のコメント :

コメントを投稿