Ataque a la Cadena de Suministro en ConnectWise Cloud Backup: Entidades de Servicio Comprometen Cientos de Tenants de Microsoft 365

ConnectWise Cloud Backup Ataque a la Cadena de Suministro Microsoft 365 Service Principals
📌
Security Roundup Series: Fin de Semana del 19 de Octubre de 2026 • 6 min de lectura deep dive
🏛️
Incident Overview: Target / Organization: ConnectWise Cloud Backup (Anteriormente SkyKick) y Tenants de Microsoft 365 de Clientes MSP Threat Actor / Attribution: Actor de Amenazas No Atribuido (Campaña Automatizada de Enumeración de Tenants) Impact / Records Compromised: Cientos de Tenants Empresariales de Microsoft 365 Accedidos mediante Service Principals OAuth; 7 Identidades de Aplicación Deshabilitadas Initial Attack Vector: Compromiso de Credencial / Certificado Maestro de Identidad de Aplicación (AppId: 506e08f9-6e9a-4da4-942b-a099a03644ae) Eludiendo el MFA de Usuario

El 17 de octubre de 2026, el gigante de software para proveedores de servicios gestionados (MSP) ConnectWise suspendió de emergencia su plataforma Cloud Backup (anteriormente SkyKick Cloud Backup) y revocó los certificados de siete identidades de aplicaciones multi-tenant en Microsoft Entra ID. La medida respondió al hallazgo conjunto de Huntress, Inforcer y Microsoft de que actores de amenazas habían comprometido una credencial maestra del Service Principal de respaldo, utilizándola desde el 15 de octubre para autenticarse silenciosamente en cientos de tenants de Microsoft 365 de clientes.

Mecánica de la Intrusión: Abuso de Flujos OAuth App-Only

Para respaldar buzones de Exchange Online, sitios de SharePoint Online, OneDrive y Microsoft Teams, las soluciones de backup en la nube utilizan aplicaciones empresariales multi-tenant en Microsoft Entra ID con consentimiento administrativo global. Al poseer el secreto o certificado maestro de la aplicación principal (506e08f9-6e9a-4da4-942b-a099a03644ae), el atacante solicitó tokens válidos de Microsoft Graph mediante el flujo grant_type=client_credentials.

[Bóveda del Proveedor Comprometida]
       |
       | Extrae Secreto / Clave Privada para AppId: 506e08f9-6e9a-4da4-942b-a099a03644ae
       v
[Endpoint de Tokens Entra ID: login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token]
       |
       | grant_type=client_credentials (Flujo App-Only -> ¡Elude MFA de Usuario y Acceso Condicional!)
       v
[Token de Acceso Emitido con Permisos Preaprobados]
  - Mail.ReadWrite / full_access_as_app
  - Files.ReadWrite.All / Sites.FullControl.All
  - Directory.ReadWrite.All / RoleManagement.ReadWrite.Directory

Los análisis forenses revelaron que el atacante ejecutó un script automatizado que iteraba sobre los tenants afectados en estricto orden alfabético/hexadecimal de su Tenant GUID, enumerando roles de directorio y usuarios administrativos.

Consultas KQL de Caza en Microsoft Sentinel / Entra ID

// Buscar inicios de sesión anómalos de Service Principals de ConnectWise / SkyKick
let CompromisedAppIds = dynamic([
    "506e08f9-6e9a-4da4-942b-a099a03644ae",
    "beffc098-b1fc-42c2-91f2-a8d2c2e11120",
    "d326c1c9-093a-478a-97d9-7252f59f9681"
]);
AADServicePrincipalSignInLogs
| where TimeGenerated >= datetime(2026-10-14T00:00:00Z)
| where AppId in (CompromisedAppIds) or ServicePrincipalName has_any ("SkyKick", "ConnectWise", "CloudBackup")
| where ResultType == 0
| summarize SignInCount = count(), FirstSeen = min(TimeGenerated), DistinctIPs = make_set(IPAddress)
    by TenantId, ServicePrincipalName, AppId

Pasos de Remediación para MSPs y Administradores de M365

  1. Verificar la Desactivación de las 7 Aplicaciones Empresariales: En el Centro de Administración de Microsoft Entra, revise Aplicaciones Empresariales y confirme que las identidades vinculadas a ConnectWise Cloud Backup / SkyKick tengan deshabilitado el inicio de sesión y revocados sus permisos hasta la emisión de nuevas identidades verificadas.
  2. Auditar Cambios en Roles y Secretos de Directorio: Revise AuditLogs desde el 14 de octubre para descartar que el Service Principal comprometido haya añadido secretos a otras aplicaciones o elevado privilegios.
  3. Implementar Acceso Condicional para Identidades de Carga de Trabajo (Workload Identities): Restrinja el uso de Service Principals de terceros únicamente a los rangos IP estáticos oficiales del proveedor.

Read more