为什么/ etc / fstab中的“ nodev”如此重要?角色设备如何用于黑客攻击?


19

我正在学习有关Linux安全性的知识,并努力了解为什么USB棒上装有字符设备的潜在危险。

如果我的USB记忆棒带有bash可执行文件,且其上具有setuid根目录,则危险很明显:如果我输入类似以下内容,则拥有此类USB记忆棒的任何人都可以在我的计算机上获得root特权

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

在我/etc/fstab因为defaults包含suid

但是角色设备呢?如果装有字符设备的USB棒与dev或一起安装,如何使用字符设备获得root特权或破坏东西defaults

Answers:


31

由于默认情况下对底层设备的访问仅受文件许可权控制,因此,如果您的USB记忆棒包含POSIX文件系统,且该设备的世界可写设备节点与系统中的真实设备相对应,则可以使用该设备节点来访问相应的设备设备作为“普通”用户。想象一下,与您的摄像头之一的音频设备相对应的设备/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组成员(也可读/写)。

现在想象一下,在该系统上您将无法使用rootUSB记忆棒,但由于某种原因,您可以不使用USB记忆棒来安装USB记忆棒nodev。在您所在的其他系统上root,您可以在USB闪存盘上创建相应的特殊文件:

mknod -m 666 usersda b 8 0

这将创建一个特殊文件usersda,每个人都可以读取和写入。

将密钥安装在目标系统上,然后,您可以usersda按照与相同的方式使用设备/dev/sda,但没有访问限制...

(只要您能够访问解密的映射器设备,这将对加密的文件系统也有效:创建与相应/dev/mapper条目匹配的设备。)


听起来很有趣!但是我不确定我是否理解。设备是一个文件,并且文件通过inode进行访问。USB记忆棒上的伪造设备将具有不同的inode,因此它将是不同的设备,不是吗?
rosix 2015年

7
设备是一个特殊文件,具有主编号和次编号;您可以查看这些内容ls -l /dev,它们是显示的两个数字,而不是文件大小。内核将设备专用文件与使用这些编号的驱动程序进行匹配,因此您可以有多个文件指向同一内核驱动程序和设备。特殊文件是使用创建的mknod
史蒂芬·基特2015年

请注意,/dev/tty*设备是字符设备,入侵者获得对您的终端会话和/或系统控制台的完全读/写访问权限,再加上滥用终端仿真器功能,可能会允许各种各样的令人讨厌的窍门...
telcoM

1
@TheQuark差不多,是的。更一般一些;我会说“解释”的意思是“将设备文件作为设备节点而不是普通文件进行处理”。
Stephen Kitt

1
@ n00b您无法挂载usersda,但是您至少可以使用它不受限制地从基础磁盘读取数据,也可以对其进行写入。您可以轻松地复制所有磁盘中的内容,并与工具,如debuge2fs,重写/etc/shadow
斯蒂芬·基特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.