Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-41285-OpenBSD-v6daemons-go-brrr — 一个长度为零的 IPv6 ND 选项。一个缺失的检查。守护进程向后遍历并活在循环中。已报告给 OpenBSD,已修复,已分配 CVE。 | Kitploit
工具/GitHubGitHub/rat5ak/cve-2026-41285-openbsd-v6daemons-go-brrr
漏洞分析漏洞利用模糊测试网络安全无线安全
GitHubrat5ak/cve-2026-41285-openbsd-v6daemons-go-brrr

CVE-2026-41285-OpenBSD-v6daemons-go-brrr

一个长度为零的 IPv6 ND 选项。一个缺失的检查。守护进程向后遍历并活在循环中。已报告给 OpenBSD,已修复,已分配 CVE。

查看仓库

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
64个月前尚未审核
分享

CVE-2026-41285:一包即杀死OpenBSD上的IPv6

来自本地网络的一个精心构造的ICMPv6数据包会永久挂起slaacd和/或rad。IPv6 SLAAC地址自动配置将失效,直到有人手动重启守护进程。无需认证,无需权限,只需18字节的ICMPv6负载。

CVECVE-2026-41285
漏洞类别整数下溢导致的无限循环
根本原因ND选项解析器执行nd_opt_len * 8 - 2时未检查len==0
受影响组件sbin/slaacd/engine.c,usr.sbin/rad/engine.c
影响IPv6 SLAAC(slaacd)或RA服务(rad)的永久拒绝服务
所需条件同一L2网络段上的任意设备
测试环境OpenBSD 7.8 GENERIC amd64

漏洞细节

RFC 4861 §4.6规定长度为0的ND选项无效,必须静默丢弃。内核自身的nd6_options()(位于sys/netinet6/nd6.c)能正确处理这一点。但在该检查生效之前,原始ICMPv6数据包仍然会被传递到用户态套接字。

slaacd和rad自身会解析ND选项。循环看起来像这样:

root@kitploit:~
while (len > 0) {
    // ...
    optlen = nd_opt->nd_opt_len * 8 - 2;  // nd_opt_len 是 uint8_t
    if (optlen > len)
        break;
    len += 2;
    // 将指针向前移动 optlen... 其值为从 int 提升而来的 (uint32_t)-2
}

当nd_opt_len == 0时:表达式0 * 8 - 2提升为int → -2。守卫条件(-2 > len)始终为假(有符号比较,len为正数)。然后执行len += 2,指针向后回退2字节。循环永远不会前进。CPU占用率飙升至100%。永远持续。

内核验证了自己的副本。用户态守护进程收到了原始的未处理数据。没有人告知slaacd。

影响

  • 一个数据包 → slaacd引擎陷入无限循环,CPU占用100%
  • 后续所有RA被忽略 → 无法配置新的SLAAC地址
  • 现有地址最终过期(生命周期耗尽,无法续期)
  • 所有由slaacd管理的接口上的IPv6连接逐渐死亡
  • 针对rad的相同攻击:一个精心构造的RS会终止链路的RA服务
  • 恢复需要手动执行rcctl restart slaacd或重启系统

PoC

root@kitploit:~
python3 poc/kill_slaacd.py <interface>

需要scapy。发送一个路由器通告,其中包含一个nd_opt_len = 0的ND选项。仅此而已。选项类型无关紧要(PoC使用类型200/未知)。

获取完整的端到端证明(展示SLAAC工作 -> 攻击 -> SLAAC死亡):

root@kitploit:~
python3 poc/prove_dos.py

证据

root@kitploit:~
── 攻击前 ──
  SLAAC地址: 2001:db8:1:0:df6f:edeb:6e3a:2640, ...
  引擎CPU: 0.0%

── 发送一个数据包后 ──
  引擎CPU: 23.1% → 43.3%(持续攀升)
  发送带2001:db8:2::/64的新RA → 未配置地址
  slaacd已死亡。IPv6自动配置:死亡。

先例

与CVE-2022-27881和CVE-2022-27882(早期的slaacd引擎无限循环,同样是ND选项解析问题)相同的攻击面。这是同一类漏洞的新实例——之前的修复并未涵盖所有解析循环。

修复

在执行算术运算前检查nd_opt_len == 0。跳出循环。这正是内核在nd6_options()中已经做的:

root@kitploit:~
if (nd_opt->nd_opt_len == 0)
    break;  // 或:goto bad;

针对slaacd的parse_ra()、debug_log_ra()以及rad的RS解析器的建议补丁——所有三个循环都需要相同的单行守卫。

时间线

  • 2026-04-12:向[email protected]报告,附带PoC和补丁
  • 2026-04-20:MITRE分配CVE-2026-41285

别犯傻

这是一个本地网络的拒绝服务攻击。如果你与运行slaacd的OpenBSD机器位于同一L2网段,一个数据包就能冻结其IPv6。不要向你未拥有的网络发送它。如果你运行OpenBSD,请检查补丁或自行添加len==0守卫。


Daniel Wade - GitHub · Twitter/X · Bluesky · nadsec.online

下载工具