web-dev-qa-db-ja.com

/ etc / fstabの「nodev」がなぜ重要なのですか?ハッキングにキャラクターデバイスをどのように使用できますか?

Linuxのセキュリティについて学び、キャラクターデバイスが搭載されたUSBスティックが潜在的に危険な理由を理解するのに苦労しています。

Setuid rootが含まれているbash実行可能ファイルが含まれているUSBスティックを持っている場合、危険は明らかです。このようなUSBスティックを持つ誰でも、

/dev/sdb1 /media/usbstick auto defaults 0 0

私の/etc/fstabdefaultsにはsuidが含まれるため。

しかし、キャラクターデバイスはどうですか?キャラクターデバイスを使用して、そのキャラクターデバイスを搭載したUSBスティックがdevまたはdefaultsでマウントされた場合、ルート権限を取得したり、文字デバイスを破壊したりするにはどうすればよいですか?

19
rosix

基礎となるデバイスへのアクセスは、デフォルトではファイル権限によってのみ制御されるため、USBスティックに、システム内の実際のデバイスに対応する誰でも書き込み可能なデバイスノードを持つPOSIXファイルシステムが含まれている場合、そのデバイスノードを使用して対応するデバイスにアクセスできます。 「プレーン」ユーザーとしてのデバイス。オーディオデバイスの1つであるウェブカメラ/dev/sdaに対応するデバイスを想像してください(これはキャラクターデバイスではなくブロックデバイスですが、引数は同じです)...

わかりやすくするための例を次に示します。 /dev/sdaにアクセスしたいとします(これで、rootになるプログラムを移植するなど、ディスクの内容でほとんど何でもできます。これはブロックデバイスですが、問題はキャラクターデバイスでも同じです)。ターゲットシステムでは、ls -l /dev/sdaが表示されます

brw-rw----  1 root disk      8,   0 Sep  8 11:25 sda

これは、/dev/sdaがブロックデバイス(行の先頭のb)であり、メジャー番号8およびマイナー番号0(行の中央の8, 0)であることを意味します。デバイスは、root(読み取り/書き込み)およびdiskグループのメンバー(読み取り/書き込み)のみにアクセスできます。

このシステムでrootになれないことを想像してみてください。ただし、何らかの理由で、nodevなしでUSBスティックをユーザーとしてマウントできます。 rootである別のシステムでは、USBキーに対応する特殊ファイルを作成できます。

mknod -m 666 usersda b 8 0

これにより、usersdaという特別なファイルが作成され、誰でも読み取りと書き込みが可能になります。

キーをターゲットシステムにマウントして、prestoにusersdaデバイスを/dev/sdaと同じように使用できますが、アクセス制限はありません...

(これは、暗号化解除されたマッパーデバイスにアクセスできる限り、暗号化されたファイルシステムでも機能します。適切な/dev/mapperエントリに一致するデバイスを作成してください。)

31
Stephen Kitt