FreeBSD kTLS 本地提权漏洞 CVE-2026-45257 的公开利用代码已发布
sec随谈
sec随谈
sec随谈
2026年6月22日 09:37
北京
在小说阅读器读本章
去阅读
概要
FreeBSD 已修复一个内核漏洞 CVE-2026-45257,该漏洞可使任意非特权用户获得本地 root 权限。这一 FreeBSD kTLS 漏洞存在于内核 TLS 接收路径中。研究人员在安全公告发布的同时,即公开了完整的技术细节和可运行的概念验证利用代码。因此,修复工作刻不容缓。
漏洞的重要性
该漏洞可可靠地实现本地权限提升,无需竞争条件,也无需特殊配置,仅凭默认的 GENERIC 内核配置即可触发。因此,任何具有默认能力的本地 shell、Web 托管容器或 jail 环境均受影响。研究人员将其与 Linux 的 Dirty Pipe 漏洞相提并论,这一比较十分贴切。写入操作通过内核直接映射到达文件的后备页面,从而完全绕过常规文件系统层,跳过文件权限检查、只读保护以及 chflags schg 不可变标志。在 UFS 文件系统上,损坏甚至会持久化到磁盘。多租户 FreeBSD 主机面临的风险最为严峻。完整的漏洞披露信息已于2026年6月10日发布至公开的 oss-security 邮件列表。
攻击原理
kTLS 接收路径会对每条 TLS 记录进行原地解密,并假设保存传入数据的缓冲区是私有且可安全覆写的。然而,对于通过 sendfile(2) 排队的数据,这一假设不成立。sendfile 构建的文件后备缓冲区直接指向页面缓存。若通过回环连接发送此类数据,内核守卫会对缓冲区进行重新映射而非复制,重映射后的缓冲区仍引用原始物理页面。
与此同时,在接收端启用 kTLS 无需任何权限检查,因此非特权用户可自行开启并提供自选的 AES-GCM 密钥。原地解密随即对页面缓存页面本身执行,由于攻击者控制密钥,便可控制写入的每一个明文字节,这些字节将直接落入缓存文件中。若覆写一个具有 setuid root 属性的二进制文件,即可获得 root shell。已发布的利用代码约在 1.5 秒内完成攻击。
内核防护措施失效的原因
FreeBSD 内置了三项本应阻止此类攻击的检查机制:第一项会将小型缓冲区复制至安全位置,但仅适用于低于特定大小阈值的情况;第二项会在回环传输时转换缓冲区,但执行的是页面重映射而非字节复制;第三项则完全未检查文件后备页面的情况。每项防护措施在此场景下均存在不足。
受影响版本
该漏洞代码最早于2021年4月随 FreeBSD 13.0 发布。此次 FreeBSD kTLS 漏洞影响 13.0 至 13.4、14.0 至 14.2 以及 15.0-RELEASE 版本,FreeBSD 12.x 及更早版本不受影响。所有直接映射架构均在受影响范围之内,包括 amd64、arm64 和 riscv。
补丁修复与缓解措施
FreeBSD 已在所有受支持分支中修复该漏洞。官方安全公告 FreeBSD-SA-26:26.ktls 列出了详细的补丁和升级命令,请尽快应用更新并重启系统。若暂时无法立即修复,可通过两个 sysctl 参数作为临时缓解措施:将 kern.ipc.mb\_use\_ext\_pgs 设置为 0 可禁用 EXTPG sendfile 快速路径;将 kern.ipc.tls.enable 设置为 0 则可完全关闭 kTLS。上述任一设置均可在升级完成前封堵该漏洞。
目前尚未确认存在在野利用行为。然而,公开的概念验证代码已大幅降低了攻击者的利用门槛。研究人员的披露网站对该漏洞进行了详细解析。对于基于 FreeBSD 构建的设备、防火墙和存储系统而言,补丁更新节奏尤为关键,请将此漏洞作为紧急事项优先处理。
参考链接:
https://www.freebsd.org/security/advisories/FreeBSD-SA-26:26.ktls.asc
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论