返回首页

CVE-2026-4247 FreeBSD TCP DoS 漏洞

FreeBSD 中的 CVE-2026-4247 漏洞允许在处理 TCP Challenge ACK 时通过 mbuf 泄漏进行远程 DoS。描述了攻击向量、临时 sysctl 修复和 14/15 分支补丁。考虑到发行版的变化,建议更新到 64 位版本。

FreeBSD:通过 TCP Challenge ACK 的 DoS(CVE-2026-4247)
Advertisement 728x90

## FreeBSD 中的 CVE-2026-4247 漏洞:TCP 挑战 ACK 处理过程中的 mbuf 泄漏

FreeBSD 团队于 2026 年 3 月 26 日发布了 CVE-2026-4247 的详细信息——这是一个可以通过 TCP 连接中的 mbuf 泄漏实现远程 DoS 攻击的漏洞。该问题影响已建立连接中意外 TCP 段的处理。

TCP 协议在接收到意外数据包时会生成挑战 ACK,以验证其合法性。生成速率受 sysctl 参数限制:net.inet.tcp.ack_war_timewindow(默认 1000 ms)和 net.inet.tcp.ack_war_cnt(5)。在此时间窗口内,仅处理前 5 个数据包,其余忽略。

tcp_subr.c 中的 tcp_respond() 函数会构建挑战 ACK 并消耗一个 mbuf。如果不需要该 ACK,则释放 mbuf。攻击者通过伪造数据包,会导致超出限制的数据包丢失 mbuf——每个数据包丢失一个。

Google AdInline article slot

所有 FreeBSD TCP 堆栈均受影响:基础堆栈、RACK、BBR。基础堆栈会发送更多 ACK,从而放大攻击效果。

攻击向量和利用条件

攻击在以下条件下可能实现:

  • 位于 TCP 连接路径上(MITM)。
  • 向目标建立自己的连接。

外部攻击者必须猜测 IP 地址、端口和序列号来进行伪造。由于复杂度高,成功率较低。

Google AdInline article slot

每个超出限制(5 个/秒)的伪造数据包都会导致一个 mbuf 泄漏,从而耗尽 mbuf 池并引发 DoS。

临时保护措施

禁用 ACK 速率限制:

sysctl net.inet.tcp.ack_war_timewindow=0

将其添加到 /etc/sysctl.conf 以实现持久化。

Google AdInline article slot

此措施可消除泄漏,但会因处理所有数据包而增加 CPU 负载。

永久修复和分支

更新到已应用补丁的分支(提交和修订):

  • stable/15/ 1fddb5435315 (stable/15-n282699)
  • releng/15.0/ de9e5d82581e (releng/15.0-n281011)
  • stable/14/ b45e7530ffb9 (stable/14-n273839)
  • releng/14.4/ 44dd8b58394b (releng/14.4-n273676)
  • releng/14.3/ a9cba5321021 (releng/14.3-n271476)

FreeBSD 发布计划

FreeBSD 15.0 于 2025 年 12 月 2 日发布。分支支持期缩短至 4 年,每 2 年推出新分支。每分支每 6 个月发布中间版本,总周期为 3 个月,同时并行开发两个分支。

FreeBSD 14.4 于 2026 年 3 月 10 日发布。14.x 分支是 32 位平台的最后一个。FreeBSD 15+ 仅支持 64 位,并为遗留应用提供 COMPAT_FREEBSD32 兼容性。

关键点

  • 漏洞可通过 TCP 数据包伪造远程利用,导致 mbuf 耗尽。
  • 影响所有 FreeBSD TCP 堆栈;默认 ACK 限制会放大泄漏。
  • 临时修复:sysctl net.inet.tcp.ack_war_timewindow=0(以增加 CPU 使用率为代价)。
  • 补丁已合并至 stable/15、releng/15.0、stable/14 和 releng/14.x。
  • FreeBSD 14.x 标志着 32 位支持结束;请迁移至 64 位。

— Editorial Team

Advertisement 728x90

继续阅读