Get the Zoom link
Cloud Security Office Hours Banner

Storm-0940 / ConnectWise Cloud Backup 2026

Step-by-step kill chain mapped to MITRE ATT&CK Cloud, sourced from official post-mortems and primary technical analyses.

October 2026 Critical Entra ID / M365

Storm-0940 / ConnectWise - Stolen App Credentials at a Backup Vendor → ARTEX Agents Try 2,250+ Tenants → Graph Reconnaissance → Self-Assigned Global Admin → Key Vault Secrets

Backup software for Microsoft 365 holds standing, tenant-wide application permissions, and using them involves no user sign-in and no MFA prompt. Public reports of a compromise at ConnectWise Cloud Backup, formerly SkyKick, began on October 15, 2026, and ConnectWise reported investigating attempted unauthorized access the next day, later describing access to application identities and credentials. Microsoft assesses that Storm-0940, a China-state aligned actor active since 2021, was responsible, and that it used ARTEX, a multi-agent penetration testing framework, to attempt sign-ins to more than 2,250 tenants. Microsoft says most of the targeting failed, and also that the group achieved privileged cloud persistence at many organizations in a brief time. In multiple customer environments agents ran Microsoft Graph reconnaissance, added application credentials for persistence, changed identities and privileged roles, and read secrets across Azure Key Vaults, and one ConnectWise management application assigned itself Global Administrator. In multiple instances, initial targeting to privileged access took less than three hours. How the credentials were taken has not been made public. ConnectWise disabled seven application identities on October 17, finished resetting accounts and credentials on October 19, and began phased restoration of Microsoft 365 backups on October 28. It says backup archives show no indication of compromise and that each tenant still needs its own review.

2,250+ tenants sign-ins attempted, a count of attempts rather than successes
Under 3 hours initial targeting to privileged access, in multiple instances
7 identities disabled by ConnectWise on October 17
Threat actor: Storm-0940, a China-state aligned actor, per Microsoft's assessment
📄 Microsoft - Storm-0940 uses ARTEX in a supply chain compromise ↗ 📄 ConnectWise - Cloud Backup advisory ↗ 📄 The Hacker News - Reporting on the campaign ↗
🧰 Resource Development: An Off-the-Shelf Agent Framework
01
Storm-0940 was running ARTEX, a multi-agent penetration testing framework, as early as September
T1588.007 - Obtain Capabilities: Artificial Intelligence

Microsoft describes Storm-0940 as an actor focused on data theft that historically relies on password spraying and internet-facing exploits, then OAuth application abuse for persistence. None of that is new. The operator is what changed.

ARTEX is a multi-agent LLM system written in Go with a Next.js front end. Its agents run an autonomous test from reconnaissance through data exfiltration, store discovered assets and vulnerabilities in a graph, and can use any AI model. Microsoft describes it as open source, and press reports say its developer took it closed source in October after it was linked to attacks on South Korean banks. Microsoft says multiple actors in different regions use it. It dates Storm-0940's ARTEX-driven activity to as early as September 2026.

Framework: ARTEX, multi-agent, Go with a Next.js front end
Models: any, chosen by the operator
State: assets and vulnerabilities stored in a graph
First seen here: as early as September 2026
ARTEXAgentic FrameworkT1588.007
🔑 Credential Access: A Spray That Failed
02
A five-day password spray hit 327 accounts at eight organizations, and Microsoft saw no success
T1110.003 - Password Spraying

From October 10 to 14, infrastructure at 144.172.64.99 sprayed 327 accounts across eight organizations, aimed at Microsoft 365 and Exchange Online. Microsoft counted more than 151,000 failed logons, over 111,000 of them on the peak day, reaching 2,900 failures per minute on October 11. 48 accounts took more than 1,000 failures each.

Microsoft observed no successful authentication, token issuance, Graph call or directory change from this spray. Its value to investigators came afterwards: the same address appears in ConnectWise's indicators, which helps tie the two activities together. The 2,900-per-minute figure belongs to this spray and describes failed logons only.

Window: October 10 to 14
Scope: 327 accounts, 8 organizations
Volume: 151,000+ failed logons, peak 2,900 per minute on October 11
Outcome: no successful authentication observed
Password SprayExchange OnlineT1110.003
⚡ Initial Access: The Vendor's Application Identities
03
Control of ConnectWise application identities opened a trusted route into customer tenants
T1199 - Trusted Relationship

ConnectWise describes unauthorized access to application credentials associated with Cloud Backup. In its October 20 update it was still working with outside specialists to learn how that access first happened, and its advisory has published no vector through its October 30 update. Microsoft says the activity did not come from a compromise of, or a vulnerability in, its corporate systems.

A multi-tenant application is one identity consented into many tenants. Whoever holds its credential can request a token for any tenant that granted consent, with no user present. That is what makes a backup vendor an attractive target: the product needs broad access to do its job, and that access stays in place between backups.

Product: ConnectWise Cloud Backup, formerly SkyKick
Applications named by Microsoft: ConnectWise Cloud Backup, MS Teams and MS Graph applications, among others
Entry vector: not published
Why it worked: app-only tokens need no user, so no interactive sign-in and no MFA prompt
Multi-Tenant AppTrusted RelationshipT1199T1195
🔀 Lateral Movement: Thousands of Tenants at Machine Speed
04
ARTEX agents attempted sign-in to more than 2,250 tenants using credentials the tenants already trusted
T1078.004 - Cloud Accounts

With the application credentials in hand, the agents authenticated to customer tenants, relying on the trust each application already held there. Microsoft's figure of more than 2,250 is a count of tenants where sign-in was attempted. It says most of the targeting was not successful and gives no number for tenants reached, reporting multiple customer environments with follow-on activity.

Microsoft warns against reading too much into a single indicator here. The presence of an affected application, or even a successful authentication, does not necessarily mean customer data was accessed or taken.

Attempted: more than 2,250 tenants
Succeeded: not published; multiple customer environments saw follow-on activity
Mechanism: existing application trust, no interactive sign-in
Caution: an affected app alone does not prove data access
App-Only AuthDownstream TenantsT1078.004
🔍 Discovery: Microsoft Graph
05
In some tenants the agents moved on to Microsoft Graph and directory reconnaissance
T1087.004 - Account Discovery: Cloud Account

In some environments the agents went past authentication into Microsoft Graph and directory operations. Microsoft calls this AI-accelerated reconnaissance, and the mapping in its report also lists cloud infrastructure discovery. Agents can work around the clock, which shortens the distance from picking a target to reaching an objective.

Interface: Microsoft Graph and directory operations
Also mapped: T1580 Cloud Infrastructure Discovery
Log source: MicrosoftGraphActivityLogs alongside SigninLogs
Microsoft GraphDirectory ReconT1087.004T1580
🔐 Persistence: Credentials on Existing Applications
06
Added application credentials created a way back that could outlive the vendor's cleanup
T1098.001 - Account Manipulation: Additional Cloud Credentials

Storm-0940 added or modified credentials on existing OAuth applications to keep its access to Microsoft 365. Microsoft warns that such changes can leave a backdoor through other identities, credentials and cloud services, and that it can survive after the original application is remediated. ConnectWise rotating its own credentials says nothing about a credential the attacker added inside your tenant.

Technique: add or modify credentials on existing OAuth applications
Consequence: access survives remediation of the original application
Where to look: Entra audit records: credential additions, new owners, consent grants
OAuth App AbuseApplication CredentialsT1098.001
⬆️ Privilege Escalation: Global Administrator
07
One ConnectWise management application assigned itself Global Administrator
T1098.003 - Account Manipulation: Additional Cloud Roles

Microsoft lists self-assignment of Global Administrator by a ConnectWise management application among the observed techniques, and describes changes to identities, groups and privileged roles. An application able to grant itself a directory role was already holding permissions close to that level.

This is where the three-hour figure belongs. Microsoft reports multiple instances where initial targeting to privileged access took less than three hours, against a campaign in which most of the targeting failed.

Observed: an application added itself to a high-privilege role
Speed: under 3 hours from targeting to privileged access, in multiple instances
Defender XDR alert: Application self-assigned Global Administrator role
Global AdministratorRole AssignmentT1098.003
🔑 Credential Access: Key Vault at Scale
08
Secrets were read at scale across multiple Azure Key Vaults
T1555.006 - Credentials from Password Stores: Cloud Secrets Management Stores

Microsoft reports cloud resource enumeration followed by bulk secret reads across multiple Azure Key Vaults, along with key enumeration and a key-unwrap operation. Each secret taken from a vault extends the incident beyond Microsoft 365, into whatever those secrets unlock. ConnectWise, for its part, says backup archives remain encrypted, isolated and preserved with no indication of compromise.

Observed: bulk secret reads across multiple Key Vaults
Also: key enumeration and a key-unwrap operation
Backup archives: no indication of compromise, per ConnectWise
Azure Key VaultSecret TheftT1555.006T1528

🛡 How to Defend Against This Chain

Inventory multi-tenant applications by application ID. Search every tenant where the applications were installed or authorized, including ones no longer used, because display names can mislead. ConnectWise's advisory lists seven application IDs and three suspicious addresses. Then ask the wider question for every vendor: which applications hold standing permissions here, and could any of them grant themselves more?
Preserve evidence before you delete anything. Microsoft's advice is to keep affected connections disabled and not to delete enterprise applications as a first response. Preserve Entra sign-in and audit records, Purview audit logs and Graph telemetry. Microsoft says to review from at least October 15 and to extend service principal sign-in review to October 1, and ConnectWise says to review from October 13. Deleting the application destroys context you will need.
Alert on changes to application credentials and roles. Credential additions, new owners, app-role assignments, consent grants and privileged role assignments are all rare events, and all of them appear in this chain. An application adding itself to a directory role deserves an immediate page. Review service principal sign-ins together with Graph activity, since neither shows the whole picture alone.
Shrink what third-party applications can do. Apply least privilege to multi-tenant permissions and consent grants, and ask vendors to justify directory write access. Review high-privilege applications on a schedule, and remove consent for products you stopped using. Conditional Access for workload identities can bind single-tenant principals you own to known networks, but it does not cover a vendor's multi-tenant application, so for those your controls are consent scope and monitoring.
Watch vault access per identity. Bulk reads across several vaults by one application is a clear signal when each identity has a baseline. Give each application its own vault, as Microsoft recommends, so that one compromised identity cannot read the rest, and alert on unusual enumeration and unwrap operations.
Confirm the vendor's fix covers your tenant. Check that credential rotation removed any remaining unauthorized access, and assess what the outage did to backup and restore. Re-authorization alone does not confirm backups have resumed, so verify that new snapshots complete.

Related defense topics