pump-security
Defense-in-depth security across Rust, TypeScript, and Bash for the Pump SDK — cryptographic key handling, memory zeroization, secure file I/O, input validation, privilege management, dependency auditing, and a 60+ item security checklist.
- License 许可
- MIT
- 最近更新
- 2026-08-01
- Stars
- ★ 2
- Forks
- 3
01 前言 Front Matter
- name
- pump-security
- metadata
- { "solanaos": { "homepage": "https://github.com/nirholas/pump-fun-sdk" } }
- description
- Defense-in-depth security across Rust, TypeScript, and Bash for the Pump SDK — cryptographic key handling, memory zeroization, secure file I/O, input validation, privilege management, dependency auditing, and a 60+ item security checklist.
03 SKILL.md 正文
Security Practices — Cryptographic Safety, Memory Zeroization & Hardened I/O
Defense-in-depth security across Rust, TypeScript, and Bash: key handling, memory zeroization, secure file I/O, input validation, privilege management, and dependency auditing.
Memory Zeroization
Rust
use zeroize::Zeroize;
struct SecureBytes(Vec<u8>);
impl Drop for SecureBytes {
fn drop(&mut self) {
self.0.zeroize();
}
}
TypeScript
try {
// ... use secretKey
} finally {
secretKey.fill(0);
// Best-effort: GC may have copied the buffer
}
Shell
shred -u "$keypair_file" 2>/dev/null || rm -P "$keypair_file"
RNG Quality
| Language | Source | Verification |
|---|---|---|
| Rust | OsRng |
Verify via solana-sdk internals |
| TypeScript | crypto.getRandomValues |
Node.js built-in CSPRNG |
| Shell | solana-keygen |
Delegates to Rust OsRng |
Keypair Integrity Verification
- Re-derive public key from secret key
- Compare derived key with stored public key
- Sign a test message with the keypair
- Verify the signature with the public key
- Validate Base58 encoding roundtrip
Secure File I/O
- Set permissions to
0o600before writing content (race-free on Unix) - Use
O_CREAT | O_EXCLto prevent overwrites - Write to temp file + atomic rename for crash safety
- Never write secret keys to stdout unless explicitly requested
Input Validation
| Input | Validation |
|---|---|
| Base58 address | Regex: ^[1-9A-HJ-NP-Za-km-z]{32,44}$ |
| File paths | Reject .., prevent traversal |
| Tool inputs | Zod schemas in MCP server |
| Shell arguments | Quoted variables, no eval |
Security Checklist Summary (60+ items)
Key categories:
- Cryptographic library allowlist
- Memory zeroization in all code paths
- File permission enforcement
- Input validation and sanitization
- Error message information leakage prevention
- Dependency auditing (
cargo audit,npm audit) - No network calls during key generation
- Secret key never in logs, error messages, or telemetry
Attack Vectors to Test
| Vector | Defense |
|---|---|
| Weak RNG | Only CSPRNG (OsRng / crypto.getRandomValues) |
| Memory dump | Zeroize on drop/finally |
| File permission leak | 0o600 enforcement |
| Path traversal | Input validation |
| Shell injection | Quoted variables, no eval |
| Dependency supply chain | cargo audit, npm audit |
Patterns to Follow
- Always use approved crypto libraries:
solana-sdk,@solana/web3.js,solana-keygen - Zeroize key material in all code paths (success, error, early return)
- Set file permissions before writing content
- Validate all inputs at the boundary (CLI args, API inputs, file paths)
- Never log or display secret keys
- Run dependency audits in CI
Common Pitfalls
- JavaScript
fill(0)is best-effort — GC may relocate buffers - Rust
Stringtypes may leave copies in memory — useVec<u8>withZeroize chmodafterwritehas a race window — preferfchmodor umask- Error messages must not include secret key material
cargo auditmay miss recently disclosed CVEs — supplement with manual review
04 同仓库更多 Skills
solana-dev
End-to-end Solana development playbook (Jan 2026). Prefer Solana Foundation framework-kit (@solana/client + @solana/react-hooks) for React/Next.js UI. Prefer @solana/kit for all new client/RPC/transaction code. When legacy dependencies require web3.js, isolate it behind @solana/web3-compat (or @solana/web3.js as a true legacy fallback). Covers wallet-standard-first connection (incl. ConnectorKit), Anchor/Pinocchio programs, Codama-based client generation, LiteSVM/Mollusk/Surfpool testing, and security checklists.
xurl
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.
wurk-integration
WURK API integration for monetizing agents with x402 payments on Solana/Base - create social jobs, custom challenges, and agent help tasks
workflows
Manage application workflows including configuration, restart, and removal.
web-search
Search the web, fetch content, extract branding profiles, and capture screenshots from URLs. Use for real-time information, API documentation, current events, design matching, and visual reference.
weather
Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.