使用vim在/dev目录创建文件的机制及/dev非法写入排查方法
关于在/dev目录下创建文件的机制、风险与排查
核心机制解释
/dev 挂载的是devtmpfs,属于内核直接维护的内存文件系统,所有数据均存储在内存中,系统重启或重新挂载devtmpfs后所有内容会全部丢失。
你观测到使用vim可成功创建文件、但通用磁盘文件系统的create接口未被调用的现象,原因如下:
- devtmpfs本身独立实现了完整的文件操作逻辑,支持常规文件的创建、读写、删除操作,走的是devtmpfs专属的文件系统回调,不会触发传统磁盘文件系统的通用create接口,所以你观测不到对应接口调用是正常现象。
vim编辑新文件时默认会先在同目录生成.swap临时文件,写入完成后再rename替换目标文件,这一系列操作全部由devtmpfs直接处理,和磁盘文件系统无关。- 该创建流程完全不涉及
udev相关的内核API:udev是运行在用户空间的守护进程,仅负责设备节点的权限配置、别名生成、符号链接管理等设备相关操作,普通文件的创建不会触发udev的任何逻辑。
你观测到的ls输出中,前缀为-rw-r--r--的就是你创建的普通内存文件,和前缀为crw-rw-rw-的字符设备节点有明显区别:
crw-rw-rw- 1 root tty 5, 0 Aug 24 17:32 tty
-rw-r--r-- 1 root root 35 Aug 24 17:37 abc
-rw-r--r-- 1 root root 0 Aug 24 17:37 ght
-rw-r--r-- 1 root root 0 Aug 24 17:51 ioiu
非法写入/dev的风险
- 内存资源耗尽:devtmpfs默认大小为系统物理内存的50%,攻击者如果在/dev下写入大量文件,会直接占用系统内存,触发OOM机制杀死业务进程,严重时会导致系统崩溃。
- 设备节点篡改:如果攻击者修改现有设备节点(如
/dev/sda、/dev/tty等)的权限、属性,可直接绕过文件系统权限管控读写磁盘、窃取敏感数据,甚至直接破坏磁盘文件系统导致数据完全丢失。 - 恶意设备节点创建:攻击者拿到root权限后,可以创建和真实存储设备同主/次设备号的恶意节点,绕过所有上层权限校验直接读写磁盘内容,造成数据泄露或恶意篡改。
排查与加固方案
- 实时目录监控:使用
inotifywait工具监控/dev目录的所有变更事件,参考命令:inotifywait -m -r -e create,modify,delete /dev - 操作审计:配置Linux审计框架
auditd捕获所有对/dev的写操作,添加如下规则:
后续通过-a always,exit -F dir=/dev -F perm=w -k dev_writeausearch -k dev_write即可查询所有操作/dev的进程ID、执行用户、操作时间等关键信息。 - 定期校验:定期比对当前/dev下的文件列表和udev规则生成的合法设备列表,过滤出非预期的普通文件、异常设备节点。
- 挂载加固:在
/etc/fstab中修改devtmpfs的挂载参数,添加nosuid,noexec,mode=0755,限制特殊权限位的使用;必要时可配置为只读模式,仅允许udev进程修改/dev内容。
内容的提问来源于stack exchange,提问作者proudengineer
相关产品推荐
相关产品推荐

