Supply chain compromiseConnectWise Cloud BackupMicrosoft 365

ConnectWise Cloud Backup Compromise. Disable. Preserve. Hunt.

Stolen secrets for ConnectWise Cloud Backup (formerly SkyKick) apps were used to sign in to Microsoft 365 tenants without any user. Clear steps to check exposure, contain the apps and hunt for persistence across your own tenant or your clients'.

At a Glance

Facts from Microsoft's report and ConnectWise's advisories and remediation guide. Last updated 22 October 2026, 08:00 BST.

10 to 14 Oct

Automated password spray against Microsoft 365 accounts from 144.172.64[.]99. Microsoft saw no successful sign-ins from it.

14 Oct

ConnectWise discovers the problem and starts incident response.

15 Oct

First public reports of the compromise. Attacker sign-ins into customer tenants through the ConnectWise apps.

16 Oct, 18:47 BST

ConnectWise publishes its first advisory.

17 Oct, 08:00 BST

ConnectWise disables the seven app identities and revokes their certificates. Backups stop.

19 Oct

ConnectWise completes a full reset of accounts and credentials in the affected Cloud Backup environment.

21 Oct

Microsoft attributes the attack to Storm-0940. ConnectWise begins phased restoration.

Now

Keep the apps disabled, preserve logs, and hunt every tenant for credentials, roles and mailbox changes the attacker may have left behind.

What to Do in the Next 24 Hours

Proactive on the left. Reactive on the right. Tick both tracks.

Proactive: Check Exposure and Contain

Work through every tenant you are responsible for. Match on application ID, because older installs may still show SkyKick names.

Free Checker Scripts

Built and tested by the CybaVerse threat hunt team. Run them against your own tenant or every client tenant you manage to get a clear verdict and a copy of the evidence.

Read-only by design

Both scripts use read-only Microsoft Graph scopes (Application.Read.All, Directory.Read.All, AuditLog.Read.All and RoleManagement.Read.Directory) and only call Connect, Disconnect and Get cmdlets. They change nothing in the tenant and write only local report files. Disabling apps and removing credentials stay with you. Review any script before you run it.

Verdicts

  • NOT_PRESENTNone of the apps is in the tenant and nothing suspicious was found. Still review logs if retention allows.
  • PRESENT_DISABLEDAn app is present and disabled. Keep it disabled and review the logs.
  • PRESENT_ENABLEDAn app is present and still enabled. Disable it now, then preserve evidence.
  • SUSPICIOUS_CHANGESLocal credentials, a directory role or owner, new app credentials since 15 October, or sign-ins from attacker IPs. Start incident response.
  • ERRORThe check could not connect or query, so the result is unknown.

Exit codes

CodeMeaning
0NOT_PRESENT
1PRESENT_DISABLED
2PRESENT_ENABLED
3SUSPICIOUS_CHANGES
4ERROR

MSPs and internal IT teams can use the exit code in RMM or deployment tooling to flag hosts at scale.

Know the limits

  • A clean result does not prove a tenant was unaffected. Log retention, licensing and permissions all limit what can be seen.
  • Service principal sign-in checks need Entra P1 or P2. Free tenants keep only 7 days of logs, so activity from 15 to 17 October may already be gone.
  • Credential start dates do not prove when a credential was added. Correlate with the audit log.
  • Purview audit and mailbox rules are not covered by Graph, so run the Exchange Online steps as well.

Reactive: How to Hunt

Treat any sign-in, Graph call or directory change by these apps from unexpected sources as an incident. Disabling the apps stops new sign-ins, but credentials, roles and rules the attacker added stay in place. CybaOps can run these hunts across your estate or your clients'.

Indicators of compromise

From Microsoft's report and ConnectWise's advisories. An IP or user agent match needs investigation in context. It does not prove compromise on its own, and a clean search does not rule it out.

# Defanged. Re-fang only inside your security tooling. Times are UTC.
# Attacker IPs (sign-ins and Microsoft Graph activity through the ConnectWise apps)
144.172.64[.]128
144.172.64[.]99     (also the 10 to 14 Oct password spray against Microsoft 365)
144.172.64[.]60

# VPN IPs: shared and transient. Only relevant on 15 to 16 Oct, together with the ConnectWise app IDs
187.15.88[.]186
187.15.90[.]217
187.15.89[.]186

# User agents (legitimate admin scripts use some of these too, so correlate)
Python-urllib/3.12
python-requests/2.31.0
python-requests/2.34.2
curl/7.88.1
azure-toolkit/1.0

# Application (client) IDs: match on the ID, not the display name
506e08f9-6e9a-4da4-942b-a099a03644ae   ConnectWise Cloud Backup
2399d300-6fca-4e6a-a686-399fefe75b83   ConnectWise Cloud Management
24205314-2b89-4e07-a2a4-579e898a5640   Cloud Management, MS Teams
b78f6a77-d4e5-46fb-87e5-d1648bd02519   Cloud Management, Exchange Online
0de14c77-b9b0-4137-9360-34878a929827   Cloud Management, MS Graph
412dcf96-176d-4b3a-a1b0-4981ad66971e   Cloud Management, Partner Center
b2b55f5b-7758-4719-8d8f-88ae172e6bdb   Cloud Management, SharePoint Online
c921256f-04a7-44e8-9b2a-69c33929ba19   Other ConnectWise app (no threat activity seen; disable as a precaution)

# Microsoft Defender XDR alert to watch for first
Unusual Microsoft Graph activity associated with Compromised ConnectWise Application

ConnectWise Cloud Backup FAQ

Short answers based on Microsoft's report and ConnectWise's advisories as of 22 October 2026.

What happened to ConnectWise Cloud Backup?

Attackers stole secrets for the multi-tenant Microsoft 365 apps used by ConnectWise Cloud Backup, formerly SkyKick, and its Cloud Management service. They used them to sign in to customer tenants as those trusted apps, with no user sign-in needed. In some tenants they went on to Microsoft Graph reconnaissance, application credential changes and privilege changes.

Who is behind it?

On 21 October 2026 Microsoft attributed the attack to Storm-0940, a China-aligned group that used an agentic AI framework to automate it. Microsoft saw sign-in attempts against more than 2,250 tenants.

Is there a CVE or a patch?

No. This is a supply chain compromise of app credentials, not a software flaw, so there is no CVE and nothing to install. The response is to disable the apps, preserve logs and hunt each tenant.

Am I affected?

Any Microsoft 365 tenant where one of the seven ConnectWise apps was ever authorised is in scope, including dormant SkyKick connections. Search Enterprise applications by application ID. Having the app, or even a sign-in, does not prove data was taken, so review the logs.

ConnectWise disabled the apps. Is that enough?

No. ConnectWise disabled the apps on 17 October, but that does not change the setting in your tenant, and it does not remove credentials, roles, consent grants or mail rules the attacker added. Disable the apps locally, keep the evidence, then remove attacker access and rotate secrets.

Should I delete the ConnectWise apps?

Not as a first step. Disable them instead. Deleting removes configuration, grants and credentials that are evidence. Keep them disabled until ConnectWise publishes reconnection steps.

Are my backups safe?

ConnectWise says existing backups remain encrypted and isolated with no sign of compromise. Backup and restore are unavailable until service is restored, so check your last good recovery point and plan for the gap.

What should MSPs do first?

Check your own tenant and every client tenant by application ID, disable the apps, export logs before the 7 day or 30 day retention runs out, then run the hunts. Prioritise tenants with privileged access or sensitive mail.

Detect and Remediate the ConnectWise Compromise Across Your Estate

CybaOps monitors identity and Microsoft 365 activity across every tenant you look after, whether that's your own business or your clients'. Our SOC runs these threat hunts, alerts on new app credentials, role assignments and risky consent, and drives remediation through to a verified fix, so proactive checks and reactive response happen in one place.