次: , 前: Security Considerations for find, 上: Security Considerations


8.3 xargsのセキュリティの検討

findの`-print'による競合状態の影響の記述は,findの開 始後かつxargsがすべてのアクションを完了する前に攻撃者がファイル システムを変更する可能性がある場合,xargsでセキュリティを高くす ることが不可能なことを示しています.

しかし,攻撃者がリアルタイムでファイルシステムにアクセスできない場合で さえも,セキュリティの問題が他にも存在しています.第一に,攻撃者がファ イルシステム上に,自分が選んだ名前でファイルを作成可能な場合, xargsは`-0'オプションを使用しない限りセキュリティが低くなり ます./home/someuser/foo/bar\n/etc/passwdというファイル名が存在 する場合(`\n'が改行文字を意味すると仮定します),find ... -printでは,間違って三行に分割した行を出力するはずです.

     /home/someuser/foo/bar
     
     /etc/passwd

入力に改行がある場合,xargsはそれを無視します.このため,このファ イルリストを元に実施されるアクションには,これがfindを実行し ている人が期待していない/etc/passwdファイルが含まれます.攻撃者 がこの優位性を使用可能な状況も存在します.同じ状況は,ファイル名に改行 ではなく普通の空行が存在する場合も存在し,もちろん,ファイル名のリスト には“余分な”改行は含まれていません.

この問題は,xargsコマンドのデフォルトの動作,つまりPOSIX標準で指 定された動作の結果から回避することができません.この問題を避ける方法は, xargsの使用を避け,より好ましい`find -exec'や(利用可能であ れば)`find -execdir'を使用したり,xargsにファイル名が空白で はなくASCIIのNUL文字で分離していると理解させる`-0'オプションを使用 することだけです.しかし,このオプションは役に立ちますが,POSIXの標準で は必須とされていません.