未认证的远程攻击者可通过 nginx 过度宽松的版本正则表达式 走私
login令牌,从而访问 AOS-CX 管理 REST API, 暴露基于 OVSDB 的配置面(包括哈希后的 管理员凭据)。
| 分支 | 受影响版本 | 已修复版本 |
|---|---|---|
| 10.17.x | ≤ 10.17.0001 | 10.17.1001 |
| 10.16.x | ≤ 10.16.1020 | 10.16.1030 |
| 10.13.x | ≤ 10.13.1160 | 10.13.1161 |
| 10.10.x | ≤ 10.10.1170 | 10.10.1180 |
python3 detect.py <host[:port]>
发送一次只读 GET 请求。输出 PATCHED、VULNERABLE 或 UNKNOWN。不会做任何更改。适合用于资产清点扫描。
python3 bypass_demo.py <host[:port]>
对同一端点发送两次请求——一次正常请求,一次走私请求——并排打印响应码。不会改变设备状态。关于原因,请参阅 docs/root-cause.md。
python3 exploit.py <host[:port]>
仅适用于 AOS-CX 10.10.x。 通过未认证路径创建检查点,读取完整的运行配置,并打印 admin 哈希。跨分支绕过在所有受影响版本上均有效,但该配置泄露链依赖于 10.10 分支特有的后端行为。检查点会持久保存在设备上——通过绕过可访问的 REST 端点不接受 DELETE;如有需要,请通过控制台/授权会话将其删除。
Python 3.8+ 和 requests:
pip install requests
由 4252nez 独立完成的补丁发布后分析与 PoC——相关文章见 OffSecKit。原始漏洞由 moonv 通过 HPE Bugcrowd 项目上报;本仓库与该报告无任何关联。
MIT —— 参见 LICENSE。
| 文件 | 用途 |
|---|
detect.py | 非破坏性补丁状态检查 |
bypass_demo.py | 绕过机制的教学式并排对比 |
exploit.py | 配置泄露 PoC(创建检查点) |
detection/nginx-access.md | nginx 访问日志的特征签名 |
detection/suricata.rules | 针对走私 URI 形态的 Suricata 规则 |
docs/root-cause.md | 简要根因说明 |
docs/patch-diff.md | 以单个 diff 呈现的修复 |