Report vulnerabilities privately to the maintainers (see README for contact). Do not open public issues containing secret material.
Status: removed from the tree (PR #528); rotation of the exposed values is still PENDING — see the action item below.
tests/conftest.py and tests/.env.example carried the fleet's real
router admin password, Wi-Fi credentials and a hardcoded artifact URL as
public defaults (issue #509). Anyone reading the public repository could
authenticate to the test routers. PR #528 made every credential
env-only (tests/.env, gitignored, auto-loaded) with fail-fast
collection guidance, and the values were removed from the tree — but the
values themselves were live for as long as they were public.
Action item (open): rotate the router admin password and Wi-Fi credentials used by the hardware fleet. Until that happens, treat the routers' LAN/Wi-Fi surfaces as exposed to anyone who read the repository before the fix.
Status: purged from history on 2026-08-27. Merchant identity key rotation required — tracking issue #364.
A deployment backup directory, deploy-backup-20260730/, was
accidentally committed to main as part of PR
#358
(commit e7161ab, 2026-08-26). Found by the Amperstrand security
audit 2026-08-26 (task T7).
deploy-backup-20260730/backup-info.txt— deployment config dump including the merchant private identity key (line 118) and other key/seed material markers.deploy-backup-20260730/tollgate-backup.tar.gz— router filesystem backup containingetc/tollgate/wallet.db(ecash wallet) andetc/tollgate/tokens-to-recover.txt(spendable Cashu token list).deploy-backup-20260730/tollgate-wrt-v0.5.0-backup— router binary image.
mainhistory rewritten (git filter-branch --index-filteron pathdeploy-backup-20260730/) and force-pushed; the legitimate #358/#359 changes are preserved as rewritten commits5e904a1/1e70bca.- No remote branch or tag other than
maincarried the directory (verified viagit ls-remote); the pre-rename fork oftollgate-module-basic-gowas hard-reset separately by Amperstrand.
- GitHub PR refs
refs/pull/358/*still reference the original commite7161abuntil GitHub Support garbage-collects unreachable objects; cached/raw views of that commit may persist in the meantime. - Forks that fetched during the exposure window still carry the files until they rewrite the affected branches.
- Clones made during the window: re-clone, or remove stale refs and run
git gc --prune=now.
- Rotate the merchant identity key (it must be treated as BURNED) — #364.
- Sweep or write off the ~285 sats held on
nofee.testnut.cashu.space(test mint, trivial amount). - Rotate any API keys or endpoints present in the config dump at operator discretion.
