bashの脆弱性
数日前から一部ではかなりの騒ぎになっているbashの脆弱性問題を簡単に紹介しておきます。
GNU bash の脆弱性に関する注意喚起
https://www.jpcert.or.jp/at/2014/at140037.html
bashというのは、LinuxをはじめとしてMacOSXなど多くのUNIX系OSで利用されているシェル(ユーザとオペレーティングシステムを仲介するための基本ソフトウェア)です。ログインされなければシェルは使えないので、何が問題なの?と思う人もいるかも知れませんが、UNIX系OSではシェルスクリプトを多用しますし、外部コマンドを実行する際にもシェルを介して実行することがほとんどで、多くの環境でbashが標準シェルとして使われているため、ほぼ全ての処理に影響するほどの問題なのです。
今回の問題は変数をセットする際に関数記述のような文字列を与えると実行されてしまうという問題で、好きなコマンドを簡単に実行できてしまう心配があります。特にWEBサーバでCGIを使っている場合には、例えばアカウント情報を記載した/etc/passwdファイルを表示させてしまうことができたり、ファイルやディレクトリを削除したりと、様々な心配があります。
一番確実な対策はbashを対策版に更新することで、すでに各OSで対策版が公開されています。昨日のうちに自社のインターネットに繋がるサーバの更新をし、私はMacOSXを普段使っているので、更新しておきました。OSやディストリビューションによって対策方法は異なり、難易度もかなり違います。普通にアップデートで対策できるものもありますし、まだ正式リリースに含まれておらずに、面倒な手順が必要なものもあります。
いずれにしても、インターネット向けのサービスを担っているサーバに関してはすぐに対応しておくことをお勧めします。
私自身、インターネット向けに使われるソフトウェアの開発・販売を行っていますので、ソフトウェアの問題は他人事ではなく、本当に胃が痛くなるような思いを年中していますが、使う側からすればいい迷惑だと思うことでしょう。しかし、今回のようなフリーソフトはもちろん、商用のソフトでも開発者は問題を起こそうとして起こしているわけではありません(まあ、そういう人もいるかも知れませんが)。必死に世の役に立つものを生み出し、サポートをしている人がほとんどです。それでも、機械などのように目に見えるものでもなく、しかも自分が書いたソースコード以外のものとも連携しながら、あまりにも複雑な状態で成り立っているのが今のソフトウェアですので、どうしても「完璧」な状態にはなかなかなりませんし、完璧になる前に次々と改良の依頼が来て、ますます複雑になっていきます。
このような背景で、問題が起きてしまうこと自体を責めても仕方なく、起きてしまったことをいかに素早く対処していくかが大事であり、そのためにも情報の開示が大切なのですが、脆弱性を開示することは攻撃者にヒントを与えることにもつながり、なかなかタイミング的に難しいものです。
インターネットは従来のような閉じたサービスではなく、様々なものが組み合わさって成り立っているサービスです。そんなものは怖くて使えないという時代もありましたが、すでになくてはならない仕組みになっています。しかし、ますます複雑になっていることも確実で、様々な問題があることが前提で問題が起きて当然くらいの意識で、起きた問題に迅速に対処して運用していくことが正しい道だと思います。