docs(dnn): prod machineKey is OUT OF SCOPE — the runbook's open conditional, closed on evidence - #907
Merged
Merged
Conversation
…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>
42 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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-web1closed it. Classification of the live prodweb.config— lengths and algorithm names only, zero values transmitted, per this file's own secret-safe policy:4b0297ee)validationKeydecryptionKeyvalidationdecryptionAll 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