米国時間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向けの修正パッケージが公開されている。本記事公開時点ではまだソフトウェアアップデートの対象にはなっていないが、いずれ対象に含められると思われる。
この記事は参考になりましたか?