攻撃者がmkdirを使用してシステムを損傷する方法はありますか?

攻撃者がmkdirを使用してシステムを損傷する方法はありますか?

ricardo私のシステムに問題を引き起こしているユーザーであるユーザーに制限されたユーザーアカウントを設定しています。私は彼にsudo時々必要な本番ディレクトリのアクセス許可を与えたいと思います。私は私のファイル/etc/sudoersで次の規則を検討しています。

ricardo   ALL=(root) NOPASSWD: /bin/mkdir

このルールだけを使用すると、リカルドは意図的にまたは意図せずにシステムを壊すことができますか?

答え1

私はこのような攻撃がうまくいくと思います。ここで「何か」は、rootfsがインストールされた後にロードしようとするカーネルモジュールです。

$ sudo mkdir -m 777 /lib/modules/`uname -r`/a
$ cp evil.ko /lib/modules/`uname -r`/a/«something».ko

また、モジュールで宣言されたエイリアスによって異なる名前を使用できます。私は次のカーネルアップデートで発生するdepmodが実行されるまでロードされないと思います。したがって、mkdir最近のsudoログには表示されません。

/ etcには、ディレクトリ内のすべてのファイルを読むことがたくさんあり、時には再帰的に実行されます。さらに悪いことに、これらのディレクトリのいくつかは基本的に存在せず、これについて学ぶ唯一の方法は、そのディレクトリを使用するプログラムのマンページ、初期化スクリプトなどを読むことです。さらに悪いことには、以前のバージョンとの互換性が使用されなくなり、文書化されなくなる可能性があります。

編集する:より多くのディレクトリが浮上します。次の場所にあります/usr/local

  • /usr/local/lib/perl/5.14.2(Perlのバージョンによって異なりますので、perl -Vご確認ください。)Fileそこにサブディレクトリを作成しますFind.pm。誰かがそれを使用するたびにFile::Find攻撃者のバージョンを使用するようになります。同様に、同じことを行いますGetopt::Long。システムユーティリティは通常Perlで書かれているため、root権限を提供できます。 (努力するack-grep --color -a 'use.+::' /usr/sbin | less -R
  • Python、Rubyなどにも同様のディレクトリがあると思います。システムユーティリティもPythonで書かれています。
  • 一部の人々は/usr/local/include

答え2

rootとして実行すると、mkdirユーザーは以前に同じ名前(および/または不正な権限)でディレクトリを作成して、他のプロセス/ユーザーが新しいファイルとディレクトリを作成するのを防ぎます。

これは特にログとセキュリティに関連している可能性があります。ロックする-文書。

〜のようにヨルダンちなみに最大数はインデックスノードまた、使い果たされ、システム全体が詰まることもあります。

特定のグループにユーザーを追加するか、ACL)、あなたはいかなる権利も付与することなく問題を解決することができますsudo

答え3

彼をchroot刑務所にリダイレクトする必要があります。あるいは、小規模な仮想マシンの場合は、1時間に1回の競合が発生する可能性があります。あなたがすべきことは新しいコピーを提供することだけです。

答え4

書き込みアクセス権を持つディレクトリを作成できるため、可能性があります。ユーザーは必要に応じて新しいディレクトリにmkdir -m 777 blah書き込むことができます。ricardo構成、スクリプト、またはモジュールをロードするためにディレクトリツリーを繰り返す他のユーザーとしてすでに実行されているシステムプロセスが必要です。その後、ユーザーは自分のアイテムを追加してロードまたは実行できます。私の最初の考えは、PHPまたはCGIを実行できるWebサーバーを実行することです。その後、そのユーザーとしてスクリプトを実行できます。私はより多くの実際のケース、特にrootそれが確実であると確信しているケースを考えようとしています。

ssh は、こ​​のような状況を捉えるデーモンの例です。.sshディレクトリがないユーザーのためにディレクトリを作成し、authorized_hosts適切な場所に自分のファイルを保存する場合。sshdディレクトリ権限がオープンすぎて公開鍵を無視します。

多くのプログラムが正しく処理できないファイルが存在すると予想されるディレクトリ(一時的なtmpやスワップファイルなど)を作成すると、問題が発生する可能性があります。

多くのcgroupを作成できますが、cgroupで何もしないようです。少なくともシステムをひざまずくことができます。 256Mボックスには約10,000個のcgroupが必要です。OOMキラーsshdを削除してください。

-m環境オプションmkdirとUMASKを調整すればsudoまた面倒になるようです。

関連情報