JohannesLks/CVE-2026-35330
GitHub: JohannesLks/CVE-2026-35330
strongSwan EAP-SIM/EAP-AKA 属性解析器整数下溢导致的预认证堆缓冲区溢出漏洞(CVE-2026-35330)的概念验证代码。
Stars: 0 | Forks: 0
# CVE-2026-35330
strongSwan EAP-SIM / EAP-AKA 属性解析器由于整数下溢导致的预认证堆缓冲区溢出。
## 描述
`src/libsimaka/simaka_message.c:419` 中的 `parse_attributes()` 读取 TLV 头部,其 `length` 字节以 4 字节为单位计数。对于 `AT_RAND` / `AT_ENCR_DATA` 分支:
```
if (hdr->length * 4 > in.len || in.len < 4)
return invalid_length(hdr->type);
data = chunk_create(in.ptr + 4, hdr->length * 4 - 4);
```
当 `hdr->length == 0` 时,`hdr->length * 4 - 4` 会下溢为 `(size_t)0xFFFFFFFFFFFFFFFC`。随后的 `add_attribute()` 会使用这个接近 `SIZE_MAX` 的长度调用 `malloc(sizeof(attr_t) + len)` 和 `memcpy(..., data.ptr, len)` —— ASan 在 `libsimaka.so` 内部拦截了越界的 `memcpy`(`negative-size-param`)。
该崩溃是通过调用 `simaka_message_create_from_payload(...)` 随后调用 `msg->parse(msg)` 触发的。此过程不需要任何认证;EAP-SIM/AKA 调度器会在任何对等端凭据检查之前解析有效载荷。
受影响版本:strongSwan <= 5.9.13。已在 upstream master 提交 `aa5aaebc33` (2026-04-21) 中修复。
## 使用方法
```
gcc -fsanitize=address -g -O0 poc.c -lsimaka -lstrongswan -o poc
./poc
```
该 PoC 链接了已安装的 `libsimaka.so` 和 `libstrongswan.so`,并直接调用其公共 API。需要 strongSwan 开发包中的头文件(在安装了 `libstrongswan-dev` 的情况下,通常使用 `-I/usr/include` 即可)。
## 环境要求
- 目标:strongSwan `libsimaka.so` <= 5.9.13(由 upstream tarball 构建;部分发行版已移植了修复补丁)
- 工具链:支持 AddressSanitizer 的 `gcc`
## 参考文献
- https://github.com/strongswan/strongswan/commit/aa5aaebc33
- https://nvd.nist.gov/vuln/detail/CVE-2026-35330
## 法律声明
本项目基于 GNU GPLv3 协议发布。
其仅供防御性安全研究、教育及授权测试使用。未经所有者明确许可,请勿将此代码用于系统或服务。
未经授权的使用可能违反适用法律。作者不授予测试第三方系统的许可,且不对滥用行为承担责任。
有关保证和责任条款,请参见 LICENSE 文件。
标签:0day, AddressSanitizer, ASan, CISA项目, CVE-2026-35330, EAP-AKA, EAP-SIM, IPSec, libsimaka, PoC, strongSwan, VPN安全, 内存破坏, 堆缓冲区溢出, 客户端加密, 情报收集, 整数下溢, 暴力破解, 漏洞研究, 网络协议分析, 网络安全, 隐私保护, 预认证