文章总结: 文档详细分析libssh2库CVE-2026-55200漏洞,该漏洞因未检查SSH数据包长度字段导致整数溢出,可能引发远程代码执行。研究提供算术验证器、恶意SSH服务器脚本及本地RCE利用框架,验证通过控制packet_length=0xffffffff可实现19字节异常分配。文档包含完整PoC代码、修复方案及多平台测试指南,具备较高实操价值。 综合评分: 85 文章分类: 漏洞分析,漏洞POC,渗透测试,红队,安全工具
libssh2 CVE-2026-55200 PoC 和本地 RCE
Ots安全
2026年6月24日 11:01 广东
在小说阅读器读本章
去阅读
威胁简报
恶意软件
漏洞攻击
此目录包含针对 CVE-2026-55200 的本地研究成果,CVE-2026-55200packet_length是 libssh2ssh2_transport_read()传输解析器路径中未检查的 SSH 条件。
研究状态:算术验证器、加密 SSH 触发框架和受控本地 RCE 框架已验证。
项目地址:
https://github.com/bikini/exploitarium/tree/main/libssh2-cve-2026-55200-poc
概括
libssh2 1.11.1 及更高版本在一个完整的数据包解密路径中接受了攻击者控制的 SSH 数据包长度,而没有首先强制执行 RFC 规定的 libssh2 数据包最大长度。
易受攻击的源结构如下:
total_num = 4packet_length = decoded SSH packet_length fieldreject only if packet_length < 1total_num += packet_length + mac_len + auth_lenreject if total_num > 35000 or total_num == 0allocate total_num bytes
使用packet_length=0xffffffff、mac_len=0和auth_len=16,易受攻击的 C 表达式可以产生分配大小19:
packet_length + mac_len + auth_len == 15 modulo 2^324 + 15 == 19
原始数据packet_length仍然保留。即使在分配决策已经做出之后,0xffffffff后续的完整数据包处理仍然可以使用从数据包长度推导出的大小,包括样式长度。packet_length – 1
上游修复packet_length > LIBSSH2_PACKET_MAXPAYLOAD在添加之前就被拒绝了。
文件
- poc/cve_2026_55200_probe.c- 独立的 C11 算术验证器。
- poc/libpwn_cve_2026_55200_server.py- 最小的恶意 SSH 服务器/触发器脚手架。
- poc/libpwn_local_rce_harness.c- 受控的本地易受攻击目标,模拟了封装分配到控制模式。
- poc/libpwn_local_rce_exploit.py- 本地漏洞利用驱动程序,覆盖漏洞利用回调并创建 RCE 证明文件。
- evidence/2026-06-23-local-harness-output.txt- 早期算术验证证据。
受影响的源路径
受影响的路径位于:
src/transport.c:ssh2_transport_read()
修复方案已在上游提交中实现:
97acf3dfda80c91c3a8c9f2372546301d4a1a7a8
相关修复程序packet_length > LIBSSH2_PACKET_MAXPAYLOAD在完整数据包路径中易受攻击的添加部分之前添加了一个保护措施。
算术验证器
Linux、macOS、WSL 或 MinGW:
gcc -std=c11 -Wall -Wextra -O0 -g -o cve_2026_55200_probe poc/cve_2026_55200_probe.c./cve_2026_55200_probe
使用 MinGW 的 Windows PowerShell:
gcc -std=c11 -Wall -Wextra -O0 -g -o cve_2026_55200_probe.exe .\poc\cve_2026_55200_probe.c.\cve_2026_55200_probe.exe
实用模式:
./cve_2026_55200_probe --benign./cve_2026_55200_probe --native./cve_2026_55200_probe --check./cve_2026_55200_probe --packet-length 0xffffffff --mac-len 0 --auth-len 16
预期默认证明条件:
vulnerable32_decision=acceptedvulnerable32_allocation=19fixed32_decision=rejected: out of boundarynative_unpatched_decision=acceptednative_note=source-shaped integer expression wraps before assignment into 64-bit size_tresult=PASS
恶意 SSH 触发
本地密码学和算术自测:
python poc/libpwn_cve_2026_55200_server.py --self-test
最小 SSH 握手、密钥派生、服务器到客户端序列号和加密触发器的回环测试:
python poc/libpwn_cve_2026_55200_server.py --loopback-test --hold-open 0
作为一次性恶意服务器运行,接受挑战客户端的测试:
python poc/libpwn_cve_2026_55200_server.py --serve --listen-host 0.0.0.0 --listen-port 2222
–listen-host针对您的实验室实例进行更改–listen-port。脚本顶部还包含以下内容:
HOST = ""PORT = 0
故意打开。
服务器协商curve25519-sha256RSA 主机密钥认证,[email protected]然后发送格式错误的加密服务器到客户端数据包,其解密后的 SSHpacket_length为0xffffffff。
受控局部 RCE 线束
#构建本地易受攻击的目标:gcc -O0 -g -Wall -Wextra -o poc/libpwn_local_rce_harness poc/libpwn_local_rce_harness.c #使用 MinGW 的 Windows PowerShell:gcc -O0 -g -Wall -Wextra -o poc\libpwn_local_rce_harness.exe poc\libpwn_local_rce_harness.c #运行本地漏洞利用驱动程序:python poc/libpwn_local_rce_exploit.py --harness ./poc/libpwn_local_rce_harness --proof ./poc/libpwn_rce_proof.txtcat poc/libpwn_rce_proof.txt #Windows PowerShell: python poc\libpwn_local_rce_exploit.pyGet-Content poc\libpwn_rce_proof.txt #预期证据:
RCE_PROOF=PASS
libpwn-rce-verified
该测试框架通过将模型化的 19 字节分配状态溢出到回调指针并创建来证明本地命令的执行libpwn_rce_proof.txt。
64 位注释
64 位 Linux 目标仍然是此漏洞的潜在目标。在未打补丁的 libssh2 源代码中,易受攻击的分支会packet_length + mac_len + auth_len先使用 32 位/整数操作数进行计算,然后再将结果添加到内存分配中size_t,因此会0xffffffff + 0 + 16循环到内存分配中15,最终4 + 15变成内存分配大小19。
验证状态
已在本地核实:
python poc\libpwn_cve_2026_55200_server.py --self-testpython poc\libpwn_cve_2026_55200_server.py --loopback-test --hold-open 0gcc -O0 -g -Wall -Wextra -o poc\libpwn_local_rce_harness.exe poc\libpwn_local_rce_harness.cpython poc\libpwn_local_rce_exploit.pypython -m py_compile poc\libpwn_cve_2026_55200_server.py poc\libpwn_local_rce_exploit.py
限制
libpwn_cve_2026_55200_server.py这是一个经过本地验证的 CVE 触发器/框架。将其转化为可靠的、针对特定挑战的 flag 读取/远程代码执行 (RCE) 链,仍然取决于目标二进制文件、分配器行为、缓解措施以及挑战如何调用 libssh2。
libpwn_local_rce_harness.c这是一个受控的验证目标,并非适用于所有 libssh2 部署的通用漏洞利用程序。它展示了 CTF/HTB 服务仍需匹配或调整的漏洞利用模式。
参考
- CVE记录:https://www.cve.org/CVERecord?id=CVE-2026-55200
- NVD条目:https://nvd.nist.gov/vuln/detail/CVE-2026-55200
- 上游修复:https://github.com/libssh2/libssh2/commit/97acf3dfda80c91c3a8c9f2372546301d4a1a7a8
- 上游公关:https://github.com/libssh2/libssh2/pull/2052
- VulnCheck 安全公告:https://www.vulncheck.com/advisories/libssh2-out-of-bounds-write-via-unchecked-packet-length-in-transport-c
END
公众号内容都来自国外平台-所有文章可通过点击阅读原文到达原文地址或参考地址
排版 编辑 | Ots 小安
采集 翻译 | Ots Ai牛马
公众号 | AnQuan7 (Ots安全)
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Ots安全 《libssh2 CVE-2026-55200 PoC 和本地 RCE》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论