pumpclaw-agent
代码存在明确的文档-行为不符:SKILL.md声明"永不签署交易"但实际在buildAndPayInvoice中执行了tx.sign();同时未声明将用户私钥(Base58)存储于SQLite数据库。
为什么得出这个结论
2/4 个维度触发发现 1 项声明之外的能力或越权行为。
提取到 10 个一般风险产物,需要结合上下文判断。
报告包含 3 步攻击链,另有 2 项高危或严重发现。
依赖结构存在,但暂未看到明显高危告警。
攻击链
初始入口 · SKILL.md:1
权限提升 · assets/template/src/server.js:55
最终危害 · assets/template/src/server.js:52
风险分是怎么被拉高的
SKILL.md声明"never sign transactions on behalf of the user"但代码在buildAndPayInvoice执行tx.sign()
deposit_wallets表存储Base58编码的私钥,SKILL.md仅声明"never log or output private keys",未提及数据库存储
package.json依赖使用^前缀版本范围,未锁定具体版本
有API认证、速率限制、输入验证、仅本地监听
最关键的证据
SKILL.md声明与代码行为不符:交易签名
SKILL.md安全规则明确声明"Never sign transactions on behalf of the user",但server.js第119行(server.cjs第124行)buildAndPayInvoice函数中执行了tx.sign(payerKeypair),代表用户(存款钱包)签署交易。
assets/template/src/server.js:119 SKILL.md未声明私钥存储行为
SKILL.md仅声明"Never log or output private keys / secret key material",但代码在SQLite deposit_wallets表中以deposit_secret_b58字段存储Base58编码的私钥,可被解码还原私钥。
assets/template/src/server.js:55 用户私钥在服务器端生成
getOrCreateDepositWallet为每个用户生成新的Keypair并存储私钥,服务器掌握所有用户存款钱包的私钥,数据库被攻破则所有钱包被盗。
assets/template/src/server.js:52 依赖版本未锁定
package.json所有依赖使用^前缀版本范围,允许自动升级,存在依赖供应链攻击风险。
assets/template/package.json:12 票据验证逻辑允许小额欺骗
waitForDeposit使用绝对金额检查(bal >= lamports),用户可向钱包汇入超过请求金额的SOL,系统仍会接受。
assets/template/src/server.js:74 声明能力 vs 实际能力
scripts/stamp_template.sh:29 tar复制模板目录 无shell命令执行 server.js:188 fastify.listen仅绑定127.0.0.1 server.js:55-60 未在SKILL.md声明SQLite存储deposit_secret_b58 可疑产物与外联
http://127.0.0.1:3033 assets/template/README-FAST.md:4
http://127.0.0.1:3033/health assets/template/README.md:19
https://opencollective.com/fastify assets/template/package-lock.json:111
https://paulmillr.com/funding/ assets/template/package-lock.json:275
https://www.patreon.com/feross assets/template/package-lock.json:758
https://feross.org/support assets/template/package-lock.json:762
https://opencollective.com/express assets/template/package-lock.json:987
https://dotenvx.com assets/template/package-lock.json:1079
3j5fMGzUMCxWBJ3dV3a7Wz8y2f assets/template/package-lock.json:1141
https://paypal.me/kozjak assets/template/package-lock.json:1768
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| @pump-fun/agent-payments-sdk | 3.0.0 | npm | 否 | ^前缀版本范围 |
| @solana/web3.js | ^1.98.0 | npm | 否 | ^前缀版本范围 |
| better-sqlite3 | ^12.6.2 | npm | 否 | ^前缀版本范围 |
| dotenv | ^17.3.1 | npm | 否 | ^前缀版本范围 |
| fastify | ^5.8.2 | npm | 否 | ^前缀版本范围 |
文件构成
references/PUMP_TOKENIZED_AGENTS.md assets/template/package-lock.json assets/template/src/server.js assets/template/README-FAST.md assets/template/README.md assets/template/package.json