SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

【Bash脆弱性 対応のまとめ】 各ディストリビューションの修正パッケージのリリース相次ぐ、暗黙にBashを呼び出すケースに要注意

  • このエントリーをはてなブックマークに追加

  • このエントリーをはてなブックマークに追加

 米国時間2014年9月24日に、いわゆる「Shellshock脆弱性」と呼ばれる、Unix系OSに対して環境変数を経由して任意のコマンドを実行可能なBashの脆弱性が発表された。主だったOSの開発元からは修正がリリースされており、ユーザには速やかな適用が望まれる。

【記事内容の更新】
 米国時間9月29日付けで発表されたMac OS X向け修正パッケージの公開に関する情報を追加しました(注記の[2])。

 Bashは、LinuxやMac OS X等のUnix系システムにおいてOSとユーザの仲立ちをする「シェル」と呼ばれるソフトウェアの1つで、特にLinuxでは標準のシェルとして一般に使われている。また、原型のshシェルの拡張として、ユーザ対話だけでなくプログラムの一種としても広く利用される。

 今回の脆弱性では、環境変数を経由した命令定義が、内容を問わずそのままBashで実行されてしまう。わかりやすい例はWebサーバのCGIプログラムで、そのやり取りではユーザのIPアドレスやユーザエージェント等の情報が環境変数で渡されるため、CGIプログラムがBashで記述されている場合、細工した情報を送ることにより、それを受け取ったBashが環境変数を経由して任意のコマンドを実行できてしまう。

 筆者の観測範囲でもすでに、単なる探索に限らず、特権ファイル内容の表示、ファイルシステムの消去、バックドアの作成、ボットの注入等、さまざまな手口でのアクセス試行を目にしている。

 今回の影響が深刻に捉えられているのは、明示的にBashで記述したつもりはなくても、暗黙にBashが呼び出されているケースが多いからである。一般にプログラムにおいてシェルが必要になったときには暗黙に「/bin/sh」というファイルが実行されるが、いくつかのOSにおいては/bin/shの実体は/bin/bashとなっている。

 この状況において、CGIプログラムの内部で呼び出しているコマンドが/bin/shを利用するものであれば、呼び出された瞬間に脆弱性が顕在化する(/bin/shが/bin/bashでなかったとしても、内部で直接/bin/bashを実行しているなら当然同じ状況となる)。軽量スクリプト言語でよく使われるsystem()や` `命令での外部コマンド呼び出し、popen操作、PHPのmailやmb_send_mail命令等でも/bin/shが呼び出される上、Webの世界だけでなくメールシステムでもメーリングリストの運用等で/bin/shが内部で利用されることがあり、影響範囲は想像以上に広い。

 この脆弱性対応はCVE-2014-6271、その後対応が不十分としてCVE-2014-7169、CVE-2014-7186、CVE-2014-7187が発表されている。主要OSの対応状況を次に示す。

Red Hat Enterprise Linux
Red Hat Enterprise Linux 5~7の修正パッケージが公開されている。
 ► 修正パッケージ

CentOS
CentOS 5~7の修正パッケージが公開されている。
 ► 修正パッケージ(CentOS 5)
 ► 修正パッケージ(CentOS 6)
 ► 修正パッケージ(CentOS 7)

Fedora
Fedora 19~21の修正パッケージが公開されている。
 ► 修正パッケージ

Debian GNU/Linux
標準で/bin/shはBashではない。Debian 6~7、テスト版、不安定版の修正パッケージが公開されている(ただし、Debian 6 Squeezeにおいての修正はSqueeze-LTSリポジトリで、amd64およびi386アーキテクチャのみ)。
 ► 修正パッケージ(脆弱性CVE-2014-6271に対応)
 ► 修正パッケージ(脆弱性CVE-2014-7169、CVE-2014-7186、CVE-2014-7187に対応)

Ubuntu
標準で/bin/shはBashではない。Ubuntu 10.04 LTS、12.04 LTS、14.04 LTSの修正パッケージが公開されている。
 ► 修正パッケージ(脆弱性CVE-2014-6271に対応)
 ► 修正パッケージ(脆弱性CVE-2014-7169に対応)
 ► 修正パッケージ(脆弱性CVE-2014-7186、CVE-2014-7187に対応)

Amazon Linux AMI
修正パッケージが公開されている。米国太平洋時間2014年9月14日12時30分以降のAMIにおいては更新済み。
 ► 修正パッケージ
 ► 詳細情報

 外部へのサービスを提供しないクライアント環境においては、Bashの脆弱性による直接的な被害を今すぐに被ることはない。例えば、米Appleは同様のBashの脆弱性を抱えるMac OS Xについて「高度なUNIXサービスを設定していない限りBashのリモート脆弱性にはさらされない(not exposed to remote exploits of Bash unless users configure advanced UNIX services)[1]」と回答している(無論、この脆弱性を無視するわけではなく、修正は予定されている[2])。

 しかし、ネットワークを利用するサードパーティのソフトウェア(Passenger等)をインストールしていたり、学習やテスト目的でWebサーバー等を起動していたりしたマシンを公開無線LANに接続するようなケースでは、容易に攻撃され得る状態にあることには注意が必要だ。また、セキュリティサポート期限の切れている古いOSやLinuxベースの組み込み機器は極めて危険な状態に晒されることになる。外部にさらされるネットワーク環境内にそのような機器がないか、今一度確認されたい。

[1] 米Tech Crunchの記事「Apple Says Majority Of OS X Users Are Safe From Bash Exploits」(2014年9月26日)

[2] 米国時間9月29日付けで、緊急更新としてOS X 10.7~10.9向けの修正パッケージが公開されている。本記事公開時点ではまだソフトウェアアップデートの対象にはなっていないが、いずれ対象に含められると思われる。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

Debian Project 武藤 健志(デビアン プロジェクト ムトウ ケンシ)

Debian Project公式開発者。パッケージ保守のほか、インストーラ開発、国際化、印刷機構といった分野を遍歴。最近では、汎用マークアップフレームワークの「Re:VIEW」の開発に注力している。Twitter IDは@kmuto

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8164 2014/09/30 11:51

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング