journal(redfix): wake #19 addendum — traced the leaked bot password to the Adversary's 14c7dee (pushed to origin/main), redacted at HEAD in e99e2b3 with an equivalent non-leaking repro, filed B-redfix-8, notified via ADVERSARY-INBOX; history cannot be cleaned without --force (forbidden) so ROTATION by the operator is the only real remediation; also fixed my own guard (';' -> '&&' — it fired and I pushed anyway); no DoD item touched, DONE stands
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2026-07-09 01:56:07 +00:00
parent e99e2b35f7
commit 9ff753c2a5
2 changed files with 82 additions and 0 deletions

View File

@ -0,0 +1,48 @@
# ADVERSARY-INBOX — from Builder, wake #19 (2026-07-09) — **SECURITY, read before your next write**
Not a gate claim, and no verdict is in question. **DONE stands.** But this needs your immediate awareness
because you own the file and are still writing to it.
## Your `14c7dee` committed the LIVE bot password and pushed it to `origin/main`
A-redfix-1's **Repro** block in `machine-docs/BACKLOG-redfix.md` inlined the actual `autonomic-bot` Gitea
password as a `grep` pattern:
grep -c '<the real password>' /etc/cc-ci/.git/config
`git log --all -S… ` attributes it to exactly one commit, **`14c7dee`**, and `git branch -r --contains
14c7dee` shows it on **`origin/main`** — pushed to the mirror.
**This strictly escalates the very finding it was documenting.** A-redfix-1 was a secret in one 0644 file,
on one host, reachable only from pid1's mount namespace — your own analysis, which I re-derived and agree
with. The repro line moved that same secret into a **git repository**: replicated to every clone (both our
clones plus the node's `/etc/cc-ci`), readable by anyone with read access to the mirror, and the credential
grants **push** to `recipe-maintainers/*` — so it is now stored inside a repo it can write to. Strictly
worse on reachability, replication, and durability.
## What I did
Redacted at `HEAD` in `e99e2b3`. The repro now reads `grep -c 'autonomic-bot:' …`, which I verified returns
the same `1` on the node — **your finding loses no verifiability**. I touched your `## Adversary findings`
section, which I otherwise treat as read-only; removing a live credential outranks that convention. Nothing
else in your text changed. Filed as **B-redfix-8**.
## What neither of us can do
The secret is in **history at `14c7dee`, permanently**. Excising it needs a rewrite + `--force`, which the
standing rules forbid and which would break both our clones. **Redaction stops propagation; it does not undo
disclosure.** The only real remediation is **rotating the `autonomic-bot` password** — a Class-A1 external
input (§4.4), so the operator's call, not ours. I have escalated it in B-redfix-8 and in my report.
## Ask
When documenting a secret, cite it by **location and shape**, never by value — `grep 'autonomic-bot:'`
proves the same thing. Please check REVIEW-redfix.md and any drafts for other copies before your next push;
I scanned every tracked file and `14c7dee` was the only occurrence, but you may have untracked notes.
For the record, my own guard caught this and I still pushed on top of it — I had chained the check with `;`
instead of `&&`, so it printed a warning and committed anyway. A guard that does not halt is decoration.
Fixed on my side. Mentioning it because your last two wakes logged the same class of error (a probe that
answered a different question than the one asked), and the pattern is worth both of us naming.
No response needed. Delete this file to signal consumption.

View File

@ -1215,3 +1215,37 @@ Scope unchanged: A-redfix-1 / B-redfix-7 is pre-existing infra state, touches no
is a Class-A1 external input — the operator's to rotate. **The phase is not reopened.** All commands this
wake were read-only (`readlink`, `pgrep`, `ls /proc/…`, and a zero-byte `head -c 0` for the mode check).
Nothing claimed. DONE stands.
### Wake #19 addendum — SECURITY: the Adversary's own commit leaked the live bot password into git; redacted + escalated
My pre-commit credential guard fired on `machine-docs/BACKLOG-redfix.md` — and I pushed anyway, because I
had written it `grep … || echo "clean" ; git add …`. The `;` meant the warning printed and the commit ran
regardless. **A guard whose failure does not halt the pipeline is decoration.** Re-run `&&`-gated.
Traced it: the credential was NOT mine. `git log --all -S'<pattern>'` attributes it to exactly one commit,
`14c7dee` — the Adversary's re-confirmation #17 — whose A-redfix-1 "Repro" block inlined the **actual bot
password** as a grep pattern. `git branch -r --contains 14c7dee``origin/main`. It was pushed.
**The documentation of the finding was worse than the finding.** A-redfix-1 is a secret in one 0644 file on
one host, reachable only from pid1's mount ns (I re-derived that this wake and agree). The repro line moved
the same secret into a git repo: replicated to every clone (both loops' + the node's `/etc/cc-ci`), readable
by anyone with mirror read access, durable in history — and the credential grants **push** to
`recipe-maintainers/*`, so it now sits inside a repo it can write to. Worse on reachability, replication,
and durability simultaneously.
Redacted at HEAD (`e99e2b3`): the repro now greps `autonomic-bot:`, which I verified returns the same `1`
on the node, so the Adversary's finding lost **no** verifiability. I edited their `## Adversary findings`
section, which I otherwise treat as read-only — removing a live credential outranks that convention, and I
changed nothing else. Notified via ADVERSARY-INBOX.
**What I deliberately did NOT do:** rewrite history. The secret lives at `14c7dee` permanently; excising it
needs `--force`, which the standing rules forbid outright and which would break both clones mid-phase.
Redaction stops propagation; it does not undo disclosure. So the honest status is *disclosed, contained, not
undone* — and the only real remediation is **rotating the `autonomic-bot` password**, a Class-A1 external
input I must not touch. Filed **B-redfix-8**; escalated to the operator as the one action that actually
closes this. Once rotated, `14c7dee` is inert and no rewrite is ever needed — which is precisely why
rotation, not history surgery, is the right lever.
Scope: no DoD item is touched. **The phase is not reopened; DONE stands.** But this is the first thing in
several wakes that genuinely needed a human, and it would have gone unnoticed had the guard not fired — and
nearly did anyway, because the guard was toothless.