安全决策报告

slzq-trading

三立期货官方量化交易技能,代码行为与声明一致,无恶意特征;安装脚本需shell:WRITE但已声明用途并有锁定机制。

安装决策优先 来源: ClawHub 扫描时间: 2026/9/8
文件 57
IOC 109
越权项 2
发现 4

为什么得出这个结论

1/4 个维度触发
阻止
声明与实际能力

发现 2 项声明之外的能力或越权行为。

复核
隐藏执行与外联

提取到 109 个一般风险产物,需要结合上下文判断。

通过
攻击链与高危发现

没有形成明确的恶意路径。

复核
依赖与供应链卫生

发现 4 项需要关注的依赖或供应链线索。

风险分是怎么被拉高的

安装脚本调用shell执行npm/CLI命令 +15

install/setup-clawhub.mjs使用spawnSync执行npm ci和openclaw mcp add,虽在文档MCP注册章节说明但未在frontmatter declared-tools中声明

凭证文件写入用户家目录 +5

runtime/mcp/src/index.ts写入~/.slzq-trading/credentials.json和~/.openclaw/openclaw.json,有原子写保护但路径未在文档声明

最关键的证据

低危 权限提升

安装脚本未在声明工具集中声明shell执行

setup-clawhub.mjs通过spawnSync执行npm ci安装依赖、openclaw mcp add注册MCP。这需要shell:WRITE权限但SKILL.md frontmatter的declared-tools未包含Bash/Write。文档在MCP注册章节有说明,属于部分声明。

install/setup-clawhub.mjs:42
在SKILL.md frontmatter declared-tools中添加 Bash→shell:WRITE 或在MCP安装说明中更醒目标注此权限需求
低危 供应链

package.json依赖未锁小版本

@modelcontextprotocol/sdk使用^1.29.0、zod使用^4.3.6,允许次版本更新,虽有package-lock.json固定但package.json本身非锁定。npm ci仍会使用lock文件,整体可接受。

runtime/mcp/package.json:22
考虑使用精确版本如"1.29.0"以完全消除供应链风险
提示 敏感访问

凭证文件写入家目录

MCP将API密钥写入~/.slzq-trading/credentials.json(0600权限)和~/.openclaw/openclaw.json。原子写保护实现正确,但写入路径在文档中说明不足。

runtime/mcp/src/index.ts:88
在文档中明确说明密钥存储位置和权限模型
提示 文档欺骗

资产文件含加密货币钱包地址

assets/kefu-qrcode.base64.txt中含加密货币钱包地址1cPzW7TNRXXg66oTg66KN6Kxrjz1p,base64编码存储。位于只读资产文件,非执行路径,实际风险低。

assets/kefu-qrcode.base64.txt:1
确认该地址为三立期货官方客服收款渠道(非恶意基础设施)

声明能力 vs 实际能力

文件系统 阻止
声明 READ
→
推断 WRITE
runtime/mcp/src/index.ts:88-115 写入~/.slzq-trading/credentials.json
网络访问 通过
声明 READ
→
推断 READ
所有请求仅发往 https://slzqapi.sxslqhsh.com
命令执行 阻止
声明 NONE
→
推断 WRITE
install/setup-clawhub.mjs:42 spawnSync('npm',['ci'])
环境变量 通过
声明 READ
→
推断 READ
runtime/mcp/src/index.ts 读取SLZQ_OPENCLAW_DOMAIN/API_KEY/ENV

可疑产物与外联

中危 外部 URL
https://slzqapi.sxslqhsh.com

SKILL.md:44

中危 外部 URL
https://www.sxslqh.com/

SKILL.md:139

中危 外部 URL
https://work.weixin.qq.com/ca/cawcde585f7474b3f7

assets/README.md:5

中危 钱包地址
1cPzW7TNRXXg66oTg66KN6Kxrjz1p

assets/kefu-qrcode.base64.txt:1

中危 外部 URL
https://slzqapi.sxslqhsh.com/mobile-api($

install/doctor.sh:55

中危 外部 URL
https://slzqapi.sxslqhsh.com/mobile-api/static/page/openclaw-agreement

references/api-auth.md:56

中危 外部 URL
https://www.sxslqh.com/Introduction/26.html

references/company-faq.md:15

中危 外部 URL
https://www.sxslqh.com/,

references/company-faq.md:72

中危 外部 URL
https://slzqapi.sxslqhsh.com/mobile-api

references/usage-notes.md:12

中危 外部 URL
https://slzqapi.sxslqhsh.com),但结尾不要写

references/usage-notes.md:67

中危 外部 URL
https://主机名/sanli

references/usage-notes.md:174

中危 外部 URL
https://clawhub.ai/upload

references/usage-notes.md:372

依赖与供应链

包名版本来源漏洞备注
@modelcontextprotocol/sdk ^1.29.0 npm 否 使用^允许次版本更新,有package-lock.json固定
zod ^4.3.6 npm 否 同^允许更新,有lock固定
hono 4.12.11 npm 否 npm ci时使用lock固定版本
express 5.2.1 npm 否 间接依赖,lock固定

文件构成

57 个文件 · 11952 行
Markdown 18 个文件 · 3121 行YAML 10 个文件 · 2823 行JSON 14 个文件 · 2739 行TypeScript 2 个文件 · 1592 行JavaScript 6 个文件 · 1403 行Shell 3 个文件 · 267 行
需关注文件 · 6
runtime/mcp/src/index.ts TypeScript · 1590 行
凭证文件写入家目录
runtime/mcp/dist/index.js JavaScript · 1129 行
https://host/sanli)
references/usage-notes.md Markdown · 505 行
https://slzqapi.sxslqhsh.com/mobile-api · https://slzqapi.sxslqhsh.com),但结尾不要写 · https://主机名/sanli · https://clawhub.ai/upload
runtime/mcp/package-lock.json JSON · 1178 行
https://registry.npmmirror.com/@hono/node-server/-/node-server-1.19.12.tgz · https://registry.npmmirror.com/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz · https://registry.npmmirror.com/@types/node/-/node-25.5.2.tgz · https://registry.npmmirror.com/accepts/-/accepts-2.0.0.tgz · https://registry.npmmirror.com/ajv/-/ajv-8.18.0.tgz · https://registry.npmmirror.com/ajv-formats/-/ajv-formats-3.0.1.tgz · https://registry.npmmirror.com/body-parser/-/body-parser-2.2.2.tgz · https://opencollective.com/express · https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz · https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz · https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz · https://registry.npmmirror.com/content-disposition/-/content-disposition-1.0.1.tgz · https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz · https://registry.npmmirror.com/cookie/-/cookie-0.7.2.tgz · https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.2.2.tgz · https://registry.npmmirror.com/cors/-/cors-2.8.6.tgz · https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz · https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz · https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz · https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz · https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz · https://registry.npmmirror.com/encodeurl/-/encodeurl-2.0.0.tgz · https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz · https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz · https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz · https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz · https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz · https://registry.npmmirror.com/eventsource/-/eventsource-3.0.7.tgz · https://registry.npmmirror.com/eventsource-parser/-/eventsource-parser-3.0.6.tgz · https://registry.npmmirror.com/express/-/express-5.2.1.tgz · https://registry.npmmirror.com/express-rate-limit/-/express-rate-limit-8.3.2.tgz · https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz · https://registry.npmmirror.com/fast-uri/-/fast-uri-3.1.0.tgz · https://opencollective.com/fastify · https://registry.npmmirror.com/finalhandler/-/finalhandler-2.1.1.tgz · https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz · https://registry.npmmirror.com/fresh/-/fresh-2.0.0.tgz · https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz · https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz · https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz · https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz · https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz · https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz · https://registry.npmmirror.com/hono/-/hono-4.12.11.tgz · https://registry.npmmirror.com/http-errors/-/http-errors-2.0.1.tgz · https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.7.2.tgz · https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz · https://registry.npmmirror.com/ip-address/-/ip-address-10.1.0.tgz · https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz · https://registry.npmmirror.com/is-promise/-/is-promise-4.0.0.tgz · https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz · https://registry.npmmirror.com/jose/-/jose-6.2.2.tgz · https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz · https://registry.npmmirror.com/json-schema-typed/-/json-schema-typed-8.0.2.tgz · https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz · https://registry.npmmirror.com/media-typer/-/media-typer-1.1.0.tgz · https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz · https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz · https://registry.npmmirror.com/mime-types/-/mime-types-3.0.2.tgz · https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz · https://registry.npmmirror.com/negotiator/-/negotiator-1.0.0.tgz · https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz · https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz · https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz · https://registry.npmmirror.com/once/-/once-1.4.0.tgz · https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz · https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz · https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-8.4.2.tgz · https://registry.npmmirror.com/pkce-challenge/-/pkce-challenge-5.0.1.tgz · https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz · https://registry.npmmirror.com/qs/-/qs-6.15.0.tgz · https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz · https://registry.npmmirror.com/raw-body/-/raw-body-3.0.2.tgz · https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz · https://registry.npmmirror.com/router/-/router-2.2.0.tgz · https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz · https://registry.npmmirror.com/send/-/send-1.2.1.tgz · https://registry.npmmirror.com/serve-static/-/serve-static-2.2.1.tgz · https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz · https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz · https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz · https://registry.npmmirror.com/side-channel/-/side-channel-1.1.0.tgz · https://registry.npmmirror.com/side-channel-list/-/side-channel-list-1.0.0.tgz · https://registry.npmmirror.com/side-channel-map/-/side-channel-map-1.0.1.tgz · https://registry.npmmirror.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz · https://registry.npmmirror.com/statuses/-/statuses-2.0.2.tgz · https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz · https://registry.npmmirror.com/type-is/-/type-is-2.0.1.tgz · https://registry.npmmirror.com/typescript/-/typescript-6.0.2.tgz · https://registry.npmmirror.com/undici-types/-/undici-types-7.18.2.tgz · https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz · https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz · https://registry.npmmirror.com/which/-/which-2.0.2.tgz · https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz · https://registry.npmmirror.com/zod/-/zod-4.3.6.tgz · https://registry.npmmirror.com/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz
references/company-faq.md Markdown · 125 行
https://www.sxslqh.com/Introduction/26.html · https://www.sxslqh.com/,
references/api-auth.md Markdown · 199 行
https://slzqapi.sxslqhsh.com/mobile-api/static/page/openclaw-agreement
其他文件 · paths-cloud-orders.yaml · openapi.yaml · cloud-orders.json · api-cloud-orders.md · paths-holding.yaml · api-orders.md

安全亮点

所有网络请求仅指向单一已知域名 https://slzqapi.sxslqhsh.com,无动态域名解析或IP直连
API密钥通过maskApiKey函数在日志和响应中自动脱敏,前7后4字符可见
原子写(atomic write)保护凭证文件,中途失败不污染原文件
凭证文件权限0600,仅当前用户可读写
安装脚本使用npm ci依赖package-lock.json锁定版本,防止依赖劫持
无base64/eval/动态代码执行,无混淆特征
无凭证遍历收割、无敏感路径访问(~/.ssh、.env等)
无反向shell、C2通信或数据外泄
实盘操作需要用户逐笔明确确认,多次安全提示到位
代码质量高,大量防御性编程(输入校验、边界处理、错误恢复)