安全决策报告

pumpclaw-agent

代码存在明确的文档-行为不符:SKILL.md声明"永不签署交易"但实际在buildAndPayInvoice中执行了tx.sign();同时未声明将用户私钥(Base58)存储于SQLite数据库。

安装决策优先 来源: ClawHub 扫描时间: 2026/4/6
文件 11
IOC 10
越权项 1
发现 5
最直接的威胁证据
01
通过SKILL.md获取项目信息,伪装成合法的Telegram+Pump.fun支付模板 初始入口 · SKILL.md
02
部署该模板后,服务器持有所有用户存款钱包的Base58编码私钥 权限提升 · assets/template/src/server.js
03
数据库被攻破后,攻击者可解码私钥并控制所有用户存款钱包(SOL/代币) 最终危害 · assets/template/src/server.js

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

阻止
攻击链与高危发现

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

通过
依赖与供应链卫生

依赖结构存在,但暂未看到明显高危告警。

攻击链

01
通过SKILL.md获取项目信息,伪装成合法的Telegram+Pump.fun支付模板

初始入口 · SKILL.md:1

02
部署该模板后,服务器持有所有用户存款钱包的Base58编码私钥

权限提升 · assets/template/src/server.js:55

03
数据库被攻破后,攻击者可解码私钥并控制所有用户存款钱包(SOL/代币)

最终危害 · assets/template/src/server.js:52

风险分是怎么被拉高的

文档-行为不符(doc_deception) +25

SKILL.md声明"never sign transactions on behalf of the user"但代码在buildAndPayInvoice执行tx.sign()

未声明的私钥存储 +15

deposit_wallets表存储Base58编码的私钥,SKILL.md仅声明"never log or output private keys",未提及数据库存储

供应链风险 +10

package.json依赖使用^前缀版本范围,未锁定具体版本

正面安全措施 +-10

有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声明;若非预期则移除该行代码并使用Pump SDK的代付机制。
高危 文档欺骗

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
1) 在SKILL.md添加"Stores generated deposit keypairs in SQLite"声明;2) 生产环境应使用HSM或钱包SDK的委托机制替代直接存储私钥。
中危 敏感访问

用户私钥在服务器端生成

getOrCreateDepositWallet为每个用户生成新的Keypair并存储私钥,服务器掌握所有用户存款钱包的私钥,数据库被攻破则所有钱包被盗。

assets/template/src/server.js:52
使用PDA(Program Derived Address)或分层钱包避免服务器持有私钥。
中危 供应链

依赖版本未锁定

package.json所有依赖使用^前缀版本范围,允许自动升级,存在依赖供应链攻击风险。

assets/template/package.json:12
使用package-lock.json并验证SHA256,或使用npm install --package-lock-only生成lock文件。
低危 权限提升

票据验证逻辑允许小额欺骗

waitForDeposit使用绝对金额检查(bal >= lamports),用户可向钱包汇入超过请求金额的SOL,系统仍会接受。

assets/template/src/server.js:74
根据业务需求决定是否需要精确金额匹配。

声明能力 vs 实际能力

文件系统 通过
声明 READ
推断 READ
scripts/stamp_template.sh:29 tar复制模板目录
命令执行 通过
声明 NONE
推断 NONE
无shell命令执行
网络访问 通过
声明 READ
推断 READ
server.js:188 fastify.listen仅绑定127.0.0.1
数据库 阻止
声明 WRITE
推断 WRITE
server.js:55-60 未在SKILL.md声明SQLite存储deposit_secret_b58

可疑产物与外联

中危 外部 URL
http://127.0.0.1:3033

assets/template/README-FAST.md:4

中危 外部 URL
http://127.0.0.1:3033/health

assets/template/README.md:19

中危 外部 URL
https://opencollective.com/fastify

assets/template/package-lock.json:111

中危 外部 URL
https://paulmillr.com/funding/

assets/template/package-lock.json:275

中危 外部 URL
https://www.patreon.com/feross

assets/template/package-lock.json:758

中危 外部 URL
https://feross.org/support

assets/template/package-lock.json:762

中危 外部 URL
https://opencollective.com/express

assets/template/package-lock.json:987

中危 外部 URL
https://dotenvx.com

assets/template/package-lock.json:1079

中危 钱包地址
3j5fMGzUMCxWBJ3dV3a7Wz8y2f

assets/template/package-lock.json:1141

中危 外部 URL
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 ^前缀版本范围

文件构成

11 个文件 · 3298 行
JSON 2 个文件 · 2239 行JavaScript 4 个文件 · 858 行Markdown 4 个文件 · 160 行Shell 1 个文件 · 41 行
需关注文件 · 6
references/PUMP_TOKENIZED_AGENTS.md Markdown · 21 行
assets/template/package-lock.json JSON · 2215 行
https://opencollective.com/fastify · https://paulmillr.com/funding/ · https://www.patreon.com/feross · https://feross.org/support · https://opencollective.com/express · https://dotenvx.com · 3j5fMGzUMCxWBJ3dV3a7Wz8y2f · https://paypal.me/kozjak
assets/template/src/server.js JavaScript · 251 行
SKILL.md声明与代码行为不符:交易签名 · SKILL.md未声明私钥存储行为 · 用户私钥在服务器端生成 · 票据验证逻辑允许小额欺骗
assets/template/README-FAST.md Markdown · 31 行
http://127.0.0.1:3033
assets/template/README.md Markdown · 30 行
http://127.0.0.1:3033/health
assets/template/package.json JSON · 24 行
依赖版本未锁定
其他文件 · server.cjs · telegram-bot.cjs · standalone-telegram.cjs · SKILL.md · stamp_template.sh

安全亮点

有API Token认证机制保护端点
使用@fastify/rate-limit进行速率限制
使用zod进行严格的输入验证
服务器仅绑定127.0.0.1而非0.0.0.0
使用事务确认机制处理区块链交易
有防重放的invoice状态管理