Skip to content
Four Providers, 15 CVEs, Three Days

Four Providers, 15 CVEs, Three Days

Forkast.News • October 5, 2026

Between October 2 and October 5, 2026, four distinct identity-layer vulnerabilities emerged, creating a concentrated cluster of security failures. The ZITADEL 10-CVE cluster , Zimbra CVE-2026-73570 , Bouncy Castle CVE-2026-71885 , and MCP OAuth credential theft appear disparate at first glance. They a structural pattern: a failure of trust-through-defaults. In each instance, the system architecture assumed that the presence of a credential or a specific data field was sufficient evidence of identity, bypassing verification of the binding between that credential and the claimed entity.

The ZITADEL incident, disclosed on October 4, involved 10 vulnerabilities across the open-source self-hosted identity provider. CVE-2026-105215 (CVSS 9.1) allowed unauthenticated account pre-hijacking in Login V1 by trusting client-supplied external identity fields without a completed IdP callback. CVE-2026-105209 (CVSS 9.6) enabled cross-organization passkey enrollment: an attacker with user-write permissions in one organization could register an authenticator for a user in any other organization on the same instance, achieving full account takeover. CVE-2026-105211 (CVSS 8.1) permitted MFA bypass via the OTP returnCode delivery type. The shared root cause: flow handlers acting on accounts bound solely by a login name before primary factor verification. The 3.x release line reached end-of-life on August 31, 2026, meaning self-hosted deployments that have not migrated to 4.x are permanently exposed.

The Zimbra vulnerability (CVE-2026-73570, CVSS 8.9) allowed attackers to harvest the platform’s cryptographic root of trust via an unauthenticated command injection path in the SNMP notification service. The stolen secrets – zimbraPreAuthKey, zimbraAuthTokenKey, and zimbraTwoFactorAuthSecret – do not expire when passwords change. As Microsoft’s threat intelligence report documented: the attackers targeted centralized service and authentication secrets rather than individual mailbox passwords. The zimbraAuthTokenKey is the signing key for session tokens across the entire platform; possession of this key enables generation of valid tokens for arbitrary accounts.

Bouncy Castle CVE-2026-71885 (CVSS 9.2) represents a credential binding failure in the Messaging Layer Security implementation. The library stored X.509 certificate chains but never parsed or validated them against the LeafNode’s signature_key, a direct violation of RFC 9420 Section 5.3. An attacker presenting arbitrary credentials could impersonate any MLS group participant, evict the legitimate user, and decrypt subsequent messages. The fix shipped in bc-java 1.86 on September 15, 2026. Exploitation status remains contested: dbu.gs claims active exploitation, but major threat intelligence platforms have not confirmed it.

The MCP OAuth credential theft, disclosed September 28, involved the Anthropic MCP Python SDK (versions 1.9.1 through 2.1.1). When a malicious MCP server returned HTTP 404 for the standard OAuth discovery endpoint, the SDK fell back to retrieving configuration directly from the server – skipping issuer validation entirely. The stolen credentials (OAuth client secret, authorization code, PKCE proof key) are sufficient to obtain valid access tokens from the real identity provider. Machine-to-machine providers are most at risk: they operate without human oversight, and the attack produces no visible anomaly against the authorization server.

The Primitives Are Fine. The Verification Logic Is Not.

These are not failures of encryption. In every case, the underlying cryptographic primitives remained intact. The breakdown occurred in the verification logic – the gap between a system confirming that a credential exists and confirming that the credential is legitimately bound to the claimed identity. ZITADEL accepted client-supplied IdP fields without callback completion. Zimbra stored signing keys in centralized service accounts accessible through default-enabled SNMP. Bouncy Castle stored X.509 certificates without validating the binding to signature keys. The MCP SDK accepted OAuth configuration from an untrusted source without verifying the issuer. Each system defaulted to trust at the exact point where verification should have been enforced.

Why This Breaks Agent Integration

When these identity-layer breaches cascade into agent-integrated environments, the damage multiplies. Compromised Zimbra signing keys allow attackers to forge sessions that appear legitimate to email-integrated agents – the agents inherit the compromised trust anchor. Compromised ZITADEL flows allow attackers to hijack the identity provider that agents rely on for authorization. Compromised Bouncy Castle MLS implementations break the security of agent-to-agent channels, enabling impersonation at the protocol layer. Stolen MCP OAuth tokens allow attackers to operate as a trusted agent endpoint, invisible to standard monitoring because the authorization server sees valid credentials on every request.

The industry is working toward solutions. Okta’s Cross App Access (XAA) protocol replaces static API keys with short-lived, task-scoped tokens and has scaled to over 25 early adopters. The IETF Agent Identity draft proposes OAuth extensions for machine-readable agent authorization but remains confined to human-to-agent flows with no working group adoption. Per Okta research cited by its integration partners, 88 percent of organizations report confirmed or suspected AI agent security incidents. The gap between standardization and deployment continues to widen.

What Organizations Should Do

Audit every identity-provider callback and ensure that client-supplied fields are never trusted without full, server-side verification of callback completion. Treat all cryptographic root-of-trust keys as high-value assets requiring strict access control; disable or firewall SNMP and other management paths that expose them. For MLS implementations, verify that certificate chains are not merely stored but actively parsed and validated against signature keys – relying on default library behavior is insufficient when the implementation does not enforce binding requirements. For MCP and similar agent-framework integrations, explicitly configure issuer validation; upgrading the SDK alone does not close the gap for machine-to-machine providers without the issuer parameter set. The pattern across all four incidents is the same: assume nothing identity based on the mere presence of a credential. Verify the binding.