security: scrub on-screen secrets on lock; redact lite console secret args; no-shell wallet rebuild
- Locking the wallet (manual / auto / lite) now calls wipeDisplayedSecrets(), which scrubs + closes any revealed seed phrase, migration seed, or exported key — previously a locked wallet could leave the phrase/key on screen and resident. Runs synchronously, before the async lock round-trip. - The console secret-arg redaction list only had full-node RPC names, so lite verbs (import / timport / encrypt / decrypt / unlock) echoed keys and passphrases into the scrollback and up-arrow history; added them. - The offline wallet-rebuild helper was invoked via a shell string (popen "sh -c") built from paths including the wallet filename, so a crafted name could inject a command; it now refuses any path with a shell metacharacter (rc stays -1 and the existing verify-before-swap fails safe). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -114,6 +114,7 @@ class App {
|
||||
public:
|
||||
App();
|
||||
void wipeSecrets(); // scrub all resident secret buffers; called from ~App() AND the forced-exit path (L-05)
|
||||
void wipeDisplayedSecrets(); // scrub + close any on-screen secret (seed/key displays) on wallet lock
|
||||
~App();
|
||||
|
||||
// Non-copyable
|
||||
|
||||
Reference in New Issue
Block a user