可疑 — 风险评分 42/100
上次扫描:4 小时前 重新扫描
42 /100
moltspay_skill
Pay for AI services via MoltsPay protocol using USDC on Base chain
MoltsPay 技能声称是支付工具,但其核心操作依赖于未版本锁定的 npm 包(moltspay)的全局安装与执行,setup.js 使用 execSync 执行任意命令,存在供应链风险;SKILL.md 未声明 npm 全局安装行为和外部网络请求范围。
技能名称moltspay_skill
分析耗时61.1s
引擎pi
ClawHub MoltsPay Skill v1.0.0 by yaqing2023
📥 311
ClawHub 判定 可疑 dangerous_execllm_suspiciousvt_suspicious
谨慎使用
1. 立即在 package.json 中将 moltspay 锁定到已知可信版本;2. SKILL.md 应明确声明 'npm install -g moltspay' 这一高危操作;3. 审查 moltspay npm 包的源码和发布历史,确认为可信包;4. 考虑将安装步骤从运行时移至部署时,避免在用户环境执行未知代码。

攻击链 3 步

入口 用户安装/触发 skill,package.json postinstall 或 setup.sh/setup.js 执行 npm install -g moltspay(无版本锁定)
package.json:18
提权 攻击者通过 npm 包劫持(抢注/账户被盗/恶意版本)发布恶意版 moltspay,agent 运行时自动安装
scripts/setup.sh:14
影响 恶意 moltspay 包在 init/status/pay 命令中植入代码,窃取钱包私钥、收割环境变量或建立持久化后门
scripts/setup.js:32

安全发现 5 项

严重性 安全发现 位置
高危
npm 全局安装 moltspay 无版本锁定 供应链
setup.sh:14、setup.js:32 和 package.json postinstall 均执行 'npm install -g moltspay',未指定版本或 hash。若 moltspay 包名被抢注、账号被盗或版本被污染,安装的代码将拥有 agent 的完整 shell 执行权限。
npm install -g moltspay
→ 将依赖锁定至特定版本(npm install -g [email protected]),并建议在安装前验证 moltspay npm 包的发布者身份和源码。
scripts/setup.sh:14
高危
SKILL.md 未声明 npm 全局安装行为 文档欺骗
SKILL.md 列出了 moltspay CLI 命令(init/status/config/pay),但完全未提及 skill 会通过 npm 全局安装 moltspay 包这一核心前置步骤。用户阅读 SKILL.md 无法得知 skill 会执行 npm install -g。
文档描述了命令用法但未声明包的安装方式和来源
→ SKILL.md 应明确说明:本 skill 依赖 moltspay npm 包,会在首次运行时全局安装;提供包版本信息、源码仓库地址和可信度说明。
SKILL.md:1
中危
setup.js 使用 execSync 执行外部包命令 代码执行
setup.js:32 调用 execSync('moltspay init --chain base ...'),若 moltspay 包被恶意替换,攻击者可在 init 命令中注入任意代码执行。setup.sh:27 通过 jq 解析 wallet.json 也存在命令注入风险(但路径由 ${HOME} 决定,攻击面较小)。
run('moltspay init --chain base --max-per-tx 2 --max-per-day 10')
→ 使用 spawnSync 而非 execSync 避免 shell 解析;验证 moltspay 包的完整性(hash 比对)后再执行命令。
scripts/setup.js:32
中危
未声明的 filesystem 写入 文档欺骗
SKILL.md 未声明本 skill 会写入 ${HOME}/.moltspay/wallet.json 文件。setup.sh:27 和 setup.js:54 会在用户主目录创建 .moltspay 目录和 wallet.json,这是高度敏感的钱包文件存储位置。
WALLET_FILE="${HOME}/.moltspay/wallet.json"
→ SKILL.md 应声明:'本 skill 会在 ~/.moltspay/ 下存储钱包配置文件'。
scripts/setup.sh:27
低危
package.json 无包版本锁定 供应链
moltspay-skill 自身的依赖(devDependencies/scripts)未指定版本,增加了依赖解析的不确定性。
"setup": "node scripts/setup.js"
→ 为 scripts 依赖添加版本锁定。
package.json:16
资源类型声明权限推断权限状态证据
命令执行 NONE WRITE ✗ 越权 SKILL.md 未声明任何 shell 执行能力,但 scripts/setup.sh:14 和 scripts/setup.js:32 执行 npm ins…
网络访问 READ READ ✓ 一致 SKILL.md 声明 GET https://moltspay.com/api/search、https://moltspay.com/api/service…
文件系统 NONE WRITE ✗ 越权 SKILL.md 未声明文件系统写入,但 setup.sh:27 和 setup.js:54 写入 ${HOME}/.moltspay/wallet.json
环境变量 NONE READ ✗ 越权 setup.js 使用 os.homedir() 获取 HOME 路径(隐式依赖环境变量),未在 SKILL.md 声明
7 项发现
🔗
中危 外部 URL 外部 URL
https://juai8.com/zen7
README.md:29
🔗
中危 外部 URL 外部 URL
https://moltspay.com/docs
README.md:48
🔗
中危 外部 URL 外部 URL
https://moltspay.com/services
README.md:49
🔗
中危 外部 URL 外部 URL
https://discord.gg/QwCJgVBxVK
README.md:50
🔗
中危 外部 URL 外部 URL
https://moltspay.com/api/search?q=
SKILL.md:45
🔗
中危 外部 URL 外部 URL
https://moltspay.com/api/services
SKILL.md:46
🔗
中危 外部 URL 外部 URL
https://juai8.com/.well-known/agent-services.json
SKILL.md:52

目录结构

7 文件 · 9.9 KB · 364 行
Markdown 2f · 175L Shell 3f · 87L JavaScript 1f · 66L JSON 1f · 36L
├─ 📁 scripts
│ ├─ 🔧 ensure-wallet.sh Shell 27L · 799 B
│ ├─ 🔧 pay-zen7-video.sh Shell 18L · 479 B
│ ├─ 📜 setup.js JavaScript 66L · 2.1 KB
│ └─ 🔧 setup.sh Shell 42L · 1.3 KB
├─ 📋 package.json JSON 36L · 691 B
├─ 📝 README.md Markdown 54L · 1.3 KB
└─ 📝 SKILL.md Markdown 121L · 3.2 KB

依赖分析 3 项

包名版本来源已知漏洞备注
moltspay * npm 无版本锁定,未知发布者,通过 npm install -g 安装后拥有完整 shell 权限
child_process bundled Node.js stdlib Node.js 内置模块,无风险
fs bundled Node.js stdlib Node.js 内置模块,无风险

安全亮点

✓ 代码逻辑简单清晰,无混淆、无 base64 编码执行
✓ 未发现凭证收割、环境变量遍历、SSH/AWS 密钥访问等敏感文件操作
✓ 未发现反向 shell、C2 通信、数据外泄的明确证据
✓ 钱包文件存储在标准用户目录,未外传
✓ 脚本有基本的错误处理(set -e、try-catch)