漏洞概述 Bumsrakete 是 FreeBSD 中一个极其严重的内核漏洞,被描述为“历史上最大的 FreeBSD 页面缓存写入原语”。该漏洞允许任何未特权用户在默认 FreeBSD 13.0 系统(amd64、arm64、riscv 架构)上通过 系统调用将攻击者控制的字节写入任何文件的页面缓存中。此漏洞绕过了所有正常的文件权限、挂载选项和 检查。 影响范围 攻击向量:本地(任何已登录用户,无需特殊组) 攻击复杂度:低(仅需一个 C 文件和两个系统调用,无需竞态条件) 所需权限:无(uid 1001 即可) 用户交互:无 影响范围:改变(页面缓存写入 → 任何 SUID-root 二进制文件 → root) 完整性影响:高(每个可读文件现在都是攻击者可写的文件) 机密性影响:高(通过 LPE 泄露) 可用性影响:高(root shell 可以随意崩溃任何程序) chflags schg respect:被绕过 修复方案 补丁可用:页面中提到有补丁可用,但具体补丁内容未提供。 CVE 编号:CVE-2020-45257 FreeBSD-SA-20:26.ktls:已发布 技术细节 1. sendfile(2) 产生 vnode-backed EXTPG mbufs - 代码示例: 2. TCP_KTLS_ENABLE 不检查特权 - 代码示例: 3. 解密通过 PHYS_TO_DMAP 就地运行 - 代码示例: 利用代码 构造: - 在线密文是 交付的内容,即文件的当前字节。接收器的 AES-GCM 解密计算 。我们选择 K 和 IV,因此我们知道结果。为了获得有效的 GMAC 标签用于在线密文,我们加密 ,这样 EVP_EncryptUpdate 产生 和正确的标签。 - 代码示例: 总结 Bumsrakete 是一个极其严重的 FreeBSD 内核漏洞,允许未特权用户通过 系统调用将攻击者控制的字节写入任何文件的页面缓存中。该漏洞绕过了所有正常的文件权限和 检查,影响范围广泛,包括完整性、机密性和可用性。补丁已发布,但具体补丁内容未提供。利用代码展示了如何通过构造特定的密文和密钥来利用该漏洞。