安全决策报告

solo-mission

纯文档技能包,仅包含 Markdown 文件无可执行脚本。但文档中存在危险的 `curl | bash` 远程脚本执行模式,且外部 API 域名 (mission.projectsolo.xyz) 未在安全上下文中验证, Credential 持久化方式 (包括落盘到 .env) 存在风险。

安装决策优先 来源: ClawHub 扫描时间: 6 小时前
文件 5
IOC 20
越权项 3
发现 5
最直接的威胁证据
01
通过 curl | bash 远程执行脚本安装 Foundry 权限提升 · references/wallet-setup.md
02
API Key 写入 .env 文件明文落盘 权限提升 · SKILL.md
03
所有 agent 操作(任务创建、资金管理)流向 mission.projectsolo.xyz 外部 API 最终危害 · SKILL.md

为什么得出这个结论

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

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

阻止
隐藏执行与外联

提取到 1 个高危 IOC 或外联信号。

阻止
攻击链与高危发现

报告包含 3 步攻击链,另有 1 项高危或严重发现。

复核
依赖与供应链卫生

没有完整依赖信息,供应链判断需要保留弹性。

攻击链

01
通过 curl | bash 远程执行脚本安装 Foundry

权限提升 · references/wallet-setup.md:29

02
API Key 写入 .env 文件明文落盘

权限提升 · SKILL.md:119

03
所有 agent 操作(任务创建、资金管理)流向 mission.projectsolo.xyz 外部 API

最终危害 · SKILL.md:47

风险分是怎么被拉高的

危险 shell 命令模式 +15

wallet-setup.md:29 包含 `curl -L https://foundry.paradigm.xyz | bash`,文档化为安装指令但仍属高危模式

外部域名未验证 +10

所有 API 调用指向 mission.projectsolo.xyz,无法确认域名合法性,potential C2

Credential 持久化落盘 +5

SKILL.md:109-113 包含写入 .env 文件的 fallback 选项,API Key 可能以明文存储于磁盘

纯文档无可执行代码 +-5

整个 skill 无任何脚本文件,降低实际执行风险;仅描述 shell 命令供 AI agent 解释执行

最关键的证据

高危 供应链

危险的远程脚本执行模式

wallet-setup.md:29 包含 `curl -L https://foundry.paradigm.xyz | bash`,将下载内容直接 pipe 到 bash 执行。这是经典的供应链攻击向量。即使这是安装 Foundry 的合法指令,也存在中间人攻击和恶意注入风险。

references/wallet-setup.md:29
改为预下载校验或使用包管理器(brew/apt)安装 Foundry
中危 凭证窃取

API Key 明文持久化到磁盘

SKILL.md:109-122 的 Fallback 选项将 SOLO_AGENT_KEY 写入 `.env` 文件明文存储。若 server 被攻破,API Key 可被直接读取用于冒充 agent。

SKILL.md:119
移除 .env fallback,仅支持 workspace-scoped 安全存储(.claude/settings.local.json 或 openclaw env)
中危 数据外泄

外部 API 域名真实性未验证

所有 agent 操作均指向 mission.projectsolo.xyz 域名(12 处外部 URL 引用),包括注册、任务创建、资金转移等敏感操作。该域名无法在当前分析上下文中验证合法性,存在潜在的 C2 或数据外泄风险。

SKILL.md:47
在部署前验证域名所有权和 SSL 证书;考虑添加域名白名单或 pinning
中危 文档欺骗

权限声明缺失

SKILL.md metadata 中未声明 allowed-tools,但代码中隐式需要 shell:WRITE 和 network:READ 能力。根据 8 资源模型,未声明权限视为 NONE,实际执行时会越权。

SKILL.md:1
在 metadata 中显式声明 allowed-tools: { Bash, Read, Write } 等
低危 凭证窃取

私钥环境变量引用

SKILL.md 和引用文件中多次使用 $PRIVATE_KEY 环境变量名进行 on-chain 交易。虽然文档有安全警告,但如果 agent 环境存在其他同名变量或日志泄露,可能造成私钥外泄。

references/onchain.md:21
使用更具体的变量名如 $SOLO_SPONSOR_PRIVATE_KEY 以减少冲突风险

声明能力 vs 实际能力

命令执行 阻止
声明 NONE
推断 WRITE
SKILL.md 全篇描述 `curl`、`cast send`、`openssl enc` 等 shell 命令,文档隐式声明 shell 执行能力但 SKILL.md 未声明 allowed-tools
网络访问 阻止
声明 NONE
推断 READ
SKILL.md 多次调用 api.mission.projectsolo.xyz API,未声明 network 权限
文件系统 阻止
声明 NONE
推断 WRITE
SKILL.md:109-122 持久化 API Key 到 .claude/settings.local.json 或 .env 文件,涉及文件写入

可疑产物与外联

严重 危险命令
curl -L https://foundry.paradigm.xyz | bash

references/wallet-setup.md:29

中危 外部 URL
https://api.mission.projectsolo.xyz

SKILL.md:47

中危 外部 URL
https://api.mission.projectsolo.xyz/agent/missions?limit=100&page=$PAGE

SKILL.md:75

中危 外部 URL
https://api.mission.projectsolo.xyz/agent/register

SKILL.md:98

中危 外部 URL
https://sepolia.base.org

SKILL.md:206

中危 外部 URL
https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID/confirm-funding

SKILL.md:232

中危 外部 URL
https://mission.projectsolo.xyz/missions/

SKILL.md:248

中危 外部 URL
https://api.mission.projectsolo.xyz/agent/missions

SKILL.md:415

中危 外部 URL
https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID/tracks/upload-url

SKILL.md:468

中危 外部 URL
https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID/tracks/$TRACK_ID/confirm

SKILL.md:480

中危 外部 URL
https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID

SKILL.md:529

中危 外部 URL
https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID/tracks

SKILL.md:540

依赖与供应链

没有结构化依赖告警。

文件构成

5 个文件 · 1452 行
Markdown 5 个文件 · 1452 行
需关注文件 · 4
SKILL.md Markdown · 649 行
API Key 明文持久化到磁盘 · 外部 API 域名真实性未验证 · 权限声明缺失 · https://api.mission.projectsolo.xyz · https://api.mission.projectsolo.xyz/agent/missions?limit=100&page=$PAGE · https://api.mission.projectsolo.xyz/agent/register · https://sepolia.base.org · https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID/confirm-funding · https://mission.projectsolo.xyz/missions/ · https://api.mission.projectsolo.xyz/agent/missions · https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID/tracks/upload-url · https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID/tracks/$TRACK_ID/confirm · https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID · https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID/tracks · https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID/finalize-qualification · https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID/settle
references/rest-api.md Markdown · 299 行
https://mission.projectsolo.xyz/missions/$MISSION_ID\
references/onchain.md Markdown · 228 行
私钥环境变量引用 · 0x6537Dcb39517A30e13C246560E7F58Bb7C2Fc2b2 · 0x036CbD53842c5426634e7929541eC2318f3dCF7e
references/wallet-setup.md Markdown · 146 行
危险的远程脚本执行模式 · curl -L https://foundry.paradigm.xyz | bash · https://foundry.paradigm.xyz · https://docs.base.org/docs/tools/network-faucets · https://faucet.circle.com
其他文件 · stuck-recovery.md

安全亮点

纯文档技能包,无可执行脚本,实际攻击面有限
文档中有明确的私钥安全警告(NEVER share, MANDATORY)
推荐使用 OpenSSL 加密或云 KMS 存储私钥而非明文
Agent 注册 API Key 由服务端返回,非用户提供,降低注入风险
on-chain 交易使用一次性 nonce 机制防止重放攻击
媒体评审任务的轨道上传有严格的顺序约束(先上传再邀请)
会话启动时扫描 stuck missions 的设计有助于资金回收