Skip to content

Security: edwintuan/next-wallet

Security

SECURITY.md

Security Policy

⚠ NEXT is pre-alpha software. Do not use it with funds you cannot afford to lose. The wallet has not been audited by a third party. See docs/security-model.md for the honest threat model — what we defend against and where the known cracks are.

Reporting a Vulnerability

Do not file a public GitHub issue for security bugs.

If you discover a vulnerability that could compromise users' funds, mnemonics, passwords, or keystore files, please report it privately:

  • Email: edwin.tuan@outlook.com with subject [next-wallet security] <short summary>

We aim to acknowledge within 72 hours and ship a fix or workaround within 14 days for confirmed critical issues. Coordinated disclosure appreciated.

What counts as a security bug

  • Anything that lets an attacker recover a mnemonic, seed, or password from disk, memory, or network traffic
  • Anything that lets an attacker sign a transaction the user did not authorize (incl. transaction substitution, address tampering, replay, signature malleability)
  • Keystore decryption that succeeds with wrong password / tampered file
  • Bypass of the send-tier confirmation gates without user consent
  • Memory disclosure paths that leak SecretBytes / MlockedBytes
  • Vulnerabilities in cryptographic primitive usage (KDF, AEAD, ECDSA, Keccak) — incorrect parameters, missing AAD, wrong hash function, unnormalized signatures

What is not a security bug (for this project)

  • Vulnerabilities in upstream Rust crates — please report to the crate maintainer first; if it impacts NEXT, we'll track separately
  • macOS swap leakage when running without FileVault — documented limit; use full-disk encryption
  • Phishing / shoulder-surfing — outside the wallet's threat surface
  • A malicious TronGrid RPC node lying about balance / history (cannot steal funds, only mislead display) — documented limit
  • Anything that requires the attacker to already have your password or unencrypted mnemonic — these are inputs to the trust model

Scope of the project

  • In scope: any code under src/ and tests/, build configs (Cargo.toml), runtime config schema, keystore format on disk, RPC interaction with TronGrid mainnet + Nile
  • Out of scope: third-party theme files in ~/.config/next/themes/, user's terminal emulator, OS-level swap behavior, network MITM where TLS is properly verified

Recommended hygiene for users

  1. Test on Nile first. Faucet TRX is free; mistakes are free.
  2. Use a real-money wallet that is not a test wallet. Separate mnemonics for separate purposes (see docs/security-model.md).
  3. Write the mnemonic on paper. Keystore file is convenience, not backup.
  4. Run with full-disk encryption. FileVault on macOS, LUKS on Linux.
  5. Don't paste your mnemonic into nxt import -p flag — shell history is plaintext. Use the interactive prompt.
  6. Don't run nxt on a screen-sharing call.
  7. Pin a TRON_API_KEY rather than relying on TronGrid's anonymous tier. Reduces rate-limiting that can mask 0 balance vs fetch failure.

Past security work

  • v0.5: zeroize hardening pass, mlock for mnemonic + seed
  • v0.10.2 ("Safety Supreme"): tiered send confirmation, 3-word mnemonic challenge at init, 30s minimum read countdown, scrollback clear on auto-lock
  • docs/security-audit-v0.4.md: in-repo audit notes from the v0.4 pass

Audits welcome — open a PR against docs/security-audit-v0.X.md with findings.

There aren't any published security advisories