ricardo
私のシステムで厄介なユーザーuserの制限付きユーザーアカウントを設定しています。を使用してディレクトリを作成する権利を彼に付与したいと思いsudo
ます。私は私の/etc/sudoers
ファイルでこのルールを検討しています:
ricardo ALL=(root) NOPASSWD: /bin/mkdir
このルールのみを使用して、ricardoがシステムを意図的または偶然に侵害する可能性のある方法はありますか?
ricardo
私のシステムで厄介なユーザーuserの制限付きユーザーアカウントを設定しています。を使用してディレクトリを作成する権利を彼に付与したいと思いsudo
ます。私は私の/etc/sudoers
ファイルでこのルールを検討しています:
ricardo ALL=(root) NOPASSWD: /bin/mkdir
このルールのみを使用して、ricardoがシステムを意図的または偶然に侵害する可能性のある方法はありますか?
回答:
このような攻撃はうまくいくと思います。«something»はrootfsがマウントされた後にロードを試みるカーネルモジュールです:
$ sudo mkdir -m 777 /lib/modules/`uname -r`/a
$ cp evil.ko /lib/modules/`uname -r`/a/«something».ko
また、モジュールで宣言されているエイリアスに応じて、他の名前を使用できることにも注意してください。depmodが実行されるまでロードされないのではないかと推測しています。これは、次回カーネルの更新があるときに発生するためmkdir
、sudoログに最近表示されることもありません。
/ etcには、ディレクトリ内のすべてのファイルを(時には再帰的に)読み込むものがたくさんあります。さらに悪いことに、これらのディレクトリの一部はデフォルトでは存在せず、それらについて知る唯一の方法は、それらを使用するプログラムのマンページ、initスクリプトなどを読むことです。さらに悪いことに、下位互換性のあるものは非推奨であり、文書化されていない場合もあります。
編集:さらにいくつかのディレクトリの考え、これらの/usr/local
:
/usr/local/lib/perl/5.14.2
(Perlのバージョンによって異なりperl -V
ます。調べてみてください)。File
そこにサブディレクトリを作成し、そこに置きFind.pm
ます。これでFile::Find
、誰かがを使用するたびに、攻撃者のバージョンが使用されるようになります。同様に、と同じことを行いGetopt::Long
ます。システムユーティリティはしばしばPerlで書かれているので、これはおそらくルートを与えます。(試してみてくださいack-grep --color -a 'use.+::' /usr/sbin | less -R
)/usr/local/include
ます。sudo mkdir
を使用して新しいディレクトリを作成できます。
mkdir
rootとして実行することにより、ユーザーは以前に同じ名前(および/または間違った権限)でディレクトリを作成することにより、他のプロセス/ユーザーが新しいファイルやディレクトリを作成するのをブロックできます。
これは、特にログおよびロックファイルに関連するセキュリティです。
jordanmは注目の最大数iノードはまた、システム全体を遮断することができるまで使用することができます。
ユーザーを特定のグループに追加する(またはACLを使用する)ことにより、を介して権限を付与することなく問題を解決できるはずsudo
です。
mkdir
、ricardoが使用を許可されているコマンドのリストは省略します。
for((i = 0;; i++)); do touch $i; done
十分です(bashism、申し訳ありませんが、アイデアは得られます)。
sudo
OPが検討している他のコマンドもiノードを使い果たす可能性があります。OPはそのDoSベクトルを認識する必要があります。
書き込みアクセス権を持つディレクトリを作成できるため、可能性があります。では、ユーザは、新しいディレクトリに好きな書き込みをすることができます。構成、スクリプト、またはモジュールをロードするためにディレクトリツリーを再帰的にたどる別のユーザーとして既に実行されているシステム上のプロセスが必要になります。その後、ユーザーは、ロードまたは実行する独自のものを追加することができます。私が最初に考えることができるのは、phpまたはcgiを実行できるWebサーバーを実行している場合です。その後、そのユーザーとしてスクリプトを実行できます。私は、より現実的な例、特に例を見つけるのに苦労していますが、それは間違いないでしょう。 mkdir -m 777 blah
ricardo
root
sshは、この種のシナリオをトラップするデーモンの例です。.ssh
ディレクトリを持たないユーザー用のディレクトリを作成し、独自のauthorized_hosts
ファイルを配置した場合。sshd
ディレクトリのアクセス許可が開きすぎていることに気付き、公開キーを無視します。
多くのプログラムがうまく処理できないファイル(一時的なtmpファイルやスワップファイルなど)が見つかると予想されるディレクトリを作成するのは、間違いなく面倒です。
たくさんのcgroupを作成できますが、それらで何もしているようには見えません。少なくともシステムをひざまずかせることができるかもしれません。OOMキラーがsshd を削除するには、256Mのボックスで約10000個のcgroup が必要でした。
環境の-m
オプションmkdir
とUMASK を制御する場合sudo
、単に迷惑な状態に戻ったと思います。