- 更新日: 2014年9月25日
- CentOS & Linux
Bash脆弱性に対してChefでbashをアップデートしてパッチ適用
朝から Bash にえぐい脆弱性があるというニュースが、タイムラインや RSS で流れてきたのでパッチを当てるアップデートの対応を行いました。CentOS では yum check-update でチェックしたところ、Bash のパッチ用アップデートが配布されていた。詳細は以下。
エントリー末尾に追記がありますので、参考にされる場合は追記までお読みください。
使用している Bash が脆弱性を含むか確認
脆弱性のあるパッケージのバージョンが redhat のページに記載されているので、bash のバージョンを確認するなど。
1 2 3 4 |
$ bash --version $ yum info bash |
また、上記 redhat のページを参考にして、脆弱性を含むバージョンの Bash を使用しているかを診断します。SSH で対象サーバーにログイン後、以下のコマンドを実行。
1 2 3 4 5 |
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test" vulnerable this is a test |
上記のように、vulnerable を含む出力となったら脆弱性がある Bash なので、パッチを当てる。
Bash をアップデートする Chef recipe 作成
Chef で bash をアップデートする recipe を書きました。CentOS 用で yum コマンドを使う方法です。
site-cookbooks/base_cookbook/recipes/update_packages.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# update packages # update bash due to the vulnerability # https://access.redhat.com/articles/1200223 update_packages = %w[ bash ] update_packages.each do |pkg| bash "update_#{pkg}" do user 'root' only_if "yum check-update | grep #{pkg}" code <<-EOC yum clean all yum -y update #{pkg} EOC end end |
wrapper cookbook の最後で recipe を include。
site-cookbooks/wrapper_cookbook/recipes/default.rb
1 |
include_recipe 'base_cookbook::update_packages' |
プロビジョニング実行。
1 2 3 |
$ bundle exec knife solo cook example.com |
これで、Bash がアップデートされてパッチが適用されたはずです。
Chef を使わない場合は、普通にコマンドを打って、
1 2 3 |
$ sudo yum update bash |
で、良いかと思います。
再度 bash 脆弱性を診断
再び診断。
1 2 3 4 5 6 |
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test" bash: warning: x: ignoring function definition attempt bash: error importing function definition for `x' this is a test |
よしと、これでパッチが当たっているのを確認できました。最後に Serverspec でテストを走らせて確認後終了。
【追記 2014/09/25】
bash をアップデートした後、システムを再起動すべきだそうです。あるいは、再起動が難しい場合は以下コマンドを実行。
1 2 3 4 |
# yum update bash # /sbin/ldconfig |
詳細は以下を参照。
Resolution for Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271) in Red Hat Enterprise Linux – Red Hat Customer Portal
2014/09/24に発表されたBash脆弱性と解決法(RedHat系) – Qiita
【追記ここまで】
【追記 2014/09/26】
2014/09/25の追記で書いたシステム再起動についてですが、今朝再び
Resolution for Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271) in Red Hat Enterprise Linux – Red Hat Customer Portal
を確認したところ、reboot および /sbin/ldconfig コマンドについての記載が削除されています。再起動または /sbin/ldconfig コマンドの実行は必要ないかもしれません。
【追記ここまで】
【追記 2014/09/26】
Bash の脆弱性もう一件 CVE-2014-7169 に関する記事を書きました。こちらもお読み下さい。
Bashの脆弱性もう一件CVE-2014-7169に対するパッチ適用 | EasyRamble
【追記ここまで】
【追記 2014/10/02】
JPCERT の GNU bash の脆弱性に関する注意喚起のページが9/30に更新されています。
なお、本件に関連して見つかった CVE-2014-7186, CVE-2014-7187 の脆弱性
については、現段階では修正されていません。パッチの適用と合わせて回避策
の適用を検討してください。
…
IV. 回避策** 更新: 2014年9月30日修正 *****************************************
– GNU bash を代替のシェルに入れ替える
– WAF や IDS を用いて脆弱性のあるサービスへの入力にフィルタをかける
– 継続的なシステム監視を行う
********************************************************************
大事そうな箇所を引用しましたが、詳細は直接ご覧下さい。
【追記ここまで】
- – 参考リンク –
- bashの脆弱性(CVE-2014-6271) #ShellShock の関連リンクをまとめてみた – piyolog
- Blog: bashの脆弱性がヤバすぎる件 – x86-64.jp – くりす研
- 先程から騒ぎになっているbashの脆弱性について | 上田ブログ
- BASHの脆弱性でCGIスクリプトにアレさせてみました – ブログ – ワルブリックス株式会社
- Remote exploit vulnerability in bash CVE-2014-6271 | CSO Online
- Bash specially-crafted environment variables code injection attack | Red Hat Security
- CentOS & Linux の関連記事
- Job for nginx.service failedのNginxエラー
- upstream sent too big header while reading response header from upstream(Nginx/Rails)
- Can’t get information about user clamav(clamdエラー)
- STDERR: Exception in thread “main” java.lang.InternalErrorエラー
- Linuxサーバー容量を確認するコマンドdf,duをマスターする!
- rmでファイル削除後にdf -hで容量が減らない時の対処(Linux)
- Apacheをローカルネットワークのみに公開にする
- logwatchからのメールが来ないと思ったら…
- Linuxサーバの負荷や使用率を調査するコマンドと手順
- Bashの脆弱性もう一件CVE-2014-7169に対するパッチ適用
Leave Your Message!