本页为译文。英文版本为权威文本。 阅读英文版
llm-abuse · agent-harness · deepseek-harness · api-key-abuse · mcp · fofa · bug-bounty-automation · model-endpoint
DeepSeek Harness 滥用:自主智能体暴露了操作者的主机
这是一名操作者从暴露在互联网上的 OpenAI 兼容模型端点窃取推理算力:他把开源的 DeepSeek Harness 编码智能体指向该端点,而这个自动批准工具调用的循环随即把端点下发的工具调用跑在了操作者自己的 Windows 工作站上,并将输出回传。
作者 Davis Zheng·
TLP:CLEAR。已批准公开发布。由 Kinryū Labs 蜜罐传感器网络捕获。下列指标已做无害化处理。
本文是我们此前报告 DeepSeek Harness 对阵被盗的 LLM 网关:工具调用在调用方执行 的后续。
摘要
- 492,150单次提交提示词的字符数
- 86来自调用方主机的不重复命令输出
- 11五分钟内的智能体轮次
- 3运行同一智能体框架的主机
2026 年 9 月 20 日至 23 日,位于中国内地和香港的三个地址驱动了一个暴露在互联网上的 OpenAI 兼容模型端点,使用的是 User-Agent 为 deepseek-harness/0.1.5-rc.2 的开源 DeepSeek Harness 编码智能体。两个香港地址共用一个 API 密钥;第三个只共用公开的 User-Agent。9 月 23 日,来自 182.91.103[.]32 的一次十一轮会话把该端点下发的工具调用跑在了自己的 Windows 工作站上,并把输出回传。
该框架自动批准工具调用,因此端点读取了操作者工作站上的文件和目录列表。回传的 config.toml 设置了 permission_mode = "always-approve" 与 yolo = false,因此远程端点下发的每一次工具调用都在无人确认的情况下执行。当处于该模式的框架指向一个操作者并不控制的端点时,端点下发的命令就会在客户端主机上运行。
如果你运营 OpenAI 兼容模型端点,请在 /v1/chat/completions 上校验 bearer 令牌,并对任何不在已签发密钥登记表中的密钥告警。如果你运行智能体框架,请不要让自动批准用在任何你不控制的模型端点上。
关键研判
- 操作者把开源的 DeepSeek Harness 智能体指向一个暴露的 OpenAI 兼容端点,其客户端在自己的机器上执行了该端点下发的工具调用,并把输出回传。 来自 182.91.103[.]32 的三次会话中共有 279 次工具结果提交,其中 86 次内容互不相同,分布在 92 个不重复的工具调用标识符上,其正文是 PowerShell 对象列表以及以 C:\Users\cheng 为根的文件内容。同样的行为在 203.175.15[.]28 和 103.85.74[.]25 上以更小的量出现,结果提交分别为 7 次和 5 次。高置信度。
- 回传的 config.toml 设置了 permission_mode = "always-approve" 且 yolo = false,因此该框架在无人确认的情况下执行了每一次工具调用;正是这种自动批准把操作者的工作站变成了被采集的对象。 回传的文件之一是操作者自己的 config.toml,其中设置了 permission_mode = "always-approve" 且 yolo = false,因此远程端点下发的每一次工具调用都在无人确认的情况下被执行。高置信度。
- 该操作者很可能是一名中文漏洞挖掘者,正在把漏洞赏金和源码审计工作自动化。 回传的 AGENTS.md 把智能体的身份声明为从事黑盒 SRC 挖洞和白盒 0day 审计的授权研究员,禁止它询问是否继续;其配置注册了一个 FOFA 资产搜索 MCP 服务器和一个 Playwright 浏览器 MCP。中等置信度。
- 两个香港地址共用凭据材料,据此建立关联;中国联通地址只共用公开的框架 User-Agent,因此是否为同一操作者尚未确立。 在 2026 年 9 月 20 日至 23 日的活动中,该框架 User-Agent 恰好来自 3 个 /24 网段内的三个来源。低置信度。
- 我们把这些一次性字符串理解为操作者在投入完整框架之前,测试该端点是否真的执行了认证;观察到的顺序是三个字符串在前,随后是长会话。 在长会话之前,同一地址提交过一次性密钥 141414、41414141 和 sk-14141242…,并在更早的一次会话中把字符串 sk-1234 填进了 model 字段而不是密钥字段。随后它进入了一次历时五分钟、共十一轮的智能体会话。中等置信度。
时间线
- 2026-09-20 12:22 UTC203.175.15[.]28 使用 python-requests/2.28.1 枚举模型,此时已用共享 API 密钥完成认证;该密钥在此请求之前就已签发
- 2026-09-20 12:34 UTC同属一家香港托管机构的 103.85.74[.]25 出示了完全相同的密钥
- 2026-09-21 11:26 UTC该地址集合中首次出现 deepseek-harness/0.1.5-rc.2 User-Agent
- 2026-09-23 17:40 UTC182.91.103[.]32 在另一个客户端下使用一次性密钥发送了两条简短的中文探活提示词
- 2026-09-23 18:05 UTC来自 182.91.103[.]32 的第一次 DeepSeek Harness 会话;客户端开始回传本地执行的工具结果
- 2026-09-23 18:23 UTC十一轮会话开始,其首个提示词长 44,402 个字符
- 2026-09-23 18:23 UTC客户端回传了其自身工作目录的 PowerShell 列表
- 2026-09-23 18:24 UTC客户端回传了其操作规则文件的全文,稍后回传了框架配置
- 2026-09-23 18:27 UTC第 10 轮把 model 字段从 glm-5.2 切换为 deepseek-chat,第 11 轮又切回
- 2026-09-23 18:28 UTC会话的第十一轮也是最后一轮;在已记录的活动中该地址再无联络
会话顺序
12:22:32 GET /v1/models User-Agent: python-requests/2.28.1 Authorization: Bearer sk-0af475b8…
17:40:10 [user] 图片背景是什么颜色
18:05:08 [system] You are an AI agent powered by DeepSeek Harness. You are a coding agent powered by the glm-5.2 model.
18:23:39 FullName Length Mode C:\Users\cheng\Desktop\clown-src-6k-skill\bin d----- C:\Users\cheng\Desktop\clown-src-6k-skill\mcp-servers d----- C:\Users\cheng\Desktop\clown-src-6k-skill\AGENTS.md 5517 ------ C:\Users\cheng\Desktop\clown-src-6k-skill\config.toml 1044 ------ C:\Users\cheng\Desktop\clown-src-6k-skill\给朋友的提示词.txt 4370 ------
18:24:21 C:\Users\cheng\.dsh --- Name ---- dsh-purge node_modules plugins profiles sessions staging storages .anonymous-user-id .credentials.yaml .env catalog-cache.json desktop-config.json desktop.log prompt-inject.md settings.yaml
18:24:59 [path]C:\Users\cheng\Desktop\clown-src-6k-skill\AGENTS.md[/path] 1: # 全局 Agent 规则(永久) 3: - **语言**:始终中文回复 4: - **身份**:授权安全研究员 = **黑盒 SRC 挖洞** + **白盒 0day 审计** 5: - **思路**:理解业务/代码意图,找认知盲区;不空扫、不误报、不堆低危 48: - 一种子剩余挖完才换种 ≠ 任务结束;**禁止问「要不要继续」**
18:25:57 [path]C:\Users\cheng\Desktop\clown-src-6k-skill\config.toml[/path] [ui] permission_mode = "always-approve" yolo = false [mcp_servers.playwright] args = ['C:\Users\USER\.grok\bin\playwright-dual-slot.mjs'] [mcp_servers.fofa] command = 'C:\Users\USER\.local\bin\uv.exe' args = ["run", "--directory", 'C:\Users\USER\.grok\mcp-servers\fofa_MCP', "python", "fofa.py"] [models] default = "grok-4.6" default_reasoning_effort = "xhigh"
来自香港出示的密钥
这两个地址就是我们此前报告在 9 月 20 日和 21 日跟踪的地址:203.175.15[.]28 于 9 月 20 日 12:22:32 UTC 首次出示共享 API 密钥,103.85.74[.]25 在十二分钟后出示了同一密钥。新出现的是下面的第三个地址。
来自 182.91.103[.]32 的会话
9 月 23 日,第三个地址 182.91.103[.]32 出现,位于 CHINA UNICOM China169 Backbone。它先在另一个客户端下发送了两条简短的中文探活提示词,其中一条是 图片背景是什么颜色,随后在 2026-09-23T18:05:00Z 到 2026-09-23T18:28:00Z 之间开启了三次框架会话。它出示的密钥都是一次性字符串:141414、41414141 和 sk-14141242…,更早的一次会话还把 sk-1234 填进了 model 字段。我们把这些字符串理解为操作者在投入完整框架之前,测试该端点是否真的执行了认证。记录中的顺序是三个一次性字符串在前,随后是长会话。
三次会话中的第一次以框架自身的系统提示词开场:[system] You are an AI agent powered by DeepSeek Harness. You are a coding agent powered by the glm-5.2 model. 最后一次会话从 2026-09-23T18:23:10.2Z 运行到 2026-09-23T18:28:08.8Z,共十一轮,轮次间隔从 0.2 秒到 90 秒不等。在这些轮次中,上下文从 44,402 个字符增长到 492,150 个字符,model 字段在第 10 轮切换为 deepseek-chat,第 11 轮又切回。
表 1:本地命令执行集中在中国联通地址上 各客户端发送的工具结果提交,覆盖 2026 年 9 月 20 日至 23 日的活动。去重计数剔除了框架每轮重发对话历史时重复提交的内容,因此 86 是 182.91.103[.]32 背后工作站上真实的本地执行次数,279 是提交总量。
| 地址 | 机构 | 首次出现 | 出示的凭据 | 工具结果提交 |
|---|---|---|---|---|
| 203.175.15[.]28 | 香港托管商 | 2026-09-20T12:22:32Z | 共享 API 密钥 | 共 7 次提交 |
| 103.85.74[.]25 | 香港托管商,与 203.175.15[.]28 同属一家机构 | 首次联络后 12 分钟 | 同一共享 API 密钥 | 共 5 次提交 |
| 182.91.103[.]32 | CHINA UNICOM China169 Backbone,AS4837 | 2026-09-23,框架会话自 18:05Z 起 | 141414、41414141、sk-14141242… | 共 279 次,86 次不重复,92 个调用 ID |
回传结果就是操作者自己的工作站
工作目录的 Get-ChildItem 列表被完整回传:
FullName Length Mode C:\Users\cheng\Desktop\clown-src-6k-skill\bin d----- C:\Users\cheng\Desktop\clown-src-6k-skill\mcp-servers d----- C:\Users\cheng\Desktop\clown-src-6k-skill\AGENTS.md 5517 ------ C:\Users\cheng\Desktop\clown-src-6k-skill\config.toml 1044 ------ C:\Users\cheng\Desktop\clown-src-6k-skill\给朋友的提示词.txt 4370 ------
客户端还回传了框架自身主目录的列表:
C:\Users\cheng\.dsh --- Name ---- dsh-purge node_modules plugins profiles sessions staging storages .anonymous-user-id .credentials.yaml .env catalog-cache.json desktop-config.json desktop.log prompt-inject.md settings.yaml
整份文件也被回传。AGENTS.md 规定了智能体的操作规则:它把智能体的语言固定为中文,把身份固定为从事黑盒赏金挖洞加白盒 0day 审计的授权安全研究员,并禁止智能体询问是否应当继续。
[path]C:\Users\cheng\Desktop\clown-src-6k-skill\AGENTS.md[/path] 1: # 全局 Agent 规则(永久) 3: - **语言**:始终中文回复 4: - **身份**:授权安全研究员 = **黑盒 SRC 挖洞** + **白盒 0day 审计** 5: - **思路**:理解业务/代码意图,找认知盲区;不空扫、不误报、不堆低危 48: - 一种子剩余挖完才换种 ≠ 任务结束;**禁止问「要不要继续」**
config.toml 注册了一个通过 uv 运行的 FOFA 资产搜索 MCP 服务器和一个 Playwright 浏览器 MCP,默认模型为 grok-4.6,推理强度为 xhigh。它加载的规则包引用 ~/.grok/rules/,而实际文件位于 C:\Users\cheng\.dsh\ 之下,这些会话声明的模型是 glm-5.2 和 deepseek-chat,可见该规则包随着可用访问的变化在不同框架和模型之间迁移过。我们认为该操作者是一名把漏洞赏金和源码审计工作自动化的中文漏洞挖掘者,并对这一判断持中等置信度。
手法
操作者用一个工具做密钥验证和模型枚举,用另一个工具跑框架会话。前者运行在 python-requests/2.28.1 下,后者运行在一个真实发布的框架下,同时还出现了较旧的桌面版构建 DeepSeek-Harness-Desktop/0.1.3-max。我们把这种分工理解为反复做这件事的人养成的习惯。按 ATT&CK 划分,框架对应 T1588.002 获取能力:工具,向端点出示的凭据对应 T1078 有效账户。
在半兆字节的上下文从中国联通地址到来之前,两个香港地址先摸清了该端点能够到什么,我们以低置信度认为这三个地址属于同一操作者。9 月 20 日密钥在 203.175.15[.]28 上通过验证,十二个模型的目录在 103.85.74[.]25 的另一次会话中被遍历,该地址集合的框架 User-Agent 流量自 9 月 21 日起出现,完整的框架会话于 9 月 23 日从 182.91.103[.]32 落地。我们无法说明操作者在 9 月 20 日至 23 日之间用这份访问权做了什么。
密钥按地址分开。已签发的密钥 sk-0af475b8… 只出现在 9 月 20 日的香港会话中,而来自 182.91.103[.]32 的只有一次性字符串 141414、41414141 和 sk-14141242…,包括在工作站上执行命令的那次十一轮会话。基于上述理由,两组地址背后是否为同一操作者,我们持低置信度。
AGENTS.md 里的规则包是为无人值守的规模化作业而写的。除了禁止询问是否继续之外,回传的规则对种子队列规模不设上限,并以 FOFA 驱动资产发现,即 T1596 搜索开放技术数据库。这些规则描述的是以无人值守流水线方式运行的规模化赏金挖洞。我们认为正是这条流水线,让操作者想要不必付费的推理算力。
该框架自动批准了来自操作者并不控制的端点的每一次工具调用,于是该端点对操作者自己的主机执行了系统信息发现,即 T1082。规则包会在不同框架和模型名之间迁移,因此封禁某个 User-Agent 或某个模型字符串并不能持久地拦住这名操作者。
我们如何验证
我们可以排除两种对立解读。0.2 秒到 90 秒不等的轮次间隔,以及在第 10 轮切换到 deepseek-chat、第 11 轮又切回的 model 字段,都不是固定重放脚本会产生的结果;而良性的互联网测绘或扫描器厂商不会把自己桌面目录和框架主目录的内容回传。共享 API 密钥把两台香港主机相互关联起来,但框架 User-Agent 属于任何人都能取得的通用软件,因此 182.91.103[.]32 是否属于同一操作者尚未确立,我们也不知道那次十一轮会话为何是该地址的最后一批流量。操作者是否认为某个授权范围覆盖了这个端点,我们没有验证;规则包向它自己的模型声称授权研究员身份,这是一种提示词工程手段。
| 解释 | 检验 | 结果 | 结论 |
|---|---|---|---|
| 是固定重放脚本而非实时智能体循环 | 十一轮会话逐轮的时间戳、提示词大小和 model 字段,以及不重复的工具调用标识符计数 | 十一轮从 18:23:10.2Z 持续到 18:28:08.8Z,间隔在 0.2 秒到 90 秒之间;上下文从 44,402 个字符增长到 492,150 个字符;model 字段在第 10 轮变为 deepseek-chat,第 11 轮变回;92 个不重复的工具调用标识符产生了 86 个不重复的结果 | 已否定 |
| 是良性的全网测绘,或使用异常 User-Agent 的扫描器厂商 | 来源的外部信誉数据,与客户端回传的内容对照 | VirusTotal 对 182.91.103[.]32 的判定是 91 个引擎中 0 个报恶意;客户端回传了自己的赏金挖洞规则包、FOFA MCP 配置和主目录列表,测绘爬虫不会携带这些内容 | 已否定 |
| 是使用者众多的通用工具,因此这些地址彼此无关 | 统计出示该框架 User-Agent 的不同来源,以及出示两个密钥各自的来源 | 在 2026 年 9 月 20 日至 23 日的活动中,该 User-Agent 来自 2 家机构、3 个 /24 网段内的 3 个来源,但同一 API 密钥恰好只被同一机构内的两台香港主机共用,而密钥 41414141 为 182.91.103[.]32 独有 | 无定论 |
| 操作者中断是因为端点对它失效了 | 十一轮会话期间及最后一轮之后的事件顺序 | 十一轮会话持续到 18:28:08.8Z,该地址在 18:28 之后没有再发出请求;原因无法从证据中得知 | 无定论 |
| 是一次授权渗透测试,操作者认为其范围覆盖该端点 | 流量中是否附带任何授权标记、联系方式字符串或范围说明 | 该地址的任何事件中都没有出现联系地址、范围说明或授权头;规则包向它自己的模型声称授权研究员的语境,并指示其不要索要授权证明,这是提示词工程手段,而不是范围存在的证据 | 未验证 |
数据一览
数据由证据和富化查询计算得出。
- VirusTotal 关联。 该地址位于 CN 的 CHINA UNICOM China169 Backbone。没有引擎把该地址本身标记为恶意(0/91)。VirusTotal 没有该地址的被动 DNS 记录:没有任何记录显示曾有域名指向它。
- 此前出现过。 我们的报告 DeepSeek Harness 对阵被盗的 LLM 网关:工具调用在调用方执行 中同样出现了
203.175.15[.]28、103.85.74[.]25。
失陷指标
下列 3 个网络指标已做无害化处理;路径按观察到的原样给出。
网络
| 指标 | 说明 |
|---|---|
182.91.103[.]32 | DeepSeek Harness 智能体会话;来自其自身主机的 279 次工具结果提交 |
203.175.15[.]28 | 相同的框架 User-Agent,外加 python-requests 密钥验证;共用被盗密钥 |
103.85.74[.]25 | 相同的框架 User-Agent 和相同的被盗密钥;枚举了十二个模型名称 |
主机痕迹
| 指标 | 说明 |
|---|---|
sk-0af475b8… | 三个地址中有两个复用的 API 密钥;在最早记录的联络之前就已取得 |
deepseek-harness/0.1.5-rc.2 (+https://github.com/deepseek-ai/deepseek-harness) | 客户端 User-Agent,2026 年 9 月 20 日至 23 日间来自 3 个来源;同一集合中还有较早的变体 DeepSeek-Harness-Desktop/0.1.3-max |
C:\Users\[user]\.dsh\rules\*.md | 操作者工作站痕迹;在回传的工具输出中观察到 C:\Users\cheng.dsh\rules\researcher-blackbox-whitebox.md 和 playwright-browser-mcp.md |
C:\Users\[user]\Desktop\clown-src-6k-skill\ | 操作者打包的挖洞技能目录树,出现在回传的 PowerShell 输出中 |
cheng | 操作者工作站上的 Windows 账户名,在每条回传路径中都暴露 |
41414141 | 用于十一轮框架会话的一次性密钥;在已记录的活动中为 182.91.103[.]32 独有 |
检测
Sigma
智能体框架调用未经批准的模型补全端点(候选)。
title: Agent harness calling an unapproved model completions endpoint
status: experimental
description: Detects an AI coding-agent harness sending chat completions to a model endpoint outside the approved host list. Requires proxy logging of the request URI and user agent; request bodies are usually not logged, so this rule keys on client identity and destination only.
logsource:
category: proxy
detection:
selection:
cs-uri-stem|endswith: '/v1/chat/completions'
cs-user-agent|contains:
- 'deepseek-harness/'
- 'DeepSeek-Harness-Desktop/'
filter_approved:
cs-host:
- 'api.deepseek.com'
- 'api.openai.com'
- 'api.anthropic.com'
condition: selection and not filter_approved
falsepositives:
- Developers legitimately using a self-hosted or third-party model endpoint absent from the approved host list
- Internal evaluation harnesses pointed at staging endpoints
level: high
检测逻辑
- OpenAI 兼容端点接受了未知的 bearer 密钥(网络,候选)。在任何可从互联网访问的 OpenAI 兼容端点上,按请求记录所出示的 bearer 密钥,并在已签发密钥登记表中不存在的密钥收到非 401 响应时告警,或在同一密钥在一小时内来自一个以上自治系统时告警。在本次活动中,同一密钥出现在同一家托管机构的两台主机上,而三个明显是一次性的密钥(141414、41414141、sk-14141242…)被依次用于测试是否真的执行了认证。
- 智能体框架被配置为对外部端点自动批准工具调用(主机,候选)。在开发者和研究员终端上,标记同时具备自动批准权限模式和组织批准模型主机之外 base URL 的智能体框架配置文件。具体来说:用户配置目录下任何同时包含 permission_mode = “always-approve”(或等效的 yolo、auto-approve 设置)与自定义 api base 的 TOML 或 YAML 文件。这样的客户端会执行远程端点下发的任何工具调用,全程没有人参与。
- 本地文件系统输出被提交到聊天补全的工具结果中(行为,候选)。在你自己运营的模型端点上,当入站的聊天补全请求携带 tool 角色消息、且其内容匹配主机痕迹模式时告警:Windows 绝对路径(^[A-Z]:\Users\)、诸如 ‘FullName … Length Mode’ 的 PowerShell 表头,或包含 .env 或 .credentials 的目录列表。合法的编码助手流量确实会包含文件内容,因此需要按租户调优;这里的信号在于提交的客户端在密钥登记表中是未知的。
处置建议
- 把任何可从互联网访问的 OpenAI 兼容端点置于真正会做校验的认证之后:对未知的 bearer 密钥返回 401 而不是照常提供服务,并为每个已签发密钥登记归属人和有效期。
- 审计模型端点上的管理接口,排查是否存在无需认证即可签发密钥的情况,并吊销一切无法与已知归属人对应的密钥。在本次活动中,所用密钥在最早记录的请求(2026-09-20T12:22:32Z)时就已有效,其取得方式没有证据。
- 当模型端点不在批准主机清单上时,把智能体框架设置为执行工具前必须确认;在任何持有凭据的机器上,把 permission_mode = “always-approve” 加自定义 base URL 视为禁止组合。
- 针对开发者工作站流向批准模型供应商清单之外主机的 /v1/chat/completions 出站流量告警,以智能体框架 User-Agent 为关键特征。
- 把模型响应视为进入工具层的不可信输入:你不控制的端点可以下发工具调用,而执行这些调用的框架等于把工作站的读取权限交给了它。
MITRE ATT&CK 映射
| 战术 | 技术 | 观察到的情况 |
|---|---|---|
| 防御规避 | T1078 有效账户 | 两个地址使用同一 API 密钥完成认证,该密钥在最早记录的请求时就已在操作者手中 |
| 资源开发 | T1588.002 获取能力:工具 | 操作者运行公开的 DeepSeek Harness 智能体、一个 Playwright 浏览器 MCP 服务器和一个 FOFA 资产搜索 MCP 服务器,它们都注册在回传的 config.toml 中 |
| 侦察 | T1596 搜索开放技术数据库 | config.toml 注册了一个带三组凭据槽位的 FOFA MCP 服务器,规则包描述了由 FOFA 结果驱动的种子队列工作流 |
| 发现 | T1082 系统信息发现 | 方向反转:操作者自己的客户端按不可信端点的指令在本地执行了目录和文件枚举,并回传了 86 份不重复的输出 |
参考
方法与分析员说明
证据仅限于与一个可从互联网访问的 OpenAI 兼容模型端点往来的请求和响应,覆盖 2026 年 9 月 20 日至 23 日的活动;操作者在该端点之外做了什么并不清楚。该 API 密钥在最早记录的请求时就已在操作者手中,因此产生它的管理权接管发生在此处可观察范围之前,其具体机制没有证据。工作站细节只是操作者的客户端选择回传的内容;没有检查过任何主机,除了提交到端点的内容之外也没有采集任何东西。没有任何厂商对这三个地址中的任何一个给出检出,它们也都未被归类为扫描器,因此本报告的结论在这里描述的流量之外没有旁证。
仍未解决:
- 共享 API 密钥最初是在何时、通过何种请求取得的。
- 该框架构建目前还指向了哪些其他暴露的模型端点。
- 在 9 月 20 日验证密钥到 9 月 23 日来自 182.91.103[.]32 的框架会话之间,操作者用这份访问权做了什么;其间该地址集合的框架 User-Agent 流量自 9 月 21 日起出现。
问题或更正请联系:contact@kinryu.sh。