Skip to content

docs(dnn): prod machineKey is OUT OF SCOPE — the runbook's open conditional, closed on evidence - #907

Merged
jsboige merged 1 commit into
masterfrom
docs/machinekey-prod-out-of-scope
Jul 25, 2026
Merged

docs(dnn): prod machineKey is OUT OF SCOPE — the runbook's open conditional, closed on evidence#907
jsboige merged 1 commit into
masterfrom
docs/machinekey-prod-out-of-scope

Conversation

@jsboige

@jsboige jsboige commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

The machineKey runbook (#854) stated the threat model as: "The prod site (dnn.argumentum.myia.io) is the target if it runs the exposed key." That conditional was never tested — it sat open while the sandbox rotation proceeded.

myia-web1 closed it. Classification of the live prod web.config — lengths and algorithm names only, zero values transmitted, per this file's own secret-safe policy:

attribute exposed (sandbox 4b0297ee) prod web1
validationKey 128 hex chars 40 chars
decryptionKey 64 hex chars 48 chars
validation HMACSHA256 SHA1
decryption AES 3DES

All four differ. Not two instances sharing a key — two keys of different generations. 40/48 + 3DES/SHA1 is the legacy ASP.NET shape (validationKey 40 hex = 20 bytes for SHA1, decryptionKey 48 hex = 24 bytes for 3DES); the sandbox used the modern AES/HMACSHA256 shape. Prod has neither the length nor the algorithms of the leaked key.

Consequence

Prod is out of scope of the compromise remediation. No emergency rotation, no maintenance window, no session invalidation on argumentum.games.

The jsboige GO of 2026-07-24 covered the sandbox — the po-2023 box, whose key was genuinely leaked live. web1 declined to extend it to prod and asked for confirmation instead of acting. That was the right call on process grounds (outward-facing, hard to reverse, user unreachable) and it turns out to have been right on the facts too: the rotation would have invalidated every live session for no security benefit.

Kept separate on purpose

SHA1 and 3DES are legacy algorithms. That is a hardening observation, not an incident response — it belongs in a normal maintenance window with explicit jsboige sign-off, not bundled into a compromise action taken while he is unreachable. Recorded as backlog, not executed.

Folding it into the incident would have been the pendulum move: an emergency scoped to one instance quietly growing into an unrelated crypto upgrade on a live public site.

Method note (kept in the doc)

This was settled without any secret crossing a wire. Comparing lengths and algorithm names was sufficient to prove non-identity. When the question is "is this the same key?", compare fingerprints — never values.

Docs-only. No key touched, no server action. Refs #131 #854

🤖 Coordinator ai-01

…nbook

The runbook's threat model said the prod site "is the target IF it runs the
exposed key" and left that untested. web1 classified the live prod web.config
(lengths + algorithm names only, ZERO values transmitted) and the answer is
categorical: all four attributes differ from the exposed sandbox key.

  exposed (4b0297e): validationKey 128 hex / decryptionKey 64 hex / HMACSHA256 / AES
  prod web1:          validationKey 40 chars / decryptionKey 48 chars / SHA1 / 3DES

40/48 + 3DES/SHA1 is the legacy ASP.NET shape (20 bytes for SHA1, 24 for 3DES);
the sandbox used the modern shape. Prod cannot be running the exposed key.

=> Prod is OUT OF SCOPE of the compromise remediation. No emergency rotation,
no session invalidation on argumentum.games. The 2026-07-24 jsboige GO covered
the SANDBOX (po-2023 box, genuinely leaked live); extending it to an
outward-facing prod action would have been unjustified and, as measured,
unnecessary.

Records separately (NOT merged into the incident) that SHA1/3DES are legacy
algorithms: a hardening item for a normal maintenance window with explicit
sign-off, backlog only, not executed.

Method note kept in the doc: non-identity was proven WITHOUT any secret
crossing a wire. Compare fingerprints, never values.

Refs #131 #854

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jsboige
jsboige merged commit fe38274 into master Jul 25, 2026
3 checks passed
@jsboige
jsboige deleted the docs/machinekey-prod-out-of-scope branch July 25, 2026 19:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant