pumpclaw-agent
The skill generates a legitimate Telegram+web payment template but contains an undocumented deposit-wallet pattern that stores private keys in SQLite, plus unused treasury keypair code creating shadow surface.
为什么得出这个结论
1/4 个维度触发发现 1 项声明之外的能力或越权行为。
提取到 10 个一般风险产物,需要结合上下文判断。
没有形成明确的恶意路径。
发现 4 项需要关注的依赖或供应链线索。
风险分是怎么被拉高的
SKILL.md safety rule 'Never handle private keys' conflicts with template storing deposit wallet secrets in SQLite; no explicit documentation of this design decision
server.js:40-43 and server.cjs:72-75 create a treasury Keypair from TREASURY_SECRET_KEY_BASE58 that is never used in any transaction flow
SKILL.md 'Never sign transactions on behalf of the user' conflicts with server signing invoices from deposit keypairs (server.js:116-124, server.cjs:210-225)
最关键的证据
Deposit wallet private keys stored in plaintext SQLite
The template generates per-user deposit keypairs and stores the base58-encoded secret key (deposit_secret_b58) in a SQLite database. This directly contradicts SKILL.md safety rule 'Never handle private keys / secret key material' and creates severe risk if the database file is accessed.
assets/template/src/server.js:77 Unused treasury keypair created from environment secret
Both server.js and server.cjs decode TREASURY_SECRET_KEY_BASE58 into a Keypair and assign it to a 'treasury' variable that is never used in any subsequent code path. This creates shadow attack surface for credential harvesting.
assets/template/src/server.js:40 Transaction signing not declared in SKILL.md
SKILL.md states 'Never sign transactions on behalf of the user', but the template server signs invoice transactions from deposit keypairs (server-controlled wallets). While technically not user keys, this operational behavior is not declared.
assets/template/src/server.js:116 Native module dependency without explicit security controls
better-sqlite3 is a native Node.js module that reads/writes binary database files. If the module or its build artifacts are compromised, the entire database including stored secrets could be exposed.
assets/template/package.json:12 声明能力 vs 实际能力
SKILL.md stamps assets/template/ to customer folder scripts/stamp_template.sh uses tar/bash Solana RPC URL for payment verification better-sqlite3 stores deposit wallets and balances Skill generates project; doesn't execute template deposit_secret_b58 stored in SQLite without encryption 可疑产物与外联
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 | 否 | Major version only; supply chain risk for SDK |
| @solana/web3.js | ^1.98.0 | npm | 否 | Pinned to major version |
| better-sqlite3 | ^12.6.2 | npm | 否 | Native module; database contains plaintext private keys |
| fastify | ^5.8.2 | npm | 否 | Pinned to major version |
| grammy | ^1.41.1 | npm | 否 | Pinned to major version |
| zod | ^4.3.6 | npm | 否 | Pinned to major version |
文件构成
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