diff --git a/inventory/history-exposure-2026-10-08.md b/inventory/history-exposure-2026-10-08.md new file mode 100644 index 0000000..2fc005a --- /dev/null +++ b/inventory/history-exposure-2026-10-08.md @@ -0,0 +1,51 @@ +# Exposed history review — ORGREF-WP-0002-T03 + +Run 2026-10-08. gitleaks v8.21.2, `--redact`, all local refs (`--log-opts=--all`) +of every local clone whose origin is the forge: **160 repositories, no scan +errors**. Raw reports stayed in the session scratchpad. This record contains no +secret value, no commit author identity and no matched text. + +## Result + +283 findings in 25 repositories. After triage: **one real exposure**; everything +else is benign. + +### Real: hardcoded Nextcloud backup token (rotate) + +| Repository | File | Since | In current HEAD | +| --- | --- | --- | --- | +| railiance-bootstrap | `tools/cmd/railiance-backup` line 11 | commit `4381a07`, 2026-02-25 | yes | +| railiance-cluster | `tools/cmd/railiance-backup` line 11 | same value; file last changed 2026-07-07 | yes | + +`NC_TOKEN`, next to a Nextcloud URL, is the upload target for the backup tool. It +has been readable anonymously since February. Required, regardless of closing: +revoke and reissue it in Nextcloud, keep the new one in OpenBao only (this is +the same custody the CCR-2026-0004 offsite backup lane asks for: `NC_WEBDAV` +credentials in OpenBao), and remove the literal from both scripts. Removing it +from HEAD does not remove it from history or from clones; the revocation is the +fix. Routed to railiance-bootstrap and railiance-cluster (hub messages). + +### Benign (no action) + +| Pattern | Where | Why benign | +| --- | --- | --- | +| commit SHAs, sha256 digests, UUIDs | evidence and assessment JSON across the fleet | identifiers, not credentials | +| Kubernetes `secret_uid`, `secret: ` | key-cape, railiance-platform, the-custodian evidence | object metadata, not values (the KEY-WP-0011 exposure was handled then) | +| `-----BEGIN PRIVATE KEY-----` | railiance-platform scripts and schema, net-kingdom console, ops-warden tests | header strings in detectors and validators; the ops-warden test body is `xxx` | +| `kind: SecretStore` | net-kingdom, railiance-platform | store references, no data | +| credential-shaped list | informed-decision `tests/test_intake.py` | redaction test fixtures (synthetic Bearer `abcd…`); owner to confirm when convenient | +| dev defaults | key-cape `scripts/bootstrap-dev.sh` | `dev…` values for local development | +| placeholders | ihp-railiance-probe docs (``), markitect fixtures (`YOUR…`) | not values | +| public material | net-kingdom age public key and `.sops.yaml` fingerprint | public by design | +| signing-key identifiers | target-revenue `Ed25519…` key ids | identifiers, not private keys | +| synthetic hashes | facetted-interfaces `history/FIAM_v0.2_Draft6` fixtures (106) | example data | + +## Limits + +- Only refs present locally. Server-only branches, tags not fetched, and forks + were not scanned. +- Forgejo issues, pull-request comments, wikis, releases and package contents + were not scanned. Packages (container images) can contain secrets in their + layers; scanning them is a separate task if wanted. +- gitleaks' default rules; a credential with no recognisable shape can be missed. +- No validity check was made against any service. diff --git a/workplans/ORGREF-WP-0002-forge-closure-netkingdom-access.md b/workplans/ORGREF-WP-0002-forge-closure-netkingdom-access.md index c480f46..8443f38 100644 --- a/workplans/ORGREF-WP-0002-forge-closure-netkingdom-access.md +++ b/workplans/ORGREF-WP-0002-forge-closure-netkingdom-access.md @@ -180,7 +180,7 @@ confirmation moves to the owners under T06. ```task id: ORGREF-WP-0002-T03 -status: todo +status: done priority: high state_hub_task_id: "9c2ca7be-23f8-58c5-9bfd-e44a26ce4584" ``` @@ -194,6 +194,15 @@ rotation through `warden route`. Closing a repository does not un-publish history, so a leaked credential needs rotating either way. Record the scan scope and results without reproducing any value. +2026-10-08: done. gitleaks (redacted) over all local refs of 160 forge +repositories: 283 findings in 25 repositories. One real exposure: a Nextcloud +backup token (`NC_TOKEN`) hardcoded in `tools/cmd/railiance-backup` in +railiance-bootstrap and railiance-cluster, public since 2026-02-25 and still in +HEAD. Routed to both owners for revocation, OpenBao custody and removal. The +rest is benign (identifiers, digests, test fixtures, placeholders). Record and +limits: `inventory/history-exposure-2026-10-08.md`. The rotation is tracked with +the owners. + ```task id: ORGREF-WP-0002-T04 status: wait