JohannesLks/CVE-2026-35333

GitHub: JohannesLks/CVE-2026-35333

针对 strongSwan RADIUS 属性解析器零长度字段导致的预认证无限循环漏洞的概念验证工具,可远程触发拒绝服务。

Stars: 0 | Forks: 0

# CVE-2026-35333 strongSwan RADIUS 属性迭代器预认证无限循环 / 远程 DoS。 ## 漏洞描述 `src/libradius/radius_message.c:247-271` 中的 `attribute_enumerate()` 接受的 RADIUS 属性的 `length` 字节小于 `sizeof(rattr_t)` (2)。当 `length == 0` 时: - `data->len = next->length - sizeof(rattr_t)` 下溢为 `(size_t)-2` - `this->left -= next->length` 即 `left -= 0` —— 计数器永远不会递减 - `this->next += next->length` 即 `next += 0` —— 指针永远不会前进 迭代器在每次迭代中都返回相同的伪造属性, 导致调用方的 `while (enumerate(...))` 循环挂起。 `eap_radius_dae.c` 中的 DAE 接收回调在根据 RADIUS 代码进行分发之前,会调用 `request->verify(..., NULL, secret, ...)`。对于 `code == Access-Request`,`verify()` 会跳过 Response-Authenticator MD5 检查,并遍历属性迭代器以 查找 `Message-Authenticator` —— 因此零长度属性会将 解析器困住,这发生在检查共享密钥**之前**。该攻击无需认证。 一个 UDP 数据包即可将一个 charon 工作线程永久占满至 100% CPU。 重复 N 次即可耗尽所有 N 个工作线程。 受影响版本:strongSwan <= 5.9.13。已在上游 master 提交 `e067d24293` (2026-04-21) 中修复。 ## 用法 ``` python3 poc.py --target --port 3799 ``` ## 环境要求 - 目标:加载了 `eap-radius` 插件且 `dae.enable = yes`(监听 UDP/3799)的 strongSwan charon - 攻击者:可访问 UDP/3799 网络连接,Python 3(仅限标准库) ## 参考文献 - https://github.com/strongswan/strongswan/commit/e067d24293 - https://nvd.nist.gov/vuln/detail/CVE-2026-35333 ## 法律声明 本项目基于 GNU GPLv3 发布。 其旨在用于防御性安全研究、教育和授权 测试。未经所有者明确许可,请勿将此代码用于攻击系统或服务。 未经授权的使用可能违反适用法律。作者不授予测试 第三方系统的权限,并且对滥用行为不承担责任。 有关保证和责任条款,请参阅 LICENSE 文件。
标签:charon, CVE-2026-35333, DoS, eap-radius, IPsec, PoC, Python, RADIUS, strongSwan, UDP协议, VPN, 内核驱动, 拒绝服务, 整数下溢, 无后门, 无限循环, 暴力破解, 未授权攻击, 漏洞复现, 网络协议, 网络安全, 远程漏洞, 隐私保护, 预认证