誰が使うかわからないニッチなコマンドやツールの類は、脆弱性が見つかっても影響範囲がきわめて限定されることが多いです。一方で、標準コマンド/ライブラリの脆弱性は、影響範囲を特定しづらいというように見えます。 特に標準ライブラリの場合、あらゆるコマンドから動的/静的リンクされているケースが考えられます。また、ヘンに単独で入れ替えてしまうと、まったくノーマークだったソフトウェアの動作に悪影響を及ぼしかねません。
すでに11月だが、まだまだ見られるShellshock狙いの通信~SMTP経由もあるよ
9月末に発見され、10月に入ってやっと対処完了した感のあるShellshockですが、Webサーバのログを確認すると、まだまだ確認されています。
11月時点でも確認されたのは、たとえば以下のようなログです(図1)。
bashさえ叩ければ良いので、アタックベクタは多岐にわたるのもShellshockの特徴ですが、SMTP経由でShellshockをトリガしようとする類の攻撃も確認されています。それも単に叩くだけではなく、攻略に成功したら当該コンピュータをBot化するという悪質なものです。
インターネットに直接晒していないから大丈夫、という話でもないので、対応すべきところはきちんと対応しておきましょう。
stringsを異常終了させるファイル~libbfdの脆弱性
10月の下旬に入って、「怪しいファイルにstringsかけちゃダメだよ」という「なんだこれは?」というblogエントリが確認されました。当該blogエントリを書いたのは、Shellshock騒動で発見された脆弱性のうち、最新のものを発見した人です。具体的には、GNU bash 4.3 Patchlevel 28と29に存在する脆弱性を発見・報告を行っています。
当該blogには、PoCとして「strings処理をかけると異常終了するファイル」へのリンクが存在しました。
このファイル、Linuxのstringsコマンドで処理させようとすると確かに異常終了します。blog記事をよく読むと、「libbfdで定義されている関数に脆弱性があり、当該関数を用いてファイルを処理させようとすると異常終了する」というものでした。
当該ライブラリの当該関数を用いているコマンドは、stringsコマンド以外にもobjdump、objcopy、nmなどがあります。これらのコマンドを用いて上記PoCファイルを処理しようとしたところ、(当然ではありますが)すべて異常終了しました。
このPoCファイルの素性を簡単に解析したところ、普通にIA32のLinux環境で実行可能なELFファイルであり、実行しても何もしないことがわかります。
筆者は解析の過程でIDA Proなどの逆アセンブラを用いましたが、この場合は普通に逆アセンブルも可能でした。しかし、「そんなにサイズ大きくないから」とobjdumpを用いて逆アセンブルをしようとするとハマります。
wget+FTP+細工されたファイル=脆弱性トリガ
コマンドラインでWebコンテンツを取得しようとする際によく使う(と思われる)のがwgetやcurlなどのコマンドですが、wgetコマンドを用いてFTPサーバからデータを取得しようとした場合、データの種類によってはおかしなことが発生し得ます。
なお、この脆弱性を確認するためのMetasploitモジュールが公開されています。wgetというとHTTPという人も多いと思いますが、面倒がらずに修正しておきましょう。
しばらく続くかこの傾向?~標準コマンドでの脆弱性発見
今年はやたらと、Linux等に標準的に搭載されているコマンドやライブラリ類に脆弱性が見つかることが多いです。StrutsやOpenSSLに脆弱性が見つかるのも困ると言えば困るのですが、それ以前に標準コマンドに脆弱性が見つかった場合は、対処を行うべきものが爆発的に増加します。Strutsを使ったWebアプリケーションは、あまり多くのコンピュータに入っているわけではないですが、bashはおそらくLinuxシステムであればどんなコンピュータにも搭載されているでしょう。libbfdも、開発環境をインストールしているLinuxマシンであればどんなコンピュータにも入っているでしょうし、wgetも然りです。
筆者は個人的に、もうしばらくこの傾向は続くのではないか? と考えています。
安定動作しているシステムほど危険~点検と対応を
システム稼働しはじめて、運用もこなれてきたシステムほどパッチ等の対応が遅れたり、対応そのものを忘れたりすることが多いです。そして標準コマンドやライブラリは、意外なところで使われることも多いです。「動いてるから脆弱性を理由にアップデートできない」という人も多いですが、できるかぎり「アップデートを行うためには」という観点で対応を行えるようにしてほしいです。
自分が管理しているシステムをきちんと把握しておき、こういう時に点検できるようにしておきましょう。