mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2026-10-27 07:52:03 +00:00
2.5 KiB
2.5 KiB
SeedPass Secret Handling & Local Exposure Review (Item 3)
Status: Done
Date: 2026-02-25
Scope Reviewed
src/seedpass/core/manager.pysrc/utils/fingerprint.pysrc/utils/clipboard.pysrc/utils/memory_protection.pysrc/seedpass/core/portable_backup.pysrc/seedpass/core/backup.pysrc/seedpass/core/encryption.py
Exit Criteria Check (Item 3)
- No secret leakage in logs/temp files/exports by default:
Done - Clipboard, memory lifetime, and file permission checks documented:
Done
Findings
Completed in this pass
- Removed seed phrase logging from fingerprint generation path.
utils.fingerprint.generate_fingerprintno longer logs normalized seed/hash.
- Removed parent-seed plaintext logging from manager setup/save paths.
- Replaced with non-sensitive debug message.
- Added regression test for seed phrase log leakage.
src/tests/test_fingerprint_encryption.py::test_generate_fingerprint_does_not_log_seed_phrase
- Hardened API upload-import tempfile handling.
- Server now applies
0o600permissions on temporary upload files before import.
- Server now applies
- Added API tempfile lifecycle tests.
src/tests/test_api_new_endpoints.pyverifies secure permissions and cleanup on import failure.
- Redacted BIP85 debug logs that exposed key/entropy-derived material.
local_bip85/bip85.pynow logs only non-sensitive success messages.
- Added regression test for BIP85 log redaction.
src/tests/test_bip85_derivation_path.py::test_derive_entropy_logs_do_not_expose_key_material
Current posture
- Clipboard helper clears copied values after timeout if unchanged.
- Covered by
src/tests/test_clipboard_utils.py.
- Covered by
- In-memory secret wrapper exists with best-effort wipe semantics.
- Covered by
src/tests/test_memory_protection.py.
- Covered by
- Key encrypted files are written with
0o600permissions in encryption/backup/export paths.
Operational notes
- Default portable database exports are encrypted; plaintext export requires explicit interactive confirmation.
- Clipboard writes are time-limited and best-effort cleared when unchanged.
- In-memory secret zeroization remains best-effort due to Python runtime constraints.
Evidence
src/tests/test_memory_protection.pysrc/tests/test_clipboard_utils.pysrc/tests/test_fingerprint_encryption.pysrc/seedpass/core/manager.pysrc/utils/fingerprint.pysrc/tests/test_api_new_endpoints.pysrc/seedpass/api.pysrc/tests/test_bip85_derivation_path.pysrc/local_bip85/bip85.py