CAIN-42 CAIN Studio
25CAIN-42 Top 25 › DriftGuard (MCP pinning) › 2026-11-02 upgrade

2026-11-02 upgrade

#GapBeforeAfter
DG-11-02-1All key holders shared one pin namespace: one customer could read another's pins or replace them (silently approving an attacker's definition)sharedpins scoped per API key (SHA-256)
DG-11-02-2The README's tool-shadowing defence did not exist: server_id was stored but ignored, a second server's pin replaced the first, and its definition then verifiedreplaced; matchpins keyed by (key, server, tool); no server_id: the single pinned server, or 409 when two or more
DG-11-02-3A definition poisoned from the start (<IMPORTANT> block asking to read ~/.ssh/id_rsa, 'do not tell the user') was pinned silentlypinneddeterministic screen at pin: 409 with findings unless a person acknowledges; keyless POST /v1/screen
DG-11-02-4A pin whose definition name differs from the tool id was acceptedaccepted422
DG-11-02-5Re-pinning erased the previous baselinelostpin history with previous hash
DG-11-02-6No size limit on definitions2 MB accepted64 KB limit (413)
DG-11-02-7Diff said only 'inputSchema' changedinputSchemainputSchema.properties.bcc
DG-11-02-81 vs 1.0 in a schema reported as drift (false alarm)driftmatch

DriftGuard 1.1.0; tests 19 → 23. the public demo pin (made with server_id mail-mcp) still verifies without a server_id: checked on a copy of the live database.

FIRME AI CORPORATION · CAIN-42 is a Byzantine trust fabric. Numbers marked "our own check" were run by us, not by an independent party. Nothing on these pages is a certification.