SDB:FilesystemBlacklisting
文件系统模块和系统安全
用于文件系统支持的内核模块是潜在的安全威胁,因为内核具有文件系统模块的自动加载机制。攻击者可以准备一个例如带有已知安全漏洞的文件系统类型的USB驱动器,使用一个特殊制作的带有漏洞的文件系统。系统将检测到文件系统,自动加载文件系统模块,并尝试挂载文件系统。这可能在没有任何用户交互的情况下激活攻击者的漏洞。
文件系统黑名单
为了避免#安全部分描述的攻击场景,SUSE和openSUSE发行版开发了一种简单的方法来避免文件系统模块的自动加载。它通过suse-module-tools软件包实现,并使用modprobe的模块黑名单机制。某些模块默认被列入黑名单,因此不会自动加载。这样做的结果是,系统默认将无法访问使用被列入黑名单的文件系统格式化的媒体。
取消文件系统模块的黑名单
取消文件系统模块的黑名单很容易。只需使用modprobe命令手动加载模块。系统将提示您执行所需的操作
# modprobe erofs unblacklist: loading erofs file system module unblacklist: Do you want to un-blacklist erofs permanently (<y>es/<n>o/n<e>ver)? n unblacklist: not un-blacklisting erofs
- 如果您回答“n”到提示,如上例所示,模块将加载,但系统配置不会改变;也就是说,下次您尝试加载模块时,您将再次看到此提示。
- 如果您回答“y”,模块将被加载并取消黑名单。将来不会再提示您,并且此模块将启用自动加载。
- 如果您回答“e”,模块将被加载,但自动加载将保持禁用。如果您将来再次运行modprobe命令,将不再显示提示,模块将加载,并且自动加载将保持禁用。
- 如果您不想加载模块,请使用Ctrl-c.
在情况2和3中,将创建一个文件/etc/modprobe.d/60-blacklist_fs-${MODULE}.conf您可以直接删除它以撤消您刚刚所做的更改。
不支持的文件系统被列入黑名单
一个给定的文件系统是否构成如上所述的安全威胁是一个非常困难的问题。SUSE采取谨慎的方法,将所有未正式支持的模块列入黑名单。
openSUSE上的“受支持”和“不受支持”文件系统
SUSE Linux Enterprise发行版为SUSE客户提供了一组有限的完全受支持的文件系统,这些文件系统在SLE存储管理指南中列出。此集合包括btrfs、xfs、ext2/3/4、nfs、cifs、msdos、vfat和iso9660。fuse(用户空间文件系统)也受支持。Linux内核支持更多文件系统,但这些文件系统未在SLE上正式受支持。
openSUSE Leap继承了SLE的内核。主内核软件包kernel-default只包含SUSE内核开发人员正式支持的模块。Leap还有两个额外的软件包,kernel-default-extra和kernel-default-optional,它们包含不受支持的模块。
openSUSE Tumbleweed的内核是最近的上游内核,修改最少。“SUSE支持”不适用于它,因为内核由上游社区支持。然而,为了保持一致性,应用了与SLE和Leap相同的黑名单规则。因此,用户必须在能够使用任何不受支持的文件系统之前,应用#取消黑名单部分中的解决方法。
不受支持的文件系统列表(2023年12月)
adfs、affs、bfs、befs、cramfs、efs、erofs、exofs、f2fs、freevxfs、hfs、hfsplus、hpfs、jffs2、jfs、kafs、minix、nilfs2、ntfs、ntfs3、omfs、orangefs、pstore、qnx4、qnx6、romfs、sysv、ufs、zonefs(请注意,此列表包含一些在当前内核中未提供的旧模块)。
当前列表在suse-module-tools软件包中维护。您可以使用命令查看它
ls /lib/modprobe.d/60-blacklist_fs*| sed -E 's/.*-([^-]*).conf/\1/'
常见问题解答
- 我想使用被列入黑名单的文件系统。加载模块安全吗?
- 最重要的是,请确保您要使用的媒体来自可信来源(例如,您可能自己创建了它)。如果有疑问,请不要取消模块的黑名单(请参阅#取消黑名单),而只是加载它一次以访问您当前需要访问的媒体。这样可以避免将来通过自动加载机制被利用。
- 模块XYZ被列入黑名单。这是否意味着该模块在上游未维护或已放弃,或者代码质量很差?
- 不,绝对不是。如#受支持的文件系统部分所述,所有SUSE不正式支持的文件系统模块默认都被列入黑名单。其中许多模块在上游积极维护。
- 我想使用被列入黑名单的文件系统。我如何知道它是否容易受到#安全中描述的漏洞的攻击?
- 评估任何给定内核模块的漏洞利用性,即使对于安全专家来说也非常困难。您基本上必须相信自己的常识判断。如果您想调查,请检查文件系统是否在上游Linux内核中积极开发,以及它是否在内核的MAINTAINERS文件中提供相同的供应商和标识信息。