安全决策报告

solo-mission

技能核心功能正常但存在供应链风险:wallet-setup.md 引用的远程脚本安装命令未在 SKILL.md 声明权限中明确说明,且与私钥处理的安全谨慎态度不一致。

安装决策优先 来源: ClawHub 扫描时间: 2026/6/16
文件 7
IOC 26
越权项 1
发现 3
最直接的威胁证据
高危 供应链
未声明的远程脚本执行(Foundry 安装)

wallet-setup.md:29 包含 `curl -L https://foundry.paradigm.xyz | bash`,通过 bash 管道执行远程脚本安装 Foundry。SKILL.md 的 compatibility 字段声明了依赖但未说明安装方式,skill-card.md 的 declaredPermissions 中无对应记录。这是典型的远程代码执行风险,且与 skill 对私钥处理的极度谨慎态度不一致('NEVER ask for PRIVATE_KEY')。

references/wallet-setup.md:29

为什么得出这个结论

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

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

阻止
隐藏执行与外联

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

阻止
攻击链与高危发现

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

复核
依赖与供应链卫生

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

风险分是怎么被拉高的

未声明的远程脚本执行 +20

wallet-setup.md:29 包含 `curl -L https://foundry.paradigm.xyz | bash`,用于安装 Foundry,但 SKILL.md 的 compatibility 字段仅声明 '需要 Foundry cast',未说明安装方式,也未在 skill-card.md 声明。

凭证持久化行为 +10

Agent Registration 流程将 SOLO_AGENT_KEY 写入 .claude/settings.local.json,该行为在 skill-card.md 'Known Risks' 中已披露但未在 declaredPermissions 明确声明 filesystem:WRITE 权限范围。

安全设计合理(正向) +-10

私钥处理有完善的生命周期管理(加密存储→运行时解密→立即 unset),API 凭证仅用于平台通信,不访问系统凭证,shell 执行均为必需的链上操作。

脚本执行有条件限制 +-5

wallet-setup.md 开头明确标注 'Skip this if you already have a funding tool',且包含人工操作警告,降低了自动执行风险。

最关键的证据

高危 供应链

未声明的远程脚本执行(Foundry 安装)

wallet-setup.md:29 包含 `curl -L https://foundry.paradigm.xyz | bash`,通过 bash 管道执行远程脚本安装 Foundry。SKILL.md 的 compatibility 字段声明了依赖但未说明安装方式,skill-card.md 的 declaredPermissions 中无对应记录。这是典型的远程代码执行风险,且与 skill 对私钥处理的极度谨慎态度不一致('NEVER ask for PRIVATE_KEY')。

references/wallet-setup.md:29
移除远程脚本执行命令,改为:1) 使用主流包管理器(brew install foundry, apt install foundryup);2) 或明确标注为人工操作步骤,Agent 仅在检测到缺失时提示用户手动安装。
中危 权限提升

凭证持久化行为权限未声明

Agent Registration 流程将 SOLO_AGENT_KEY 持久化写入 .claude/settings.local.json,属于 filesystem:WRITE 操作。skill-card.md 'Known Risks' 中有文字描述但未在 declaredPermissions 中明确声明 filesystem 权限,且写入路径 (.claude/settings.local.json) 未限制。

SKILL.md:56
在 skill-card.md 的 declaredPermissions 中添加 filesystem:WRITE,并明确写入路径限制(如仅限 .claude/ 目录)。
低危 文档欺骗

依赖声明粒度不足

SKILL.md 声明 'Requires curl and jq. On-chain missions additionally require Foundry cast and openssl',但未区分工具依赖 vs 安装方式。wallet-setup.md 中的远程脚本执行是对该声明的具体化,但未形成明确的引用关系。

SKILL.md:7
将 compatibility 字段改为明确说明安装方式,或在 references/ 引用关系中建立显式关联。

声明能力 vs 实际能力

网络访问 通过
声明 READ
推断 READ
SKILL.md:13 X-Agent-Key 调用 API
命令执行 通过
声明 WRITE
推断 WRITE
SKILL.md:26-28 session start scan, cast send calls
文件系统 阻止
声明 NONE
推断 WRITE
SKILL.md:56 mkdir + jq 写入 .claude/settings.local.json; skill-card.md 未声明
环境变量 通过
声明 READ
推断 READ
SKILL.md:8 primaryEnv: SOLO_AGENT_KEY
技能调用 通过
声明 NONE
推断 NONE
N/A

可疑产物与外联

严重 危险命令
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:83

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

SKILL.md:109

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

SKILL.md:232

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

SKILL.md:258

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

SKILL.md:274

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

SKILL.md:391

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

SKILL.md:400

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

SKILL.md:408

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

SKILL.md:417

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

SKILL.md:476

依赖与供应链

没有结构化依赖告警。

文件构成

7 个文件 · 1754 行
Markdown 6 个文件 · 1749 行JSON 1 个文件 · 5 行
需关注文件 · 5
SKILL.md Markdown · 737 行
凭证持久化行为权限未声明 · 依赖声明粒度不足 · 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/$MISSION_ID/cancel-params · https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID/confirm-cancel · https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID/emergency-refund-params · https://api.mission.projectsolo.xyz/agent/missions/$MISSION_ID/confirm-emergency-refund · 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 · 338 行
https://mission.projectsolo.xyz/missions/$MISSION_ID\
references/onchain.md Markdown · 306 行
0x6537Dcb39517A30e13C246560E7F58Bb7C2Fc2b2 · 0x036CbD53842c5426634e7929541eC2318f3dCF7e
references/wallet-setup.md Markdown · 146 行
未声明的远程脚本执行(Foundry 安装) · curl -L https://foundry.paradigm.xyz | bash · https://foundry.paradigm.xyz · https://docs.base.org/docs/tools/network-faucets · https://faucet.circle.com
skill-card.md Markdown · 46 行
https://clawhub.ai/user/wj-solo · https://clawhub.ai/wj-solo/solo-mission
其他文件 · stuck-recovery.md · _meta.json

安全亮点

私钥生命周期管理设计完善:加密存储→运行时解密→立即 unset,不在日志/对话中暴露
API 凭证(SOLO_AGENT_KEY)仅用于平台通信,不访问系统凭证(~/.ssh、~/.aws 等)
wallet-setup.md 包含详细的安全警告('NEVER paste private key into AI chat'),且标注为 owner 人工操作
shell 命令均为必需的链上操作(cast send),非反向 shell 或 C2 通信
凭证收割行为可解释:API key 是平台认证必需,非恶意意图
wallet-setup.md 开头明确条件化('Skip this if you already have a funding tool'),降低自动执行风险