GNU fileutils 再帰ディレクトリの削除を引き起こす競合状態
[翻訳:関谷 麻美]
2002年3月13日
国際
海外情報
2002年3月13日
概要
GNU File Utilities は、 GNU オペレーティング・システムの基本ファイル操作ユーティリティだ。fileutils GNU パッケージに含まれる様々なユーティリティの競合状態は、ローカルユーザが root 権限を持ってファイルシステム全体の削除を可能にする。
詳細
脆弱なシステム
fileutils 4.1 安定バージョン
fileutils 4.1.6 開発バージョン
サブディレクトリのコンテンツを削除した後、ディレクトリ・ツリーの再帰的削除の間に上位のディレクトリに戻るため、セキュリティを考慮しない
chdir("..") syscall を実行する。
'/tmp/a/b/c' ディレクトリ・ツリーを削除する'rm -fr /tmp/a' の例
(より読みやすくするため、strace 出力を単純化した)
chdir("/tmp/a") = 0
chdir("b") = 0
chdir("c") = 0
chdir("..") = 0
rmdir("c") = 0
chdir("..") = 0
rmdir("b") = 0
fchdir(3) = 0
rmdir("/tmp/a") = 0
現行のディレクトリが /tmp/a/b/c に変更された後、競合状態が発生する。
/tmp/a/b/c ディレクトリを /tmp/c に移る場合、後に続く二つの chdir("..") syscalls は、ルートディレクトリ / に移る。そして、十分な権限を持つ場合(すなわち、root ユーザにより呼び出される場合)rm は全体のファイルシステムからファイルを削除し始める。
この競合状態のタイムフレームは、ディレクトリ構造がどのくらい複雑かに依存する。
同じ問題は、ソースおよび宛先ディレクトリが異なるファイルシステムにある場合に mv ユーティリティにも影響を与え、宛先にコピーを作成した後それらは削除される。
影響
高い権限を持たないユーザが、ユーザのディレクトリの削除操作を検出するデーモンプログラムを実行し、サービス使用拒否を引き起こす競合状態を利用する恐れがある。
修正プログラム
2002年3月7日、GNU fileutils の開発者にこの情報を通知し、2002年3月9日、この脆弱性を修正するパッチがリリースされた。パッチは、最新の 4.1.6 開発バージョン用だ。
追加情報
iSEC Security Research の Wojciech Purczynski がこの情報を提供した。
[情報提供:SecuriTeam]
http://www.securiteam.com/
《ScanNetSecurity》