Bash is the Bourne Again SHell

9月24日ごろから広く知られるようになったbashのセキュリティ脆弱性(通称ShellShock)を巡る報道が連日続いている。世界中のベンダやプロジェクト、コミュニティがこの脆弱性の検討を始めており、この問題は先のOpenSSLのセキュリティ脆弱性(通称Heartbleed)を超える可能性が出てきている。ShellShockは影響範囲が広すぎる上、まだこの問題が自分の使っているソフトウェアにも存在しているということに気がついていないユーザや開発者が多いという問題がある。

サービスを提供するサーバが環境変数を渡すまたは受け取る仕様になっているものは多い。プロセスはfork(2)システムコールで自身をコピーした時に環境変数を引き継ぐ。プロセスはfork(2)を繰り返していくことがあり、そのどこかのタイミングでbash(1)が実行されれば細工された環境変数経由で任意のコマンドが実行されることになる。当初はWebサーバとCGIに焦点があてられていたが、これは問題のほんの小さな側面に過ぎない。ssh(1)でのログインにも影響がでてくるし、環境変数を利用するサービスはほかにいくつもある。

多くのユーザを抱えるMac OS Xの/bin/shの実態はbashであり、Linuxディストリビューションの多くもbashを/bin/shに使っている。このため、/bin/shで動作しているように見えるシェルスクリプトも、実態がbashであればこのShellShockの影響を受ける。Linuxを対象としたシェルスクリプトはbashを前提としているものが多く、今回の影響を受ける可能性が高い。

さらに、環境変数が展開されたり実行されるタイミングを抽象度の高いプログラミング言語やツールを使っている場合にはすべて把握できていない可能性があり、開発者自身が自分の開発しているソフトウェアがこの影響を受けるかどうかわかっていないケースが想定される。ShellShockはHearbleed同様、長期に渡って脅威に利用されるセキュリティ脆弱性となる可能性が高く、今後さまざまな関連発表に注目するとともに、利用しているシステムやソフトウェアを常にモニタリングして問題の影響を受けていないかチェックしていく必要があるといえる。