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
。