62 min read

Forged from 2016: How Storm-0558 Turned One Stolen Signing Key into U.S. Government Email Access

A 2016 consumer Microsoft signing key, never rotated, forged tokens that read U.S. government email for six weeks before a paying customer noticed. A technical reconstruction.

Permalink

1. A 2016 Key That Forged 2023 Government Email

On June 15, 2023, an analyst at the U.S. State Department's Security Operations Center was sifting through MailItemsAccessed events in Microsoft 365 Purview audit logs when something did not fit. A ClientAppID was reading mailboxes that did not match any application the State Department ran. The tokens that ClientAppID had presented to Exchange Online were cryptographically valid. They had been signed by a key Microsoft itself had published. Just not in 2023.

The certificate for that key was issued April 5, 2016. It had expired April 4, 2021 [1]. And per Microsoft's own admission to the Cyber Safety Review Board nine months later, nobody at Microsoft can publicly tell you how Storm-0558 got hold of it [@csrb-report-2024; @msrc-key-acquisition].

The State Department notified Microsoft on June 16, 2023 [2]. The Cybersecurity and Infrastructure Security Agency was looped in within days. On July 11, 2023, Microsoft published its first public mitigation post, attributing the campaign to a China-based actor it called Storm-0558 and reporting that approximately 25 organizations were affected [3]. Three days later, the Microsoft Threat Intelligence team published a longer technical analysis confirming the same actor had used "forged authentication tokens" beginning May 15, 2023 [4].

"The Board finds that this intrusion was preventable and should never have occurred. The Board also concludes that Microsoft's security culture was inadequate and requires an overhaul." -- Cyber Safety Review Board, April 2, 2024 [2]

The plain English of what happened is this. Storm-0558 had stolen one private signing key. By the construction of Microsoft's identity infrastructure, that key was authoritative for the consumer-grade Microsoft Account (MSA) issuer -- the same issuer that signs tokens for @outlook.com, @live.com, Xbox accounts, and personal applications. The actor used the key to mint OpenID Connect access tokens that named enterprise mailboxes as their target. Those tokens should not have been accepted by Exchange Online, because Exchange Online is an enterprise resource and the signing key was a consumer issuer's. But they were accepted.

Once accepted, they granted read access to the named mailboxes. For six weeks, that access was active and uninterrupted. The Cyber Safety Review Board's final tally puts the harvest at approximately 60,000 emails from 10 State Department accounts and a total of 22 enterprise organizations along with approximately 503 related personal accounts [2]. Identified individual victims include U.S. Commerce Secretary Gina Raimondo, U.S. Ambassador to China Nicholas Burns, and U.S. House of Representatives accounts that publicly include Congressman Don Bacon (R-NE) [2].

Signing-key forgery

A class of attacks in which an adversary obtains an identity authority's private signing key and uses it to mint cryptographically valid credentials (tokens, tickets, or assertions) that no downstream defender can distinguish from those issued by the legitimate authority. MITRE catalogs the technique family as T1606, "Forge Web Credentials," with sub-techniques for web cookies (T1606.001) and SAML tokens (T1606.002) [@mitre-t1606; @mitre-t1606-002].

Four facts about this incident are what make it architecturally important, and each is a separate failure with its own remediation path. The first is that the stolen key was seven years old. It was issued in 2016 and had not been rotated since [2]. The second is that the validator on the enterprise side accepted a token signed by the wrong issuer for an enterprise resource. The third is that the cloud provider did not detect the breach -- a paying customer did, on routine threat-hunting against an audit log the customer had to pay extra to collect. The fourth, perhaps most uncomfortable, is that the cloud provider does not know how its own root signing secret was stolen.

Microsoft published a hypothesis in September 2023 (a crash dump exfiltrated through a compromised engineering account) [5], partially walked it back in March 2024 ("we have not found a crash dump containing the impacted key material") [5], and three weeks later the CSRB concluded definitively: Microsoft "has been unable to determine how or when Storm-0558 obtained the MSA key" [2].

The "Storm-0558" name is Microsoft's. Microsoft adopted a weather-themed taxonomy on April 18, 2023, in which Storm-NNNN denotes a developing actor pending attribution and family names like "Typhoon" indicate origin -- in this case, China [6]. After attribution work matured, Microsoft renamed the group "Antique Typhoon" in August 2024 [4].

Each of those four facts is the closure of a separate architectural failure, and each is fixable in isolation. So how did all four fail at once? That answer begins with where the attack class came from, and why it had been written about for six years before it caught the State Department's attention.

2. The Lineage of Signing-Key Forgery

Storm-0558 is not a novel attack class. The primitive it instantiates -- steal an identity authority's signing secret, mint cryptographically valid tokens that no downstream defense can distinguish from legitimate ones -- has a six-year published lineage and an even longer informal one. The most important word in the previous sentence is "lineage." Each generation widened the trust domain the forgery primitive defeats.

Storm-0558 is the cloud-provider generalization of a technique whose first formal name dates to November 2017, when Shaked Reiner of CyberArk Labs published a CyberArk Threat Research post titled Golden SAML: Newly Discovered Attack Technique Forges Authentication to Cloud Apps [7]. Reiner named the technique deliberately, riffing on Benjamin Delpy's earlier "Golden Ticket" name for the Kerberos analog.

Walking the lineage forward in order from oldest primitive to Storm-0558 is the cleanest way to see what is genuinely new in 2023.

Ctrl + scroll to zoom
Five generations of identity-authority forgery, 1997 to 2023. Each generation widens the trust domain the forgery primitive defeats: from a single host to a single forest to a single federation to a single victim's federation to a cloud provider's own consumer identity infrastructure.

Generation one is Pass-the-Hash, first published as working exploit code by Paul Ashton on NTBugtraq in April 1997 (a modified Samba SMB client whose orig_client.c diff is dated Tue Apr 8 17:27:29 1997) [8] and described in Microsoft's own canonical whitepaper as the user-level baseline that all later generations replaced [@ms-pth-paper; @mitre-t1550-002]. The attacker captures the NTLM hash from a host they have already compromised and re-presents it to other Windows hosts. No password is recovered, no signing infrastructure is touched. The CIFS/SMB authentication exchange that PtH abuses passes the NTLM hash as a cryptographic proof of knowledge without ever needing the plaintext password -- which is why hashing the password did not reduce the attacker's working set. The blast radius is a single Windows host or, when paired with lateral movement, a constellation of hosts that share a credential. The trust authority being attacked is the user account, and the prerequisite is local code execution.

Generation two is Golden Ticket, attributed to Benjamin Delpy's mimikatz tool from approximately 2014 [@mitre-t1558-001; @mimikatz-kerberos; @crowdstrike-golden-ticket]. Where Pass-the-Hash forges user credentials, Golden Ticket forges Kerberos Ticket-Granting Tickets by signing them with the stolen krbtgt account's password hash from a domain controller. A forged TGT carries arbitrary PrivAttrCert SIDs, so the attacker can claim membership in any AD group, including Domain Admins. The blast radius widens from a host to an entire Active Directory forest. The trust authority being attacked is the forest's Key Distribution Center, and the prerequisite is extracting the krbtgt hash from a domain controller -- a one-time theft that, until krbtgt is rotated, lets the attacker mint TGTs indefinitely.

Generation three is Golden SAML, the technique Reiner named in 2017 [7]. The vector is the same shape: steal the AD FS Token-Signing private key, forge SAML assertions, present them to any cloud Service Provider federated to that AD FS. Quoting Reiner verbatim, the technique "enables an attacker to create a golden SAML, which is basically a forged SAML 'authentication object,' and authenticate across every service that uses SAML 2.0 protocol as an SSO mechanism." The blast radius widens again: from a single forest to every cloud Service Provider configured to trust that customer's AD FS -- Azure, AWS, vSphere, and any SaaS in the customer's SSO catalog. CyberArk published a proof-of-concept tool, shimit, the same year [9].

The naming lineage is deliberate. Delpy's "Golden Ticket" was an explicit reference to the visual of unlimited, never-expiring access; Reiner's "Golden SAML" was equally explicit homage to Delpy. Reiner notes the connection openly in the original CyberArk post: "the golden SAML name may remind you of another notorious attack known as golden ticket, which was introduced by Benjamin Delpy who is known for his famous attack tool called Mimikatz" [7]. Storm-0558 is the unnamed fifth generation.

Generation four is Sunburst, December 2020. The Russian Foreign Intelligence Service (SVR) compromised the SolarWinds Orion build pipeline, planted a backdoor in Orion updates, and from that initial-access foothold used Golden SAML against the federations of victim organizations to mint forged SAML tokens for Microsoft 365 and other federated SaaS [@aa20-352a; @cyberark-golden-saml-revisited]. Microsoft itself was among the victims. The company's February 2021 final update acknowledged that SVR had accessed source code for "small subsets" of Azure, Intune, and Exchange components but found "no evidence of access to production services or customer data," and reported that the actor was not able to gain access to privileged credentials or apply the SAML forgery techniques against Microsoft's own corporate domains [10].

The blast radius pattern of Sunburst was: one supply-chain compromise on the way in, then Golden SAML in each federation once inside. CISA attributed the SAML-token forgery technique explicitly in AA20-352A and named the SVR as the responsible actor in an April 2021 update to the advisory [11].

Golden SAML

A 2017 attack technique by which an adversary who possesses the AD FS Token-Signing private key forges SAML 2.0 assertions and authenticates as any user to any cloud Service Provider that federates with that AD FS. Cataloged by MITRE as T1606.002 ("Forge Web Credentials: SAML Tokens") and named by Shaked Reiner of CyberArk Labs in deliberate homage to Mimikatz's "Golden Ticket" [@mitre-t1606-002; @reiner-golden-saml].

Generation five -- the one this article is about -- is Storm-0558. The earlier four generations had one structural property in common: the trust authority being forged was the customer's identity infrastructure. The customer's NT account database, the customer's domain controller, the customer's AD FS Token-Signing certificate, the customer's Orion-installed SolarWinds environment that fed those things. Sunburst, when it reached Microsoft, attacked Microsoft as a customer of its own corporate AD FS infrastructure. Storm-0558 attacked something different: the cloud provider's own consumer identity-provider signing key. The trust authority being forged was Microsoft's MSA issuer -- the consumer-tier signing infrastructure that Microsoft itself operates as a service.

The blast radius of an attack of this shape is bounded only by where the relying-party validation libraries accept the cloud provider's issuer. In Storm-0558's case, as Wiz Research showed in independent analysis, the key could in principle have signed tokens accepted by Outlook.com, SharePoint, Teams, OneDrive, and any third-party multi-tenant application using Microsoft's converged v2.0 endpoint that accepts "Sign in with Microsoft" for personal accounts [1]. The publicly documented exploitation was scoped to Exchange Online and Outlook Web Access, but, as Wiz's authors put it, "the compromised signing key was more powerful than it may have seemed" [1].

So Storm-0558 is generation five in a chain whose earlier four generations had been documented, named, simulated, and operationalized for the better part of a decade. Sunburst still required compromising one customer's federation at a time. Storm-0558 compromised something different: Microsoft's own consumer identity provider. To understand how a consumer signing key could authenticate against an enterprise mailbox, we have to look at three architectural decisions Microsoft made between 2016 and 2022 -- and how they layered on top of an unrotated 2016 key.

3. The Architecture Before Storm-0558

Two parallel Microsoft identity providers operate under one corporate roof. The first is the consumer Microsoft Account (MSA) issuer, which signs tokens for @outlook.com, @live.com, Xbox accounts, and the personal-account flavor of "Sign in with Microsoft." The second is the enterprise Microsoft Entra ID issuer (formerly Azure AD), which signs tokens for @contoso.com-style workforce identities under a per-tenant issuer URL. Each issuer has its own signing keys and its own JWKS endpoint -- the public-key distribution endpoint that relying parties fetch to validate signatures.

These are separate systems with separate signing infrastructure, but the cross-tier distinction is finer than "different domains." Both the MSA and Entra ID issuers publish their v2.0 OpenID Connect tokens under the same login.microsoftonline.com host. What distinguishes them is the tenant GUID inside the issuer URL. The MSA "consumers" tenant has the well-known GUID 9188040d-6c67-4c5b-b112-36a304b66dad, so its v2.0 OIDC issuer is https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0 (verifiable live from the MSA OpenID Connect discovery document) [12]. Every Entra ID enterprise tenant has its own tenant GUID, so its issuer is https://login.microsoftonline.com/{enterprise-tenant-GUID}/v2.0.

Microsoft's own July 11, 2023 disclosure put it plainly: "MSA (consumer) keys and Azure AD (enterprise) keys are issued and managed from separate systems and should only be valid for their respective systems. The actor exploited a token validation issue to impersonate Azure AD users and gain access to enterprise mail" [3]. The architectural sentence to hold on to from that paragraph is should only be valid for their respective systems. The next 1,500 words are an explanation of how that "should" became "did not."

JSON Web Token (JWT)

A compact, URL-safe token format consisting of three Base64URL-encoded parts: a header (algorithm and key identifier), a payload (claims like iss (issuer), sub (subject), aud (audience), exp (expiration), nbf (not-before), and application-specific claims), and a signature over the header and payload. JSON Web Token Best Current Practices are codified in IETF RFC 8725 [13].

JWKS and Key ID (kid)

JWKS is the JSON Web Key Set a token issuer publishes at a well-known URL. Each key in the set carries a kid (Key ID). The JWT header names a kid, and the relying party uses it to locate the matching public key from the issuer's JWKS for signature verification. RFC 8725 specifies that "validators MUST be able to handle JWTs signed with different algorithms" and that the kid lookup is bound to a specific issuer's keys, never to a global key namespace [13].

To understand the cross-tier flaw, walk a standard JWT validation flow in order. Step one: the relying party parses the JWT header to read the alg and kid. Step two: it looks up the issuer's JWKS using the iss claim from the payload (or a hard-coded issuer URL it trusts). Step three: it locates the public key whose kid matches the one in the header. Step four: it verifies the signature using that key.

Step five is the one that matters. The validator checks the payload claims: iss must match the trusted issuer for this resource, aud must match this resource's identifier, exp and nbf must bracket the current time, and any application-specific tenant or scope claims must be enforced [13]. RFC 8725 (the IETF JWT Best Current Practices, published February 2020) makes step five mandatory: "the issuer of the JWT MUST be validated to ensure that it is from a trusted source." When step five does not happen, the entire validation reduces to "the signature is valid for some key the issuer signed something with," which is not the same as "the token authorizes the bearer for this resource."

Ctrl + scroll to zoom
The standard JWT validation flow. The bug Storm-0558 exploited lives in the last step -- where the relying party is supposed to enforce that iss and aud match the trusted issuer for this resource. When that check is skipped, a signature from any issuer the validator can fetch the JWKS for becomes acceptable.
Microsoft Account (MSA) vs Entra ID

Microsoft Account is the consumer identity provider for @outlook.com, @live.com, Xbox, and personal-account "Sign in with Microsoft" flows. Its v2.0 OpenID Connect issuer is https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0 -- the MSA "consumers" tenant on the shared login.microsoftonline.com host [12].

Microsoft Entra ID (formerly Azure Active Directory) is the enterprise identity provider for tenant-scoped workforce identities like user@contoso.com, with per-tenant issuers of the form https://login.microsoftonline.com/{enterprise-tenant-GUID}/v2.0 on the same host. The cross-tier distinction is therefore tenant-GUID-vs-tenant-GUID inside the same v2.0 URL template, not domain-vs-domain. The two systems are operationally separate with separate signing keys, separate JWKS endpoints, and separate intended audiences [@msrc-storm0558-jul11; @msa-oidc-discovery].

Now bring in the three architectural decisions that lined up to create Storm-0558's window.

The first decision, in September 2018, was that Microsoft published a converged metadata endpoint. Microsoft's own September 6, 2023 retrospective is explicit about the motivation: "To meet growing customer demand to support applications which work with both consumer and enterprise applications, Microsoft introduced a common key metadata publishing endpoint in September 2018" [5].

The point of the converged endpoint was developer ergonomics. Build one app, use one validation library, accept users from @outlook.com and @contoso.com alike. Internally, the shared validation library would verify signatures against either issuer's keys, and was documented to expect that callers would add their own issuer and scope checks for resource-side authorization decisions.

The September 2018 decision was a developer-experience choice, not a security choice. Microsoft was responding to demand for unified consumer/enterprise app flows. The validation library it shipped could check iss, but the design left that decision to the caller -- under the (reasonable, at the time) assumption that each caller best understood which issuers should be acceptable for its resource. The flaw Storm-0558 exploited was not a bug in the library; it was a missing line in a caller five years later.

The second decision, in 2022, was that Microsoft's mail platform team migrated Outlook Web Access (OWA) and Exchange Online's token-validation code to consume that converged endpoint without adding the issuer and scope check the library expected callers to add.

The exact verbatim language from Microsoft's September 6, 2023 retrospective is worth quoting: "Developers in the mail system incorrectly assumed libraries performed complete validation and did not add the required issuer/scope validation. Thus, the mail system would accept a request for enterprise email using a security token signed with the consumer key" [5]. Two systems, both built by Microsoft, with a shared interface contract that was undocumented at the precise boundary that mattered.

The third precondition, which is not strictly a 2018-or-2022 decision but rather a non-decision running through both, is that the 2016 MSA consumer signing key had never been rotated. The CSRB report is direct about why: "Microsoft automated the key rotation process in the enterprise system with the intent for the consumer MSA system to follow and use the same technology, but it had not done so in the consumer MSA system before the intrusion" [2].

The MSA system had previously rotated keys manually. In 2021, the CSRB notes, Microsoft paused manual MSA rotation after a manual-rotation-related cloud outage, and the automated replacement never arrived. The 2016 key stayed live for seven years. Its certificate, per Wiz Research's recovery from public JWKS history, was issued April 5, 2016, and expired April 4, 2021 -- which means even after the certificate's nominal expiry, the underlying signing key was still accepted by the converged validator [1].

By 2022, the four preconditions for Storm-0558 were all in place. (1) An unrotated 2016 MSA consumer signing key. (2) Software-resident key custody (no HSM) for that key. (3) A 2018 converged metadata endpoint whose validation library left issuer/scope enforcement to callers. (4) A 2022 mail-platform migration onto that endpoint with the issuer/scope check missing. All that was needed was the attacker holding the key.

These three (or four, counting the implicit software custody) factors did not align by accident. Each was an independent decision, made for an independent reason, by people working in good faith on different timelines. Developer ergonomics in 2018, mail-platform consolidation in 2022, a paused rotation process in 2021. None of them was a security decision. None of them was a vulnerability when shipped in isolation.

The 2018 library would happily check iss if the caller asked it to. The 2022 mail platform would happily reject a consumer-key-signed token if the integrator had added the check. The unrotated key would not have mattered if either of the validation layers had enforced separation. Storm-0558 required all four to be wrong at once. They were.

4. The Attack Chain, Step by Step

The attack itself happened in five operational stages. The forged-token activity began May 15, 2023 and continued until Microsoft remediated on July 5, 2023, after the State Department's notification on June 16 [@ms-security-jul14; @csrb-report-2024]. Forty-one days.

By the time the campaign was contained, Storm-0558 had been inside the cloud's identity infrastructure long enough to harvest tens of thousands of emails. What the attacker did is now mostly understood. What is not understood is how the attacker got the key in the first place.

Ctrl + scroll to zoom
Storm-0558 attack chain, end to end. The first arrow is the unknown step. Microsoft's September 2023 hypothesis was partially retracted in March 2024, and the April 2024 CSRB report states Microsoft cannot determine how the key was obtained.

4.1 Key acquisition (mechanism unknown)

What is known is that by May 15, 2023, Storm-0558 held a valid 2016 MSA signing key. What is unknown -- and this is the most important sentence in the entire article -- is how the actor obtained it.

Microsoft's September 6, 2023 retrospective offered a four-step hypothesis. A signing system crashed in April 2021. The crash generated a memory dump. The signing key was supposed to be redacted from such dumps, but a race condition allowed it through. The dump was supposed to remain inside an air-gapped production-isolated network but was migrated to the corporate debugging network. There, the credentials of a Microsoft engineer's account were compromised by an actor consistent with Storm-0558's tradecraft, and the dump was exfiltrated.

That was the September 2023 story.

Three weeks after that retraction, the Cyber Safety Review Board published its report. The CSRB's finality on the question is uncompromising: Microsoft "has been unable to determine how or when Storm-0558 obtained the MSA key" [2]. The Board's investigation, which ran for seven months and drew on interviews with Microsoft engineers, the State Department, CISA, and independent reviewers, did not yield a confirmed mechanism. It identified candidate paths -- crash-dump migration, debugging-environment access, a compromised engineering account -- but found no artifact that closed any of them.

The epistemic shape of this finding deserves naming. Three years on, the cloud provider responsible for authenticating billions of users cannot publicly tell its customers how the most security-critical secret in its consumer identity stack was stolen.

That is not a minor footnote. As we will see in Section 7, it shapes Microsoft's entire architectural response: every Secure Future Initiative commitment about hardware-backed key custody, automatic rotation, and confidential signing has to defeat plausible mechanisms because the actual one cannot be enumerated.

"Our leading hypothesis remains that operational errors resulted in key material leaving the secure token signing environment that was subsequently accessed in a debugging environment via a compromised engineering account." -- Microsoft Security Response Center, March 12, 2024 update to the September 6, 2023 Storm-0558 retrospective [5]

4.2 Token forgery

With the private key in hand, forging an OpenID Connect access token is mechanical. The header names the algorithm Microsoft uses (RS256, RSA signature with SHA-256 padding, in this case) and the kid of the 2016 key. The payload claims identify the target user (sub), the target tenant where applicable, the requested audience (Exchange Online's resource URI), and validity timestamps.

The actor signs the header-and-payload with the stolen private key, Base64URL-encodes the three parts, and joins them with periods. The result is a valid JWT, indistinguishable from one Microsoft itself would mint. Why? Because the cryptographic verification any relying party performs is, by construction, "does this signature decrypt with the public key whose kid is named in the header?"

Storm-0558 forged tokens against both the legitimate MSA scope (Outlook.com mailboxes belonging to consumer accounts -- the intended use of the 2016 key) and the illegitimate cross-tier scope (enterprise Exchange Online mailboxes belonging to organizations like the U.S. State Department, which were never the intended audience for an MSA-signed token). The legitimacy of the signature did not change between the two. The difference was on the relying-party side.

4.3 The cross-tier validation flaw

This is the bug. The OWA and Exchange Online code path that received an incoming token, parsed the header, fetched the public key from the converged metadata endpoint, and verified the signature did not, after a successful signature verification, separately enforce that the token's iss claim matched an issuer authorized for enterprise email.

The shared validation library was perfectly capable of performing the issuer check, but only if asked. The OWA/Exchange Online caller did not ask.

The fix Microsoft eventually shipped is described in its own September 6, 2023 retrospective with the verbatim line "this issue has been corrected using the updated libraries" [5].

Wiz Research, looking at the same flaw from outside, framed the architectural consequence. The actor's compromised key "could have theoretically used the private key it acquired to forge tokens to authenticate as any user to any affected application that trusts Microsoft OpenID v2.0 mixed audience and personal-accounts certificates" [1]. The actual exploitation was scoped to email, but the addressable scope was larger.

Token signing key

The private key an identity provider uses to sign authentication tokens it issues. Whoever holds the signing key can mint tokens cryptographically indistinguishable from those issued by the legitimate provider. The security of the identity system, in the absence of independent issuer/scope/tenant validation on the relying-party side, depends entirely on the custody of this key. The CSRB report describes its compromise as the central enabler of Storm-0558 [2].

Issuer and audience (iss and aud) validation

The check, performed by a JWT relying party after signature verification, that the token's iss claim matches a permitted issuer for the requested resource and the aud claim matches the resource's identifier. RFC 8725 codifies the combined obligation across two adjacent sub-sections: Section 3.8 ("Validate Issuer and Subject") makes iss and sub validation mandatory, and Section 3.9 ("Use and Validate Audience") makes aud validation mandatory [@rfc-8725; @rfc-8725-html]. Skipping either -- as the OWA/Exchange Online path did before mid-2023 -- collapses the security model to "any signature from any issuer the validator knows about is acceptable for any resource."

The function name GetAccessTokenForResource has been widely repeated across secondary coverage of Storm-0558 as the locus of the validation flaw. The name does not appear in any of the four primary sources: Microsoft's July 14, 2023 analysis, the September 6, 2023 retrospective, the CSRB report PDF, or the Wiz Research post. This article therefore describes the flaw functionally, as Microsoft itself did, without naming the function symbol [@msrc-key-acquisition; @csrb-report-2024; @wiz-storm0558].

The single missing check the OWA path needed to make -- and now does -- is mechanical. In pseudocode, the difference is exactly one if-statement:

JavaScript-style pseudocode The missing iss/aud enforcement (RFC 8725 Sections 3.8 and 3.9) read-only
// Pseudocode. Pre-2023 OWA path did the first two steps and skipped the third.

function verifyEnterpriseToken(jwt, tenantId, resource) {
const header = parseJwtHeader(jwt);
const payload = parseJwtPayload(jwt);

const issuerJwks = fetchJwks(payload.iss);
const key = issuerJwks.find(k => k.kid === header.kid);
if (!key) throw new Error('unknown kid');

if (!verifySignature(jwt, key)) throw new Error('bad signature');

// The missing steps. RFC 8725 Sections 3.8 and 3.9 require both.
const allowedIssuer = 'https:' + '//login.microsoftonline.com/' + tenantId + '/v2.0';
if (payload.iss !== allowedIssuer) {
  throw new Error('issuer not authorized for this enterprise tenant');
}
if (payload.aud !== resource) {
  throw new Error('audience does not match resource');
}

return payload;
}

// Storm-0558's forged token carried payload.iss = 'https:' + '//login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0'
// (the MSA consumers tenant). kid: a 2016 MSA key. Signature: valid. Issuer match: never checked.

4.4 Mailbox access and exfiltration

With validated tokens, the actor authenticated to Outlook Web Access and to Exchange Web Services as the target enterprise users. Once authenticated, the activity looked like any other authenticated user session: enumerate folders, fetch messages, read attachments.

Storm-0558 selected high-value targets. The CSRB final tally is, again, approximately 60,000 emails from 10 State Department accounts; 22 enterprise organizations in total; approximately 503 related personal accounts [2]. Named individual victims publicly include U.S. Commerce Secretary Gina Raimondo, U.S. Ambassador to China Nicholas Burns, and U.S. House of Representatives accounts including Congressman Don Bacon (R-NE), who confirmed in August 2023 that the FBI had notified him his personal and campaign email accounts were among those compromised [2].

The campaign ran during what Microsoft characterized as China Standard Time business hours, with a working-hours heat-map pattern visible in the telemetry [4]. The duration was at least six weeks of active access: May 15, 2023 to June 16, 2023 from the attacker's earliest documented activity to the State Department's notification, plus an additional ~20 days until Microsoft's July 5 remediation date.

4.5 The broader blast radius (potential, not exploited)

Wiz Research's independent analysis published in mid-2023 made an argument the world had not yet absorbed. The same 2016 MSA signing key could in principle have signed OpenID v2.0 tokens for many more Microsoft services than just email. The Wiz authors enumerated SharePoint, Teams, OneDrive, and any third-party multi-tenant application supporting "Sign in with Microsoft" with mixed-audience personal-account acceptance [1].

The framing they wrote -- "if a signing key for Google, Facebook, Okta or any other major identity provider leaks, the implications are hard to comprehend" -- is the right framing [1].

There is no public evidence that Storm-0558 exploited the broader scope. The breach the world saw is the breach Microsoft and CISA found by enumerating one specific service's logs. Whether the broader scope was exploited and not detected is, as we will note in Section 10, an unanswered question.

Six weeks of access. Approximately 60,000 State Department emails. The cloud provider did not notice. So who did notice, and how?

5. Why a Paying Customer, Not Microsoft, Caught It

On June 15, 2023, the State Department SOC analyst who first noticed Storm-0558 was performing routine threat-hunting against Microsoft 365 Purview audit logs. The specific event type that surfaced the anomaly was MailItemsAccessed, an audit record that fires whenever a mailbox item is read or fetched. It captures who read it (UserId), from where (ClientIPAddress), with what application (ClientAppID, AppID), and against which item (InternetMessageId and folder).

The detection technique was a baseline-deviation check. The State Department maintained a list of legitimate (ClientAppID, AppID) pairs that historically read mailboxes belonging to its employees. Storm-0558's forged-token sessions presented AppID values that were not on the list.

Two days later, CISA and the FBI published joint advisory AA23-193A formalizing what the State Department had done into a recommended detection methodology. The verbatim language in the advisory: "In Mid-June 2023, an FCEB agency observed MailItemsAccessed events with an unexpected ClientAppID and AppID in M365 Audit Logs. ... The affected FCEB agency identified suspicious activity by leveraging enhanced logging -- specifically of MailItemsAccessed events -- and an established baseline of normal Outlook activity (e.g., expected AppID). The MailItemsAccessed event enables detection of otherwise difficult to detect adversarial activity" [@aa23-193a; @aa23-193a-pdf].

MailItemsAccessed

A Microsoft 365 audit event that records every read or fetch operation against a mailbox item. The event captures the user, source IP, client and application IDs, and the message identifier accessed. Because forged-token sessions necessarily use an AppID outside an organization's normal application inventory, MailItemsAccessed is the highest-signal event class for detecting mailbox-token abuse [14].

Purview Audit (Premium)

A Microsoft 365 audit-log tier that, pre-July 2023, gated several high-value security event classes (including MailItemsAccessed) behind a paid add-on. Most federal civilian agencies and many commercial tenants were on Purview Audit (Standard) and did not collect these events. The State Department had paid for Premium and was therefore in a position to detect Storm-0558 from its own telemetry [@aa23-193a; @ms-blog-jul19-recovered].

Ctrl + scroll to zoom
Detection chronology. The State Department detected the anomaly on June 15, 2023 and notified Microsoft on June 16. CISA was informed shortly after and published the joint advisory on July 12. The Wyden letter on July 27 catalyzed the DHS CSRB review announcement on August 11.

Microsoft's confirmation step came after the State Department's notification, not before. Once notified, Microsoft compared the kid on the suspicious tokens against its own published MSA key rotation history and found that the kid corresponded to a 2016 key whose certificate had expired April 4, 2021 [@wiz-storm0558; @ms-security-jul14]. The signature was cryptographically valid for the 2016 key. The 2016 key should never have signed an enterprise-tier token. Both halves of that statement were true at the same time, and the second half is what told Microsoft this was a key compromise rather than a stolen-credential issue.

The structural fact about this detection -- the one that puts every other event in this article in its proper context -- is that MailItemsAccessed was, pre-incident, a Purview Audit (Premium) tier feature [14]. The State Department had paid for Premium. Most federal civilian agencies and many commercial tenants had not. If the State Department had been on Purview Audit (Standard), the event class that surfaced Storm-0558 would not have been collected at all, and the breach would have run longer and gone wider before anyone noticed. The CSRB report makes this connection explicit: the structural critique that follows in Section 6 is not about one bug or one missing check. It is about the commercial logging-tier structure of cloud identity, and about who is in a position to detect a CSP-level compromise when the CSP itself is not [2].

The detection methodology the State Department used is reproducible in pseudocode. The logic, after audit-log ingestion into a SIEM, is small.

JavaScript-style pseudocode Baseline-deviation detection on MailItemsAccessed events read-only
// Pseudocode. Assumes MailItemsAccessed events ingested from M365 Purview audit log.
// The State Department's pattern: maintain a small allowlist of legitimate AppIDs.

const allowlistedAppIds = new Set([
// populated from your tenant's historical baseline of legitimate mail clients,
// approved third-party connectors, M365 services, and authorized integrations
'00000003-0000-0000-c000-000000000000', // Microsoft Graph
// ... extend with your tenant's specific approved AppIDs
]);

function analyzeEvent(evt) {
if (evt.Operation !== 'MailItemsAccessed') return;
if (allowlistedAppIds.has(evt.AppId)) return;

// Forged-token sessions necessarily present an AppID outside the baseline.
alert({
  severity: 'high',
  reason: 'MailItemsAccessed from unallowlisted AppID',
  user: evt.UserId,
  appId: evt.AppId,
  clientAppId: evt.ClientAppId,
  sourceIp: evt.ClientIPAddress,
  messageId: evt.InternetMessageId
});
}
The State Department SOC analyst who first identified Storm-0558 has not been publicly named in any primary source. The CSRB report describes the detection at the level of the agency. There is good reason for the anonymity, given the operational profile of someone who is, by chance and skill, the first known human to detect a Chinese state-affiliated forgery of a Microsoft signing key.

Microsoft's policy response was rapid and substantive. On July 19, 2023, the Microsoft Security blog announced the expansion. Purview Audit (Standard) customers would get "more than 30 other types of log data previously only available at the Microsoft Purview Audit (Premium) subscription level," with default retention extended from 90 to 180 days, rolling out beginning September 2023 [15]. CISA's same-day press release confirmed: "Microsoft customers will now have access to expanded cloud logging capabilities at no additional charge ... these additional logging capabilities will now be available at no extra cost to federal government customers and Microsoft commercial customers beginning in September" [16].

The pricing structure that had made the State Department's detection possible only because the State Department paid extra was, eight days after the joint advisory, made part of the baseline.

That is the operational story. But the political story was just starting. On July 27, 2023, Senator Ron Wyden (D-OR) wrote a four-page letter to three federal agencies asking them to investigate Microsoft. Fifteen days later, the Cyber Safety Review Board announced its third-ever review.

6. The Public Reckoning -- CSRB, Retracted Hypothesis, Congressional Testimony

Senator Wyden's letter, addressed to Attorney General Merrick Garland, FTC Chair Lina Khan, and CISA Director Jen Easterly, opened with a comparison: "Microsoft never took responsibility for its role in the SolarWinds hacking campaign" [@wyden-senate-pr; @wyden-senate-letter-pdf]. The letter then enumerated four specific cybersecurity failures it attributed to Microsoft in the Storm-0558 incident.

Quoting Wyden's own characterization from the Senate press release: "Employing a single encryption key that could be used to forge access to consumer, commercial and government customers' private communications; Microsoft's blog post about the hack suggests it did not store high-value encryption keys in a Hardware Security Module ...; Using an encryption key that was valid for 5 years, and was still accepted by Microsoft's software, even though it had expired in 2021, two years before the hack ...; Neither internal nor external security audits detected the security weaknesses that enabled the hack" [17].

6.1 The CSRB's authority and process

The Cyber Safety Review Board exists because President Biden's Executive Order 14028 of May 12, 2021, "Improving the Nation's Cybersecurity," directed DHS to establish a standing board to conduct after-action reviews of significant cyber incidents [19]. Storm-0558 was the Board's third review, after Log4j and Lapsus$ [20].

On August 11, 2023, DHS Secretary Alejandro Mayorkas announced the Board would conduct a review of "the malicious targeting of cloud computing environments," with the recent Microsoft Exchange Online intrusion as the central case study and a broader scope covering "issues relating to cloud-based identity and authentication infrastructure affecting applicable CSPs and their customers" [21]. Robert Silvers, DHS Under Secretary for Policy, chaired. Dmitri Alperovitch served as Acting Deputy Chair for this review [22].

Cyber Safety Review Board (CSRB)

A public-private federal advisory board established by Executive Order 14028 (May 12, 2021) and standing up in February 2022 to conduct after-action reviews of significant cyber incidents and recommend improvements. The Board's Storm-0558 review, its third (after Log4j and Lapsus$), was announced August 11, 2023 and reported April 2, 2024 [@eo-14028; @csrb-program; @csrb-report-2024].

6.2 The September 2023 hypothesis and the March 2024 retraction

The chronology that matters here is short and worth pinning down precisely. Microsoft published the crash-dump hypothesis on September 6, 2023 [5]. Microsoft itself updated that post on March 12, 2024 with the retraction-of-the-artifact paragraph quoted earlier in Section 4.1 [5]. The CSRB report published April 2, 2024 -- three weeks after Microsoft retracted the artifact -- then documented the resulting state of knowledge (verdict quoted in Section 4.1; CSRB page 17) [2].

The order matters. Microsoft retracted the artifact first. The CSRB did not force the retraction; it documented the resulting state of knowledge. That sequence is meaningful because it suggests Microsoft's own forensic work, not external pressure, drove the walking-back of the artifact claim.

6.3 The CSRB's findings

The Board's findings, in its own verbatim language, are direct. The Board's page-ii verbatim -- the preventable / inadequate / requires-an-overhaul language quoted in Section 1's opening PullQuote -- sets the frame; page 17 sharpens it: "the cascade of Microsoft's avoidable errors that allowed this intrusion to succeed" [2].

The DHS press release surfaced these findings on the day of publication: "the intrusion by Storm-0558, a hacking group assessed to be affiliated with the People's Republic of China, was preventable. It identified a series of Microsoft operational and strategic decisions that collectively pointed to a corporate culture that deprioritized enterprise security investments and rigorous risk management" [22].

The report makes 25 recommendations. Of those, 16 apply to Microsoft (4 specific to Microsoft and 12 to all cloud service providers but accepted by Microsoft per Brad Smith's June 2024 testimony) [23]. The structural critique embedded in the recommendations is that the commercial logging-tier structure of cloud identity is itself a security problem, because it delays detection asymmetrically: richly-resourced customers detect compromise; less-resourced customers do not. The free-Purview-Audit shift Microsoft had announced on July 19, 2023 is, in the CSRB's framing, a necessary but not sufficient condition for cloud-identity log access to stop being a per-customer commercial decision.

6.4 Brad Smith's June 13, 2024 testimony

The House Committee on Homeland Security titled its June 13, 2024 hearing "A Cascade of Security Failures: Assessing Microsoft Corporation's Cybersecurity Shortfalls and the Implications for Homeland Security" [24]. The plural "Failures" was a deliberate framing choice. By the time of the hearing, Microsoft had also publicly disclosed a separate January 2024 intrusion by Midnight Blizzard (the Russian SVR; the same actor as SolarWinds), and the hearing's scope spanned both incidents. Brad Smith, Microsoft's Vice Chair and President, was the witness.

Smith's written and oral testimony opened with the soundbite that defined the hearing's coverage (quoted in the PullQuote below). Smith confirmed Microsoft's acceptance of all 16 applicable CSRB recommendations, identified 18 additional internal objectives beyond the CSRB's scope, and announced that Senior Leadership Team compensation would be tied in part to progress on the Secure Future Initiative [@brad-smith-2024-06-13; @sfi-may-2024].

"Microsoft accepts responsibility for each and every one of the issues cited in the CSRB's report. Without equivocation or hesitation. And without any sense of defensiveness." -- Brad Smith, Vice Chair and President of Microsoft, written testimony to the House Committee on Homeland Security, June 13, 2024 [@brad-smith-2024-06-13; @smith-testimony-pdf]

The hearing's plural framing -- "Failures" -- mattered. On January 19, 2024, Microsoft disclosed a separate Midnight Blizzard intrusion that had begun in late November 2023 (approximately four weeks after the November 2, 2023 launch of the Secure Future Initiative) via a password spray against a legacy non-production test tenant, and that exfiltrated email from members of Microsoft's senior leadership team [25]. The March 8, 2024 update added that Midnight Blizzard had reached Microsoft source code repositories and ramped February password sprays to ten times the January volume [26]. By the June hearing, Microsoft was carrying both incidents into the same line of questioning.

Microsoft accepted responsibility. The CSRB asked for an architectural overhaul. The next question is what Microsoft actually built.

7. The Architectural Response -- SFI and the Identity-Plane Re-Architecture

The Secure Future Initiative (SFI) is the corporate vehicle through which Microsoft's post-Storm-0558 architectural changes are reported. The remarkable property of the SFI commitments, viewed against the pre-incident architecture described in Section 3, is that they are surgically targeted: each of the four ways the pre-incident MSA system failed maps to one explicit commitment.

7.1 SFI: launch, expansion, motivation arc

Brad Smith launched SFI on November 2, 2023, with three pillars focused on AI-based cyber defenses, fundamental software engineering advances, and stronger international cyber norms [27]. Charlie Bell expanded it on May 3, 2024 into six pillars: protect identities and secrets; protect tenants and isolate production systems; protect networks; protect engineering systems; monitor and detect threats; accelerate response and remediation [28].

Pillar 1's verbatim commitment is the one that maps onto Storm-0558 most directly: "Protect identity infrastructure signing and platform keys with rapid and automatic rotation with hardware storage and protection (for example, hardware security module (HSM) and confidential compute)" and "Adopt more fine-grained partitioning of identity signing keys and platform keys" [28].

The motivation arc Smith described in his June 13, 2024 testimony connects the dots. Storm-0558 led to the November 2023 launch. The January 2024 Midnight Blizzard intrusion led to the May 2024 six-pillar expansion. The April 2024 CSRB report led to the integration of CSRB recommendations into SFI. The June 2024 hearing led to SLT compensation being tied to SFI progress [@brad-smith-2024-06-13; @sfi-may-2024].

Secure Future Initiative (SFI)

A multi-year Microsoft corporate program announced November 2, 2023 by Brad Smith, expanded May 3, 2024 by Charlie Bell into six pillars, and reported on quarterly. SFI is the explicit corporate vehicle through which Microsoft commits to and reports progress on the architectural changes recommended by the CSRB after Storm-0558. Its identity-and-secrets pillar names HSM custody, automatic rotation, fine-grained key partitioning, and confidential-compute hosting of signing operations as concrete deliverables [@sfi-launch-nov-2023; @sfi-may-2024].

7.2 HSM-bound key custody plus automatic rotation

This closes the first two ways the pre-incident architecture failed: the software-stored key and the unrotated seven-year-old key. Microsoft's September 2024 SFI progress report's verbatim claim: "We completed updates to Microsoft Entra ID and Microsoft Account (MSA) for our public and United States government clouds to generate, store, and automatically rotate access token signing keys using the Azure Managed Hardware Security Module (HSM) service" [29].

Azure Managed HSM is FIPS 140-3 Level 3, built on the Marvell LiquidSecurity platform, with a multi-partition topology that allows per-tenant key isolation [30].

Hardware Security Module (HSM)

A tamper-resistant cryptographic device that generates and stores private keys inside a hardware boundary and exposes only signing or decryption operations to its caller. Keys generated inside an HSM cannot be exported -- the device performs the signature itself, returning only the signed output. NIST FIPS 140-3 (published March 22, 2019) defines the certification regime; Level 3 adds tamper-detection and identity-based authentication requirements [@fips-140-3; @azure-managed-hsm].

A separate Microsoft on-server primitive, Azure Integrated HSM, is explicitly framed as a Storm-0558 mitigation. Its overview page reads: "Reduce network round-trips to Azure Key Vault or Managed HSM by performing cryptographic operations locally on the same node as the Virtual Machine ... Protect against memory and crash-dump attacks" within "a FIPS 140-3 Level 3 HSM boundary" on AMD D Series v7 and AMD E Series v7 servers [31].

The phrase "memory and crash-dump attacks" in the same paragraph as "FIPS 140-3 Level 3" is, in context, an explicit acknowledgement of the threat model Storm-0558 spent eighteen months making famous.

7.3 Signing operations inside Confidential Computing TEEs

This closes the residual that HSM custody alone leaves open: in-use observation by a privileged host operator or administrator. The HSM keeps the key from being extracted at rest. But the signing service that asks the HSM to produce a signature still runs somewhere, in some virtual machine, on a host with operators. Confidential Computing closes that gap by running the signing service inside a Trusted Execution Environment whose memory and CPU state are encrypted with hardware-derived keys that not even the host operator can inspect.

Microsoft's April 2025 SFI report is direct about the change: "we've applied new defense-in-depth protections in response to our Red Team research and assessments, migrated the MSA signing service to Azure confidential VMs, and are migrating Entra ID signing service to the same. Each of these improvements help mitigate the attack vectors that we suspect the actor used in the 2023 Storm-0558 attack on Microsoft" [32]. The underlying TEE primitives are AMD SEV-SNP and Intel TDX, implemented in Azure's DCasv5/ECasv5 and DCesv6/ECesv6 confidential-VM SKU families [33]. The April 2025 timing was contemporaneous coverage: The Hacker News reported on the same April 21, 2025 progress post the day after [34].

Confidential Computing (TEE, SEV-SNP, TDX)

A class of hardware-backed isolation primitives in which a virtual machine's memory and CPU state are encrypted with keys derived from the CPU itself, so that even a privileged host operator with full hypervisor access cannot read the workload's memory in cleartext. AMD's implementation is SEV-SNP (Secure Encrypted Virtualization, Secure Nested Paging); Intel's is TDX (Trust Domain Extensions). Azure exposes both through its DCasv5/ECasv5 and DCesv6/ECesv6 confidential-VM SKU families [33].

7.4 Tenant-issuer separation enforced in hardened validation libraries

This closes the third pre-incident failure mode: the cross-tier validation flaw. RFC 8725 Sections 3.8 and 3.9 are the canonical IETF Best Current Practice for the combined iss/aud mandate and have been since February 2020 (Section 3.8 covers issuer and subject; Section 3.9 covers audience) [@rfc-8725; @rfc-8725-html].

The Microsoft-internal response was to consolidate JWT validation across services into a single hardened SDK that enforces the iss/aud check at the library level rather than leaving it to each caller. The quantified rollout numbers from successive SFI progress reports are concrete: "more than 73% of tokens issued by Microsoft Entra ID for Microsoft owned applications" were under hardened-SDK validation by September 2024 [29], rising to "90% of identity tokens from Microsoft Entra ID for Microsoft apps are validated by one consistent and hardened identity Software Development Kit (SDK)" by April 2025 [32].

7.5 Logging as a commodity, not a premium

This closes the fourth failure mode: the paid-tier-only audit logging that delayed customer detection. The July 19, 2023 announcement made MailItemsAccessed and 30+ other event classes free for FCEB and most commercial customers [@ms-blog-jul19-recovered; @cisa-statement-free-logs-fixed].

The April 2025 SFI report added a further commitment: "two years of internal security-log retention" [32]. This addresses the secondary issue that even when logs are collected, retention windows must outlast typical adversary dwell times.

The four failure modes map to four commitments. Table form makes the alignment unambiguous.

Pre-incident failure mode (Section 3)SFI commitment that closes itSource
Software-resident, never-rotated 2016 MSA signing keyAzure Managed HSM custody with automatic rotation for MSA and Entra ID (September 2024)[@sfi-sept-2024; @azure-managed-hsm]
Privileged host-side observation of in-use signing operationsMSA signing service in Azure Confidential VMs (April 2025); Entra ID signing service in migration[@sfi-april-2025; @azure-conf-compute]
Cross-tier validation: OWA/Exchange Online did not enforce iss/audHardened identity SDK validating 90% of Entra ID tokens for Microsoft apps (April 2025)[@sfi-april-2025; @rfc-8725]
Paid-tier-only audit logging delayed customer detectionFree MailItemsAccessed and 30+ event classes from September 2023; 180-day default retention; 2-year internal retention (April 2025)[@ms-blog-jul19-recovered; @cisa-statement-free-logs-fixed; @sfi-april-2025]

Each defensive generation in Microsoft's Secure Future Initiative targets exactly one of the four ways the pre-incident MSA architecture failed. The chain is correctable, not just remediable: Microsoft can name which commitment closes which failure mode. What it still cannot name is how the 2016 key itself was stolen.

Ctrl + scroll to zoom
Post-SFI signing path. The MSA signing service runs inside an Azure Confidential VM that holds an attestation document; the HSM grants the signing service access to the key only after verifying the attestation. The relying party then uses the hardened SDK to enforce iss/aud separation on the resulting tokens.

The architectural response addresses each of the four failure modes one-for-one. But how does this stack against what other major cloud providers publicly document?

8. How Other Cloud Providers Custody Signing Keys

The Storm-0558 attack class is generic. Any identity provider that signs tokens can in principle have its signing key stolen. The honest cross-provider comparison is therefore not "which provider is most secure" -- the public evidence does not support a defensible ranking. It is instead "which architectural property each provider publicly attests to having" for the keys behind its own production identity tokens.

The asymmetry of the table below is itself informative. Microsoft, after Storm-0558, has the most explicit public commitments precisely because it had the most public incident.

PropertyMicrosoft (post-SFI)AWS (IAM Identity Center, Cognito)Google (Workspace, Cloud Identity)Okta
HSM custody for production IdP signing keysYes -- Azure Managed HSM, FIPS 140-3 Level 3 [@sfi-sept-2024; @azure-managed-hsm]Not publicly disclosed for IdP keys; CloudHSM is a customer primitive [@aws-cloudhsm; @aws-iam-idc-security]Not publicly disclosed for IdP keys; Cloud HSM is a customer primitive [35]Not publicly disclosed at this granularity
Confidential Compute for signing operationsYes -- MSA on Azure Confidential VMs (Apr 2025); Entra ID in migration [@sfi-april-2025; @azure-conf-compute]Nitro Enclaves available as customer primitive; not publicly disclosed for IdP keys [@aws-nitro-enclaves; @aws-nitro-whitepaper]Confidential Computing available as customer primitive; not publicly disclosed for IdP keys [36]Not publicly disclosed
Automatic rotation of IdP signing keysYes -- MSA and Entra ID automatic rotation in Azure Managed HSM [29]AWS KMS default 365-day rotation for KMS keys; IdP rotation cadence not publicly disclosed [37]Cloud KMS rotation customer-controllable; Google-owned-and-managed model is opaque to customers [35]; Workspace SAML cert rotation is admin-driven [38]Not publicly disclosed
Tenant/issuer separation enforced in SDKHardened identity SDK validating 90% of Entra ID Microsoft-app tokens (Apr 2025) [@sfi-april-2025; @rfc-8725]aws-jwt-verify library enforces iss/aud for Cognito tokens [@aws-jwt-verify; @aws-cognito-jwt]Tink library architecture supports key-set discipline [39]Not publicly disclosed
Free customer audit loggingMailItemsAccessed plus 30+ event classes free since Sep 2023; 2-year internal retention [@ms-blog-jul19-recovered; @sfi-april-2025]Standard CloudTrail; per-service audit variesWorkspace audit log; Cloud Audit LogsSystem Log; baseline included
Public IdP-signing-key-class incident disclosureYes -- Storm-0558 (Jul 2023) and CSRB report (Apr 2024) [2]None in 2023-2026 security bulletins surveyed [40]None in 2023-2026 security bulletins surveyed [41]October 2023 support-system breach; HAR-file session tokens; no IdP-signing-key compromise [@okta-rca-nov3; @okta-recommended-actions]
Customer detected before vendor notifiedYes -- State Department detected Jun 15, 2023, notified Microsoft Jun 16, 2023 [2]----Yes -- Cloudflare detected Oct 18, 2023, contacted Okta before vendor notification [42]
The Okta October 2023 incident is worth knowing about as a cross-vendor data point precisely because of the structural parallel. On October 18, 2023, Cloudflare detected attacker activity that traced back to Okta and contacted Okta before Okta had notified Cloudflare. BeyondTrust had notified Okta on October 2; the attacker still had access until October 18. Okta's November 3 RCA traced the root cause to a service-account credential stored in an Okta employee's personal Google account [@okta-rca-nov3; @okta-recommended-actions; @cloudflare-okta-oct2023]. Different attack class (support-system access, HAR-file session tokens, not IdP signing keys), but the same vendor-detected-by-customer detection inversion the Storm-0558 story made famous.

For a CISO evaluating any IdP vendor, the four operational questions mapped to the four pre-incident failure modes in Section 3 give a structured RFP. Where is the signing key custodied, and what FIPS certification does the HSM hold? What is the rotation cadence, and is rotation automated? Does the vendor's validation SDK enforce iss/aud separation by default, or does it leave the check to the caller? What audit log events are available to free-tier customers, with what retention?

CSA's Cloud Controls Matrix (CEK and IAM domains) and FedRAMP High SC-12 and IA-5 controls together cover most of these in standardized form, but the CAIQ answers are vendor-self-attested [@csa-ccm; @fedramp].

9. Theoretical Limits

There is one place where the architectural improvements of Section 7 stop. The Storm-0558 threat class lives downstream of a cryptographic identity, and there are limits cryptography itself imposes on what any architecture can do.

9.1 The core asymmetry

Under the standard cryptographic security notion of existential unforgeability under chosen-message attack -- EUF-CMA, first formalized by Goldwasser, Micali, and Rivest in 1988 [43] -- a signature produced by a private signing key sk on a message m is, to any holder of the corresponding verification key vk, indistinguishable from one produced by the legitimate signer. This is not a deployment weakness. It is the definition of "signature." If the verifier could distinguish, the scheme would fail the security property. Formally [@goldwasser-micali-rivest-1988; @boneh-shoup-acc]:

EUF-CMA:  PPT adversary A,  Pr[ASignsk()(vk)(m,σ) with Vrfyvk(m,σ)=1mQ]negl(λ)\text{EUF-CMA: } \forall \text{ PPT adversary } \mathcal{A}, \; \Pr[\mathcal{A}^{\text{Sign}_{sk}(\cdot)}(vk) \to (m^*, \sigma^*) \text{ with } \text{Vrfy}_{vk}(m^*, \sigma^*) = 1 \land m^* \notin Q] \leq \text{negl}(\lambda)

where QQ is the set of messages the adversary queried to the signing oracle. The adversary's only path to forging a verifying signature on a fresh message is to learn sk. Once it has sk, every signature it produces is, by construction, valid.

EUF-CMA (and sEUF-CMA)

EUF-CMA, existential unforgeability under chosen-message attack, is the standard security definition for digital signature schemes. The notion was formalized by Goldwasser, Micali, and Rivest in their 1988 SIAM Journal on Computing paper "A Digital Signature Scheme Secure Against Adaptive Chosen-Message Attacks" [43]; the canonical modern openly-accessible textbook treatment is Boneh-Shoup's A Graduate Course in Applied Cryptography, Chapter 13, which presents the game-based definition used throughout this section [44]. Informally: an adversary with access to a signing oracle cannot produce a valid signature on a message it has not previously queried, except with negligible probability. The stronger sibling, sEUF-CMA (strong EUF-CMA), additionally forbids producing a new signature on a previously-queried message. Both notions imply that, once the private signing key is leaked, the legitimate signer can no longer be distinguished from the holder of the key by any signature-verifying party. This is what makes signing-key theft so consequential -- and is precisely the assumption that the relying-party-side iss/aud enforcement of RFC 8725 Sections 3.8 and 3.9 is designed to compensate for when validation, not cryptography, is the only remaining line of defense [13].

The consequence for defenders is that all defensive advantage against signing-key-forgery attacks lives outside cryptographic verification. The seven methods catalogued in Section 7 -- HSM custody, Confidential Compute, automatic rotation, tenant/issuer separation, free audit logging, customer-verifiable attestation (mostly absent at major-CSP scale), and detection by kid/issuer drift -- are exhaustive over the four levers a defender has against a key whose theft is, after the fact, indistinguishable from legitimate use.

9.2 The CSP-monoculture residual

When the identity provider is a multi-tenant cloud service provider, the customer cannot independently audit the provider's key custody. The customer can demand SOC 2 attestations, ISO certifications, and CSA CAIQ answers. Each of these is vendor-self-attested. None is a per-operation cryptographic proof that the signing key the provider used to sign a given token is the one custodied as advertised.

Customer-side prevention of a CSP-side custody failure is impossible by construction. Customer-side detection (the methods in Section 11) is possible. The CSRB called this systemic risk out explicitly in its discussion of cloud-identity infrastructure [2].

Customer-side prevention of a CSP-side custody failure is impossible by construction. Customer-side detection is possible. Prevention sits entirely on the CSP side. This is the asymmetry the Storm-0558 incident made visible.

9.3 The Microsoft-as-Storm-0558-victim recursion

There is a recursive aspect to Microsoft's position that is worth naming honestly. Microsoft sells controls -- HSM custody, Confidential Compute, hardened SDKs, audit logging -- intended to defend against the attack class Microsoft itself was the highest-profile victim of. Brad Smith's "without equivocation" framing acknowledged the recursion implicitly. The CSRB's framing was harsher: a corporate culture that "deprioritized enterprise security investments and rigorous risk management" was, in the Board's view, what allowed the recursion to obtain [@csrb-report-2024; @dhs-csrb-report-release].

9.4 The upper bound

The aggregate of HSM custody, Confidential Computing, automatic rotation, and tenant/issuer separation raises the attacker's required compromise from "find a key in a debugging artifact" to "simultaneously compromise the Confidential VM build pipeline, do so within the rotation window, and bypass the HSM access control or extract a per-key signing oracle." Each is individually possible. Jointly they are several orders of magnitude harder than the pre-Storm-0558 baseline. This is not a theoretical proof of security; it is empirical defense in depth.

Defense in depth defeats plausible paths. Whether it defeats the actual path is unknown -- because, three years on, the actual path is still unknown.

10. Open Problems

Six open problems remain after three years, in descending order of architectural consequence.

OP1 -- The mechanism gap. Microsoft still does not publicly know how the 2016 MSA signing key was stolen. The methods of Section 7 defeat plausible paths, but the actual path is undocumented. Until the actual mechanism is recovered (if it ever is), Microsoft is in the position of having raised the bar against the categories of attack it suspects, without being able to confirm that the bar it raised is the one the attacker cleared [@csrb-report-2024; @msrc-key-acquisition].

OP2 -- The broader-blast-radius question. Wiz Research showed the same key could in principle have signed tokens for SharePoint, Teams, OneDrive, and many third-party "Sign in with Microsoft" applications. Whether the broader scope was exploited and went undetected against telemetry that never existed is unanswered [1].

OP3 -- CSP regulation as critical infrastructure. The CSRB report framed cloud-identity-provider regulation as an open U.S. policy question. The Board recommended treating identity infrastructure as critical infrastructure subject to mandatory disclosure and minimum security baselines. Implementation across Congress, the executive branch, and sector-specific regulators is incomplete [2].

OP4 -- Cross-provider unrotated-signing-key risk. No major non-Microsoft IdP publicly discloses signing-key rotation cadence for its production tokens. Microsoft's transparency post-CSRB is, at present, the publication standard; AWS's, Google's, and Okta's positions are inferred from product documentation rather than disclosed in the form Microsoft now uses [@aws-iam-idc-security; @gcp-cloud-hsm].

OP5 -- Threshold or multi-party signing for production IdP signing keys. Practical cryptographic protocols exist. The canonical Schnorr-class construction is FROST -- "Flexible Round-Optimized Schnorr Threshold Signatures" -- introduced by Chelsea Komlo and Ian Goldberg at SAC 2020 [45] and standardized as IRTF/CFRG RFC 9591 in June 2024 (a two-round protocol with five normative ciphersuites covering Ed25519, ristretto255, Ed448, P-256, and secp256k1) [46].

For ECDSA, Yehuda Lindell and Ariel Nof's CCS 2018 paper described what its abstract called "the first truly practical full threshold ECDSA signing protocol that has both fast signing and fast key distribution" [47]. The DKLs line (Doerner, Kondi, Lee, shelat) extended the work, with the May 2023 update "Threshold ECDSA in Three Rounds" the current standard reference, accompanied by named third-party production implementations from Coinbase, Silence Laboratories, Taurus Group, and BlockDaemon [48].

No major cloud service provider has publicly deployed threshold signing for production IdP keys at the scale where compromise of a single signing oracle still ends the conversation. This is the largest unrealized research-to-practice gap in the entire stack.

OP6 -- Customer-verifiable attestation of IdP key custody. No standardized cryptographic primitive analogous to Certificate Transparency exists for IdP signing-key state. The design pattern was specified by Ben Laurie, Adam Langley, and Emilia Kasper (all of Google) in RFC 6962 in June 2013 -- a Merkle-tree-backed append-only log of TLS certificate issuance that lets any customer cryptographically detect that a certificate authority issued a certificate for their domain that they did not request [49]. There is no equivalent primitive that lets a customer cryptographically detect that a token issuer signed a token naming them as sub that they (or their identity provider) did not request. This is the architectural ceiling of customer-side defense.

OP5 and OP6 both have rich primary-source literatures the article only gestures at. For OP5, follow the original FROST paper [45] for the security proof reducing to discrete log via the Bellare-Neven Generalized Forking Lemma, the corresponding IRTF specification [46] for the deployable ciphersuites, Lindell-Nof's CCS 2018 paper [47] for the threshold-ECDSA foundation, and the DKLs project page [48] for the most recent three-round construction. For OP6, RFC 6962 [49] specifies the Merkle-tree-backed append-only log structure (the Signed Certificate Timestamp, the Merkle Audit Path, and the Merkle Consistency Proof) that any future IdP-key-custody-transparency protocol would build on.

Three research-grade gaps, three policy-grade gaps. The defender, meanwhile, has to ship something on Monday. What should that something be?

11. What a Defender Should Do Today

The practical guidance splits along three audiences: M365 customers operating the consumer side of this incident's geometry, builders of multi-tenant SaaS that signs JWTs of their own, and CISOs evaluating cloud identity vendors.

11.1 For Microsoft 365 customers

First, confirm Purview Audit is enabled at the highest tier your SKU permits, that MailItemsAccessed is being collected, and that the events are being forwarded to a SIEM with retention of at least 180 days. The features previously gated on Premium have been free for FCEB and most commercial customers since the September 2023 rollout [@ms-blog-jul19-recovered; @cisa-statement-free-logs-fixed].

Second, maintain an inventory of legitimate (AppID, ClientAppID) pairs that historically read mailboxes in your tenant, and alert on any deviation. The State Department detection is reproducible only if you have collected the events to detect with.

A baseline-deviation rule, expressed compactly:

JavaScript-style pseudocode kid drift detection: alert when a JWT carries a kid not currently in the issuer's published JWKS read-only
// Pseudocode. Run against ingested JWT validation events from your SIEM.
// 'observedKids' is the set of kid values your relying parties have processed.
// 'currentJwksKids' is fetched live from the issuer's JWKS endpoint.

async function checkKidDrift(issuer, observedKids) {
const jwks = await fetch(issuer + '/.well-known/openid-configuration')
  .then(r => r.json())
  .then(cfg => fetch(cfg.jwks_uri))
  .then(r => r.json());

const currentKids = new Set(jwks.keys.map(k => k.kid));

for (const kid of observedKids) {
  if (!currentKids.has(kid)) {
    alert({
      severity: 'medium',
      reason: 'kid not in current issuer JWKS',
      issuer,
      kid,
      note: 'Either an expired/retired key being replayed, or a forged token signed by a kid the issuer no longer publishes. Both warrant investigation.'
    });
  }
}
}

11.2 For builders of multi-tenant SaaS that signs JWTs

If you sign JWTs yourself, you are operating an identity provider, and the Storm-0558 lessons apply to you directly. The checklist is six items.

  1. HSM custody for signing keys (M1). Generate signing keys inside an HSM with exportable=False. The HSM signs; the application asks. The key never leaves.
  2. Automatic rotation (M3). Rotate signing keys on a cadence measured in days to weeks. Publish the new kid in your JWKS before signing with it; deprecate the old kid only after relying parties have had time to refresh their JWKS caches.
  3. Issuer and audience enforcement (M4). Implement the combined iss and aud validation mandate RFC 8725 codifies in Sections 3.8 and 3.9, and test it with adversarial cross-tenant tokens. Write a test that forges a token from your tenant A and verifies that your tenant B's validator rejects it [@rfc-8725; @rfc-8725-html].
  4. kid drift monitoring (M7). Alert on JWT validation events whose kid is not currently published in your issuer's JWKS. A forged token signed with a retired or unpublished kid will surface here.
  5. JWKS cache invalidation discipline. Relying parties cache JWKS aggressively. Coordinate rotation with your largest relying parties; document the cache TTL you expect them to honor. OpenID Connect Discovery 1.0 specifies the JWKS discovery pattern but leaves cache TTL as a deployment choice; the publication of that contract is yours to make [50]. Storm-0558's lesson is that an unrotated key is a permanent attack surface; a poorly-coordinated rotation is a permanent operational outage.
  6. An on-call runbook for rotation failure. If automatic rotation fails, what is the page severity? Who is paged? How is manual rotation performed? Microsoft's 2021 pause of MSA manual rotation (after a manual-rotation-related outage) is the cautionary tale; the runbook is the prevention [2].

For higher-value deployments, add Confidential Compute (M2) -- run the signing service inside an attested TEE so that even host operators cannot read the in-use key. The threshold of "higher-value" is whatever value of "your customer's most sensitive resource accessed by a forged token" makes the in-use observation residual worth closing.

11.3 For CISOs evaluating a cloud IdP

The four RFP questions, mapped to the four pre-incident failure modes Section 3 catalogued:

(a) Where is the signing key custodied, and what FIPS certification does the HSM hold? (b) What is the rotation cadence for the IdP signing keys, and is rotation automated end-to-end? (c) Does the validation SDK enforce iss/aud separation by default, or does it leave the check to the caller? (d) What audit log events are available to free-tier customers, with what retention, and which events are gated behind paid tiers?

Map the answers to CSA CCM CEK and IAM domains and FedRAMP High SC-12 and IA-5 controls for cross-vendor normalization [@csa-ccm; @fedramp].

A useful follow-up question once you have answers

Ask the vendor: "If your production IdP signing key were stolen today, by what telemetry would you detect it, and within what time? What public-disclosure timeline would you commit to?" The answer reveals more about the vendor's posture than the answers to the four primary questions, because it forces the vendor to talk about a scenario their marketing material does not.

Defense in depth defeats the plausible attack mechanisms. Whether it defeats the actual attack mechanism is unknown because, in the highest-stakes documented case, the actual mechanism is still unknown. The defender's posture is therefore "raise the floor against everything I can imagine," not "patch the specific bug." Storm-0558's enduring lesson is what it means to architect under that constraint.

The seven SOTA methods raise the floor against plausible mechanisms. The customer can demand documentation, alert on deviations, pay for the audit tier they actually need, and vote with procurement dollars for vendors whose disclosure posture matches Microsoft's post-CSRB stance. Prevention against a CSP-side custody failure remains, as Section 9 noted, on the CSP side by construction.

12. FAQ and Study Guide

Frequently asked questions about Storm-0558

Was the 2016 MSA signing key extracted from a crash dump?

No. That was Microsoft's September 6, 2023 working hypothesis. Microsoft itself partially retracted it on March 12, 2024 (see Section 4.1 for the full retraction text in the Callout). The Cyber Safety Review Board report on April 2, 2024 then concluded definitively that Microsoft "has been unable to determine how or when Storm-0558 obtained the MSA key" [@msrc-key-acquisition; @csrb-report-2024].

Did Microsoft detect the breach?

No. The U.S. State Department detected the breach on June 15, 2023, by reviewing MailItemsAccessed events in Microsoft 365 Purview audit logs against a maintained baseline of legitimate application IDs. The State Department notified Microsoft on June 16, 2023. Microsoft then confirmed the forgery by comparing the suspicious tokens' kid against its own published MSA key rotation history [@csrb-report-2024; @ms-security-jul14].

How many organizations were affected?

Microsoft's preliminary July 2023 disclosure said "approximately 25" [3]. The CSRB's April 2024 final tally is 22 enterprise organizations and approximately 503 related personal accounts, with approximately 60,000 emails exfiltrated from 10 U.S. State Department accounts alone [2].

Is this a Microsoft-specific risk?

The attack pattern -- steal an identity provider's signing key, mint forged tokens, present them to relying parties -- is generic and has prior public examples (Reiner's 2017 Golden SAML disclosure; the Russian SVR's 2020 Sunburst weaponization). What is Microsoft-specific is the cross-tier consumer/enterprise validation flaw and the unrotated 2016 key. No other major identity provider has publicly disclosed an analogous IdP-signing-key-class incident in the 2023-2026 window, but absence of public disclosure is not absence of risk [@reiner-golden-saml; @aa20-352a; @wiz-storm0558].

What changed architecturally as a result?

The Secure Future Initiative (SFI). Identity signing keys for both MSA and Entra ID are now generated, stored, and automatically rotated in Azure Managed HSM (FIPS 140-3 Level 3) as of the September 2024 progress report. The MSA signing service runs inside Azure Confidential VMs as of April 2025, with Entra ID's signing service migrating to the same. 90% of Entra ID tokens for Microsoft apps are validated by one consistent hardened identity SDK that enforces iss/aud separation. And MailItemsAccessed plus 30+ Purview audit event classes have been free for FCEB and most commercial customers since the September 2023 rollout, with default retention now 180 days and internal retention extended to two years [@sfi-sept-2024; @sfi-april-2025; @ms-blog-jul19-recovered].

Could the same 2016 key have signed tokens for other Microsoft applications?

Yes, in principle. Wiz Research's independent analysis demonstrated the compromised key could have signed tokens for any application using Microsoft's converged OpenID v2.0 endpoint that accepts personal-account authentication -- SharePoint, Teams, OneDrive, and a long tail of third-party "Sign in with Microsoft" applications. There is no public evidence the broader scope was actually exploited; the publicly documented victims are scoped to Exchange Online and Outlook. Whether broader exploitation occurred and was simply not detected against telemetry that did not exist remains an open question [1].

Why is the State Department detection story so important?

Because it inverts a default assumption. Cloud providers, in their marketing material, are the parties responsible for monitoring their own identity infrastructure. In Storm-0558, the cloud provider did not. A paying customer with a paid-tier audit log saw the anomaly first. The CSRB's harshest single critique is structural: the commercial logging-tier structure of cloud identity asymmetrically delays detection in favor of well-resourced customers, and the policy response (free Purview Audit features) is a partial but necessary correction [@csrb-report-2024; @cisa-statement-free-logs-fixed].

Study guide

Key terms

Storm-0558
Microsoft's taxonomy name (Apr 2023) for the China-affiliated actor responsible for the Summer 2023 MSA-key compromise; renamed Antique Typhoon in Aug 2024.
MSA issuer
Microsoft Account, Microsoft's consumer identity provider. Its v2.0 OpenID Connect issuer is `login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0` -- the MSA 'consumers' tenant on the shared login.microsoftonline.com host (per the live OIDC discovery document at login.microsoftonline.com/consumers/v2.0/.well-known/openid-configuration).
Entra ID issuer
Microsoft's enterprise identity provider (formerly Azure AD), signing tokens for tenant-scoped workforce identities at `login.microsoftonline.com/{enterprise-tenant-GUID}/v2.0` on the same login.microsoftonline.com host as MSA but with a different tenant GUID.
JWT (JSON Web Token)
Compact URL-safe token format with header, payload, and signature; RFC 8725 codifies Best Current Practices for validation.
kid (Key ID)
Identifier in a JWT header naming the public key (in the issuer's JWKS) used to verify the signature.
Golden SAML
2017 forgery technique (Reiner / CyberArk Labs) using a stolen AD FS Token-Signing key to mint SAML assertions; MITRE T1606.002.
MailItemsAccessed
Microsoft 365 Purview audit event recording every mailbox-item read, including AppID, ClientAppID, and source IP.
Purview Audit (Premium)
Microsoft 365 audit tier that, pre-Sep 2023, gated MailItemsAccessed and other high-value security events behind a paid add-on.
Cyber Safety Review Board (CSRB)
Federal advisory board established by EO 14028 (May 2021); published the Storm-0558 review on April 2, 2024.
Secure Future Initiative (SFI)
Microsoft corporate program (launched Nov 2, 2023) to address the CSRB-identified failure modes; six pillars announced May 3, 2024.
Azure Managed HSM
FIPS 140-3 Level 3 hardware security module service on Marvell LiquidSecurity; custodies MSA and Entra ID signing keys post-SFI.
Confidential Computing (TEE)
Hardware-isolated VM execution environment (AMD SEV-SNP or Intel TDX) that encrypts memory and CPU state against host-operator access; hosts the MSA signing service post-Apr 2025.
EUF-CMA
Existential unforgeability under chosen-message attack; the standard cryptographic security notion for digital signatures.
RFC 8725
JSON Web Token Best Current Practices (IETF, February 2020). Section 3.8 codifies mandatory issuer validation; Section 3.9 codifies mandatory audience validation. The combined check is what Storm-0558's relying party did not perform.

Comprehension questions

  1. Why is it accurate to say Microsoft did not 'cause' Storm-0558 in a single failure, even though the CSRB called it 'preventable'?

    The pre-incident architecture failed in four independently-decided ways at once: an unrotated 2016 MSA signing key; software-resident custody for that key; a 2018 converged metadata endpoint whose validation library left iss/aud enforcement to callers; and a 2022 OWA migration onto that endpoint without the iss/aud check. Each decision was made for an independent reason and was defensible in isolation. The 'preventable' framing applies to the *aggregate*: any one of the four, fixed in isolation, would have prevented the incident. The CSRB called the security culture 'inadequate' precisely because none of the four was fixed before all four aligned.

  2. What is the difference between the State Department's detection on June 15, 2023 and Microsoft's identification on June 16, 2023?

    June 15 was the State Department SOC analyst's discovery of an anomalous ClientAppID in MailItemsAccessed events. June 16 was Microsoft's notification by the State Department. Microsoft's July 14 blog uses 'June 16' because that is when Microsoft itself was informed; the CSRB report disambiguates and uses both dates correctly.

  3. Why does the architectural response (SFI) emphasize defense in depth rather than fixing one specific bug?

    Because the actual key-acquisition mechanism is unknown. Microsoft's September 2023 crash-dump hypothesis was partially retracted in March 2024, and the April 2024 CSRB report confirmed Microsoft cannot determine how the key was stolen. SFI therefore raises the floor against the plausible mechanism categories (in-memory exposure, debugging-environment leakage, compromised engineering credentials reaching key material) rather than patching a specific code path.

References

  1. Wiz Research (2023). Storm-0558: Compromised Microsoft Key Enables Authentication of Countless Microsoft Applications. https://www.wiz.io/blog/storm-0558-compromised-microsoft-key-enables-authentication-of-countless-micr
  2. Cyber Safety Review Board (2024). Review of the Summer 2023 Microsoft Exchange Online Intrusion. https://www.cisa.gov/sites/default/files/2025-03/CSRBReviewOfTheSummer2023MEOIntrusion508.pdf
  3. Microsoft Security Response Center (2023). Results of Major Technical Investigations for Storm-0558 Key Acquisition. https://msrc.microsoft.com/blog/2023/09/results-of-major-technical-investigations-for-storm-0558-key-acquisition/
  4. Microsoft Security Response Center (2023). Microsoft mitigates China-based threat actor Storm-0558 targeting of customer email. https://msrc.microsoft.com/blog/2023/07/microsoft-mitigates-china-based-threat-actor-storm-0558-targeting-of-customer-email/
  5. Microsoft Threat Intelligence (2023). Analysis of Storm-0558 techniques for unauthorized email access. https://www.microsoft.com/en-us/security/blog/2023/07/14/analysis-of-storm-0558-techniques-for-unauthorized-email-access/
  6. MITRE (2024). Forge Web Credentials (T1606). https://attack.mitre.org/techniques/T1606/
  7. MITRE (2024). Forge Web Credentials: SAML Tokens (T1606.002). https://attack.mitre.org/techniques/T1606/002/
  8. Microsoft (2024). Microsoft threat actor naming. https://learn.microsoft.com/en-us/unified-secops/microsoft-threat-actor-naming
  9. Shaked Reiner (2017). Golden SAML: Newly Discovered Attack Technique Forges Authentication to Cloud Apps. https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps
  10. Paul Ashton (1997). NT pass-the-hash exploit code originally posted to NTBugtraq (April 1997); archived as Microsoft Windows NT 4.0 SP5 / Terminal Server 4.0 - Pass the Hash exploit. https://www.exploit-db.com/exploits/19197
  11. Microsoft (2014). Mitigating Pass-the-Hash (PtH) Attacks and Other Credential Theft, version 2. https://www.microsoft.com/en-us/download/details.aspx?id=36036
  12. MITRE (2024). Use Alternate Authentication Material: Pass the Hash (T1550.002). https://attack.mitre.org/techniques/T1550/002/
  13. MITRE (2024). Steal or Forge Kerberos Tickets: Golden Ticket (T1558.001). https://attack.mitre.org/techniques/T1558/001/
  14. Benjamin Delpy (2014). mimikatz: Kerberos module wiki. https://github.com/gentilkiwi/mimikatz/wiki/module-~-kerberos
  15. CrowdStrike (2024). Golden Ticket Attack. https://www.crowdstrike.com/en-us/cybersecurity-101/cyberattacks/golden-ticket-attack/
  16. CyberArk (2017). shimit -- Golden SAML proof-of-concept tool. https://github.com/cyberark/shimit
  17. CISA (2020). Advanced Persistent Threat Compromise of Government Agencies, Critical Infrastructure, and Private Sector Organizations (AA20-352A). https://www.cisa.gov/news-events/cybersecurity-advisories/aa20-352a
  18. CyberArk (2020). Golden SAML Revisited: The Solorigate Connection. https://www.cyberark.com/resources/threat-research-blog/golden-saml-revisited-the-solorigate-connection
  19. Microsoft Security Response Center (2021). Microsoft Internal Solorigate Investigation -- Final Update. https://msrc.microsoft.com/blog/2021/02/microsoft-internal-solorigate-investigation-final-update/
  20. Microsoft (2026). Microsoft identity platform OpenID Connect v2.0 discovery document (consumers tenant). https://login.microsoftonline.com/consumers/v2.0/.well-known/openid-configuration
  21. Y. Sheffer, D. Hardt, & M. Jones (2020). RFC 8725: JSON Web Token Best Current Practices. https://datatracker.ietf.org/doc/html/rfc8725
  22. Microsoft Security Response Center (2024). Results of Major Technical Investigations for Storm-0558 Key Acquisition (archived). https://web.archive.org/web/2024/https://msrc.microsoft.com/blog/2023/09/results-of-major-technical-investigations-for-storm-0558-key-acquisition/
  23. Y. Sheffer, D. Hardt, & M. Jones (2020). RFC 8725: JSON Web Token Best Current Practices (canonical HTML rendering). https://www.rfc-editor.org/rfc/rfc8725.html
  24. CISA & FBI (2023). Enhanced Monitoring to Detect APT Activity Targeting Outlook Online (AA23-193A). https://www.cisa.gov/news-events/cybersecurity-advisories/aa23-193a
  25. CISA & FBI (2023). AA23-193A Joint Cybersecurity Advisory (PDF). https://www.cisa.gov/sites/default/files/2023-07/aa23-193a_joint_csa_enhanced_monitoring_to_detect_apt_activity_targeting_outlook_online_2.pdf
  26. Microsoft (2023). Expanding cloud logging to give customers deeper security visibility. https://www.microsoft.com/en-us/security/blog/2023/07/19/expanding-cloud-logging-to-give-customers-deeper-security-visibility/
  27. CISA (2023). CISA and Microsoft Partnership Expands Access to Logging Capabilities Broadly. https://www.cisa.gov/news-events/news/cisa-and-microsoft-partnership-expands-access-logging-capabilities-broadly
  28. Office of Senator Ron Wyden (2023). Wyden Requests Federal Agencies Investigate Lax Cybersecurity Practices by Microsoft that Reportedly Enabled Chinese Espionage. https://www.wyden.senate.gov/news/press-releases/wyden-requests-federal-agencies-investigate-lax-cybersecurity-practices-by-microsoft-that-reportedly-enabled-chinese-espionage
  29. Ron Wyden (2023). Wyden letter to CISA, DOJ, FTC re: 2023 Microsoft Breach (PDF). https://www.wyden.senate.gov/imo/media/doc/wyden_letter_to_cisa_doj_ftc_re_2023_microsoft_breach.pdf
  30. Office of Senator Ron Wyden (2023). Wyden Statement on Cyber Safety Review Board Investigation of Recent Microsoft Exchange Online Intrusion. https://www.wyden.senate.gov/news/press-releases/wyden-statement-on-cyber-safety-review-board-investigation-of-recent-microsoft-exchange-online-intrusion
  31. The White House (2021). Executive Order 14028: Improving the Nation's Cybersecurity. https://www.gsa.gov/technology/government-it-initiatives/cybersecurity/executive-order-14028
  32. CISA (2024). Cyber Safety Review Board (CSRB). https://www.cisa.gov/resources-tools/groups/cyber-safety-review-board-csrb
  33. U.S. Department of Homeland Security (2023). Department of Homeland Security's Cyber Safety Review Board to Conduct Review on Cloud Security (archive). https://www.dhs.gov/archive/news/2023/08/11/department-homeland-securitys-cyber-safety-review-board-conduct-review-cloud
  34. U.S. Department of Homeland Security (2024). Cyber Safety Review Board Releases Report on Microsoft Online Exchange Incident from Summer 2023. https://www.dhs.gov/news/2024/04/02/cyber-safety-review-board-releases-report-microsoft-online-exchange-incident-summer
  35. Brad Smith (2024). Microsoft's work to strengthen cybersecurity protection. https://blogs.microsoft.com/on-the-issues/2024/06/13/microsofts-work-to-strengthen-cybersecurity-protection/
  36. U.S. House Committee on Homeland Security (2024). A Cascade of Security Failures: Assessing Microsoft Corporation's Cybersecurity Shortfalls and the Implications for Homeland Security. https://homeland.house.gov/hearing/a-cascade-of-security-failures-assessing-microsoft-corporations-cybersecurity-shortfalls-and-the-implications-for-homeland-security/
  37. Charlie Bell (2024). Security above all else -- expanding Microsoft's Secure Future Initiative. https://www.microsoft.com/en-us/security/blog/2024/05/03/security-above-all-else-expanding-microsofts-secure-future-initiative/
  38. Brad Smith (2024). Written Testimony of Brad Smith, House Committee on Homeland Security (PDF). https://homeland.house.gov/wp-content/uploads/2024/06/2024-06-13-HRG-Testimony-Smith.pdf
  39. Microsoft Security Response Center (2024). Microsoft Actions Following Attack by Nation State Actor Midnight Blizzard (archive). https://web.archive.org/web/2024/https://msrc.microsoft.com/blog/2024/01/microsoft-actions-following-attack-by-nation-state-actor-midnight-blizzard/
  40. Microsoft Security Response Center (2024). Update on Microsoft Actions Following Attack by Nation State Actor Midnight Blizzard (archive). https://web.archive.org/web/2024/https://msrc.microsoft.com/blog/2024/03/update-on-microsoft-actions-following-attack-by-nation-state-actor-midnight-blizzard/
  41. Brad Smith (2023). A new world of security: Microsoft's Secure Future Initiative. https://blogs.microsoft.com/on-the-issues/2023/11/02/secure-future-initiative-sfi-cybersecurity-cyberattacks/
  42. Microsoft (2024). Securing our future: September 2024 progress update on Microsoft's Secure Future Initiative. https://www.microsoft.com/en-us/security/blog/2024/09/23/securing-our-future-september-2024-progress-update-on-microsofts-secure-future-initiative-sfi/
  43. Microsoft (2024). Azure Key Vault Managed HSM Overview. https://learn.microsoft.com/en-us/azure/key-vault/managed-hsm/overview
  44. NIST (2019). FIPS 140-3: Security Requirements for Cryptographic Modules. https://csrc.nist.gov/pubs/fips/140-3/final
  45. Microsoft (2024). Azure Integrated HSM Overview. https://learn.microsoft.com/en-us/azure/security/fundamentals/azure-integrated-hardware-security-module-overview
  46. Microsoft (2025). Securing our future: April 2025 progress report on Microsoft's Secure Future Initiative. https://www.microsoft.com/en-us/security/blog/2025/04/21/securing-our-future-april-2025-progress-report-on-microsofts-secure-future-initiative/
  47. Microsoft (2024). Azure Confidential Computing: products overview. https://learn.microsoft.com/en-us/azure/confidential-computing/overview-azure-products
  48. The Hacker News (2025). Microsoft Secures MSA Signing with Azure Confidential VMs After Storm-0558 Breach. https://thehackernews.com/2025/04/microsoft-secures-msa-signing-with.html
  49. Amazon Web Services (2024). AWS CloudHSM. https://aws.amazon.com/cloudhsm/
  50. Amazon Web Services (2024). Security in AWS IAM Identity Center. https://docs.aws.amazon.com/singlesignon/latest/userguide/security.html
  51. Google Cloud (2024). Cloud HSM. https://cloud.google.com/kms/docs/hsm
  52. Amazon Web Services (2024). AWS Nitro Enclaves: concepts. https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-concepts.html
  53. Amazon Web Services (2024). The Security Design of the AWS Nitro System. https://docs.aws.amazon.com/whitepapers/latest/security-design-of-aws-nitro-system/security-design-of-aws-nitro-system.html
  54. Google Cloud (2024). Confidential Computing. https://cloud.google.com/confidential-computing
  55. Amazon Web Services (2024). Rotating AWS KMS keys. https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html
  56. Google Workspace (2024). Maintain SAML certificates. https://knowledge.workspace.google.com/admin/apps/maintain-saml-certificates
  57. Amazon Web Services (2024). aws-jwt-verify (Node library). https://github.com/awslabs/aws-jwt-verify
  58. Amazon Web Services (2024). Verifying a JSON Web Token (Amazon Cognito). https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html
  59. Google (2024). Tink cryptographic library. https://developers.google.com/tink
  60. Amazon Web Services (2024). AWS Security Bulletins. https://aws.amazon.com/security/security-bulletins/
  61. Google Cloud (2024). Google Cloud Security Bulletins. https://cloud.google.com/support/bulletins
  62. Okta Security (2023). Unauthorized Access to Okta's Support Case Management System: Root Cause and Remediation. https://sec.okta.com/articles/2023/11/unauthorized-access-oktas-support-case-management-system-root-cause
  63. Cloudflare (2023). How Cloudflare mitigated yet another Okta compromise. https://blog.cloudflare.com/how-cloudflare-mitigated-yet-another-okta-compromise/
  64. Cloud Security Alliance (2024). Cloud Controls Matrix and CAIQ. https://cloudsecurityalliance.org/research/cloud-controls-matrix/
  65. FedRAMP (2024). FedRAMP Marketplace. https://www.fedramp.gov/
  66. Shafi Goldwasser, Silvio Micali, & Ronald L. Rivest (1988). A Digital Signature Scheme Secure Against Adaptive Chosen-Message Attacks. https://doi.org/10.1137/0217017
  67. Dan Boneh & Victor Shoup (2023). A Graduate Course in Applied Cryptography (Chapter 13: Digital Signatures, EUF-CMA security definition). https://toc.cryptobook.us/
  68. Chelsea Komlo & Ian Goldberg (2021). FROST: Flexible Round-Optimized Schnorr Threshold Signatures (Selected Areas in Cryptography, SAC 2020, LNCS 12804). https://link.springer.com/chapter/10.1007/978-3-030-81652-0_2
  69. D. Connolly, C. Komlo, I. Goldberg, & C. A. Wood (2024). RFC 9591: The Flexible Round-Optimized Schnorr Threshold (FROST) Protocol for Two-Round Schnorr Signatures. https://datatracker.ietf.org/doc/rfc9591/
  70. Yehuda Lindell & Ariel Nof (2018). Fast Secure Multiparty ECDSA with Practical Distributed Key Generation and Applications to Cryptocurrency Custody (ACM CCS 2018). https://cris.technion.ac.il/en/publications/fast-secure-multiparty-ecdsa-with-practical-distributed-key-gener/
  71. Jack Doerner, Yashvanth Kondi, Eysa Lee, & abhi shelat (2023). DKLs: Threshold ECDSA Signing Schemes (project landing page, including DKLs23 Threshold ECDSA in Three Rounds). https://dkls.info/
  72. B. Laurie, A. Langley, & E. Kasper (2013). RFC 6962: Certificate Transparency. https://www.rfc-editor.org/rfc/rfc6962.html
  73. Nat Sakimura, John Bradley, Michael B. Jones, & Edmund Jay (2023). OpenID Connect Discovery 1.0 (final, errata set 2). https://openid.net/specs/openid-connect-discovery-1_0.html
  74. CISA (2023). CISA and FBI Release Cybersecurity Advisory on Enhanced Monitoring to Detect APT Activity Targeting Outlook Online. https://www.cisa.gov/news-events/alerts/2023/07/12/cisa-and-fbi-release-cybersecurity-advisory-enhanced-monitoring-detect-apt-activity-targeting
  75. Google Cloud (2024). BeyondProd: A new approach to cloud-native security. https://cloud.google.com/docs/security/beyondprod
  76. Okta Security (2023). Tracking Unauthorized Access to Okta's Support System. https://sec.okta.com/articles/2023/10/tracking-unauthorized-access-oktas-support-system
  77. Okta Security (2023). HAR Files and the October 2023 Security Incident. https://sec.okta.com/harfiles
  78. Cloudflare (2014). Keyless SSL: The Nitty Gritty Technical Details. https://blog.cloudflare.com/keyless-ssl-the-nitty-gritty-technical-details/