Notas previas — léelas antes de operar sobre este contenido

  • Los CVE IDs aquí listados provienen del feed real de Sentry en mayo de 2026. Cada ficha enlaza a MSRC y NVD para verificación. Si un enlace devuelve 404, el advisory aún no es público y el dato proviene de pre-disclosure: trátalo como “under investigation” hasta confirmar.
  • Las KQL incluidas son hunting queries, no reglas de alerta listas. Ajusta TimeGenerated y campos al esquema real de tu workspace antes de promoverlas.
  • Sentry marca cada amenaza como New | Triaged | Mitigating | Patched | Ignored en el Workflow Kanban. Las acciones de este boletín están pensadas para mover una tarjeta de New a Mitigating en la misma sesión.

Cómo leer cada ficha

Cada CVE se documenta con el mismo esquema:

SecciónPara qué sirve
IdentificaciónCVE, CVSS, vector, fuentes, fecha
Exposición técnicaAuth requerida, RCE/IDOR/SSRF, PoC público, KEV, productos/versiones
MITRE ATT&CKTécnicas asociadas para mapear a tu detection coverage
Detección (KQL)Hunting query lista para Microsoft Sentinel / Defender XDR
Mitigación inmediataAcciones SOC en orden, no narrativa
ReferenciasEnlaces verificables

Identificación

CampoValor
CVECVE-2026-33823
MSRCMSRC advisory
CVSS v3.19.6 (CRITICAL) — vector AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N (estimado)
CWECWE-285 — Improper Authorization
ProductoMicrosoft Teams Events (Town Halls / Webinars) — servicio M365
Fuentes SentryNVD + MSRC (2 sources)
Disclosure7 de mayo de 2026

Exposición técnica

PreguntaRespuesta
¿Requiere autenticación?, usuario autenticado en el tenant (PR:L)
¿Es RCE?No — Information Disclosure
¿Explotable remotamente? (AV:N, vía HTTPS al portal)
¿PoC público?No confirmado al cierre de este boletín
¿En CISA KEV?No
¿Explotación activa?No reportada
Versiones afectadasServicio gestionado — mitigación server-side por Microsoft

MITRE ATT&CK

  • T1213Data from Information Repositories (acceso no autorizado a contenido de Teams Events).
  • T1078.004Valid Accounts: Cloud Accounts (precondición: cuenta de tenant válida).
  • T1530Data from Cloud Storage (si el evento contiene archivos adjuntos).

Detección — KQL para Sentinel / Defender XDR

Acceso anómalo al portal de Teams Events (volumen inusual de lecturas por un mismo principal):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
let lookback = 7d;
let threshold = 50;
OfficeActivity
| where TimeGenerated > ago(lookback)
| where OfficeWorkload == "MicrosoftTeams"
| where Operation in~ ("MeetingDetail", "MeetingParticipantDetail", "TeamsTenantSettingChanged")
| summarize events = count(), distinctMeetings = dcount(tostring(parse_json(AdditionalDetails)[0].Value))
    by UserId, ClientIP, bin(TimeGenerated, 1h)
| where events > threshold
| order by events desc

Búsqueda de tokens de acceso al recurso de Teams emitidos desde IPs no habituales:

1
2
3
4
5
6
7
8
SigninLogs
| where TimeGenerated > ago(7d)
| where ResourceDisplayName has "Microsoft Teams"
| where ResultType == 0
| summarize signIns = count(), countries = make_set(LocationDetails.countryOrRegion, 5)
    by UserPrincipalName, IPAddress
| where array_length(countries) > 1
| order by signIns desc

Mitigación inmediata (orden de ejecución SOC)

  1. Validar exposición: confirmar en Microsoft 365 Admin Center la versión actual del servicio Teams Events y revisar el banner de status de MSRC.
  2. Auditar accesos privilegiados: identificar usuarios con rol Teams Administrator o Global Reader y validar sus sign-ins de las últimas 14 días.
  3. Logs Teams/Audit: ejecutar la KQL anterior con lookback = 14d para detectar lecturas masivas previas al disclosure.
  4. Conditional Access: confirmar que el acceso a Teams requiere MFA y device compliance. Si no, crear policy temporal scoped a Office 365 con MFA forzado para mitigar reutilización de tokens.
  5. Comunicación: alertar al equipo de eventos corporativos por si hubo town halls con contenido sensible (financiero, HR, M&A) en la ventana 1–7 mayo.
  6. Confirmar parcheo: cuando MSRC marque Resolved, mover la tarjeta del Workflow Sentry a Patched y registrar evidencia.

Referencias


2. Microsoft Entra ID — Enterprise Security Token Service (ESTS) Spoofing

Identificación

CampoValor
CVECVE-2026-40379
MSRCMSRC advisory
CategoríaSpoofing — Token Service
ComponenteESTS (emisor de tokens de Entra ID)
CWE candidatoCWE-287 — Improper Authentication

Exposición técnica

PreguntaRespuesta
¿Requiere autenticación?Depende del flujo afectado — confirmar en MSRC
¿Es RCE?No — Spoofing (forgery de identidad en token)
¿Explotable remotamente?
¿PoC público?No conocido
¿En CISA KEV?No
Blast radiusTodo el tenant — ESTS emite todos los tokens

MITRE ATT&CK

  • T1606.002Forge Web Credentials: SAML Tokens.
  • T1550.001Use Alternate Authentication Material: Application Access Token.
  • T1078.004Valid Accounts: Cloud Accounts.

Detección — KQL

Sign-ins exitosos con tokenIssuerType anómalo o claims inesperados:

1
2
3
4
5
6
7
8
SigninLogs
| where TimeGenerated > ago(14d)
| where ResultType == 0
| extend claims = tostring(AuthenticationDetails)
| where TokenIssuerType !in~ ("AzureAD", "AzureADBackupAuth")
   or AuthenticationProcessingDetails has "spoofed"
| project TimeGenerated, UserPrincipalName, AppDisplayName, TokenIssuerType, IPAddress, ResourceDisplayName
| order by TimeGenerated desc

Tokens con appId inusual frente al baseline del tenant:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
let baseline = SigninLogs
    | where TimeGenerated between (ago(60d) .. ago(14d))
    | summarize count() by AppId
    | where count_ > 20
    | distinct AppId;
SigninLogs
| where TimeGenerated > ago(14d)
| where ResultType == 0
| where AppId !in (baseline)
| summarize signIns = count(), users = dcount(UserPrincipalName) by AppId, AppDisplayName
| order by signIns desc

Mitigación inmediata

  1. Token validation audit: revisar que apps registradas validen iss, aud, exp, nbf y firma. Apps que confíen ciegamente son las primeras víctimas.
  2. Conditional Access: forzar RequireMFA + RequireCompliantDevice para todos los usuarios con roles privilegiados (al menos los 14 roles top de Entra).
  3. Revocar refresh tokens: ante sospecha confirmada, Revoke-AzureADUserAllRefreshToken o el equivalente Microsoft Graph para usuarios privilegiados.
  4. Continuous Access Evaluation (CAE): confirmar que CAE está habilitado para forzar reevaluación en cambios críticos.
  5. Auditar service principals: nuevos SP creados en las últimas 30 días — un atacante con token forjado suele instalar persistencia vía app registration.

Referencias


3. Azure Managed Instance for Apache Cassandra — RCE (dos CVEs)

Identificación

CampoCVE-2026-33109CVE-2026-33844
NVDCVE-2026-33109CVE-2026-33844
CWEImproper Access ControlImproper Input Validation
CategoríaRCERCE
ProductoAzure Managed Instance for Apache CassandraAzure Managed Instance for Apache Cassandra

Exposición técnica

PreguntaRespuesta
¿Requiere autenticación?Probable (validar en MSRC)
¿Es RCE? — ejecución de código en el plano del servicio
¿Explotable remotamente?
¿PoC público?No conocido
Versión afectadaConfirmar en portal Azure → versión del control plane del servicio

MITRE ATT&CK

  • T1190Exploit Public-Facing Application.
  • T1078.004Valid Accounts: Cloud Accounts.
  • T1505.003Server Software Component: Web Shell (si el RCE permite persistencia).

Detección — KQL

Operaciones de plano de control sobre Managed Cassandra desde principales/IPs no habituales:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
AzureActivity
| where TimeGenerated > ago(14d)
| where OperationNameValue has_any (
    "MICROSOFT.DOCUMENTDB/CASSANDRACLUSTERS",
    "MICROSOFT.DOCUMENTDB/CASSANDRACLUSTERS/DATACENTERS"
)
| where ActivityStatusValue in ("Start", "Success")
| summarize ops = count() by Caller, CallerIpAddress, OperationNameValue, bin(TimeGenerated, 1h)
| where ops > 5
| order by TimeGenerated desc

Tráfico de red anómalo hacia/desde los nodos Cassandra:

1
2
3
4
5
6
7
8
AzureNetworkAnalytics_CL
| where TimeGenerated > ago(7d)
| where DestPort_d in (9042, 7000, 7001)  // Cassandra CQL + internode
| where AllowedInFlows_d > 0
| summarize flows = sum(AllowedInFlows_d), bytes = sum(InboundBytes_d)
    by SrcIP_s, DestIP_s, DestPort_d
| where bytes > 1000000
| order by bytes desc

Mitigación inmediata

  1. Inventario: az resource list --resource-type Microsoft.DocumentDB/cassandraClusters — confirmar si tienes despliegues.
  2. Network isolation: revisar allowedFirewallIPs del cluster. Restringir a IPs estrictamente necesarias (Isolate).
  3. Rotación de credenciales: cassandraAdminPassword y certificados cliente.
  4. Defender for Cloud: confirmar que el recurso esté cubierto por el plan correspondiente y revisar alertas del último mes.
  5. Logs: habilitar auditLog y queryLog si no están activos (suelen estar deshabilitados por costo).

Referencias


4. Azure Monitor — Action Groups SSRF

Identificación

CampoValor
CVECVE-2026-41105
CWECWE-918 — Server-Side Request Forgery
ComponenteSistema de notificaciones de Action Groups

Exposición técnica

PreguntaRespuesta
¿Requiere autenticación?Sí — quien pueda modificar Action Groups
¿Es RCE?No — SSRF
Riesgo concretoAcceso a IMDS (169.254.169.254) → robo de credenciales de identidades gestionadas
Cross-tenantPosible si el webhook cruza confianzas

MITRE ATT&CK

  • T1190Exploit Public-Facing Application.
  • T1552.005Credentials from Cloud Instance Metadata API.
  • T1098.003Account Manipulation: Additional Cloud Roles (si la SSRF roba un token con permisos).

Detección — KQL

Modificaciones a Action Groups, especialmente webhooks salientes:

1
2
3
4
5
6
AzureActivity
| where TimeGenerated > ago(30d)
| where OperationNameValue has "MICROSOFT.INSIGHTS/ACTIONGROUPS/WRITE"
| extend props = parse_json(Properties)
| project TimeGenerated, Caller, CallerIpAddress, ResourceGroup, Resource, ActivityStatusValue, props
| order by TimeGenerated desc

Webhooks que apuntan a destinos sospechosos (loopback, link-local, rangos internos):

1
2
3
4
5
6
7
AzureDiagnostics
| where TimeGenerated > ago(30d)
| where ResourceType == "ACTIONGROUPS"
| where Category == "Webhook"
| extend uri = tostring(parse_json(Properties_s).webhookUri)
| where uri matches regex @"https?://(169\.254|127\.|10\.|192\.168|172\.(1[6-9]|2[0-9]|3[01])\.|metadata\.azure)"
| project TimeGenerated, Resource, uri

Mitigación inmediata

  1. Listar Action Groups: az monitor action-group list -o table y revisar webhookReceivers de cada uno.
  2. Validar destinos: eliminar webhooks hacia rangos privados, loopback o 169.254.x.x.
  3. Egress control: si tu suscripción tiene NSG/Firewall de egress, bloquear IMDS desde recursos donde no aplique.
  4. Alerta temporal SIEM: regla que dispare ante creación/modificación de Action Groups por un mes.

Referencias


5. Azure AI Foundry — M365 Agents Elevation of Privilege

Identificación

CampoValor
CVECVE-2026-35435
CategoríaElevation of Privilege
ComponenteAzure AI Foundry — agentes publicados con conectores M365
CWE candidatoCWE-269 — Improper Privilege Management

Exposición técnica

PreguntaRespuesta
¿Requiere autenticación?Sí — atacante autenticado en el tenant
¿Es RCE?No — EoP sobre la red
Datos en juegoMail, archivos OneDrive/SharePoint, calendario, Teams via agente

MITRE ATT&CK

  • T1078.004Valid Accounts: Cloud Accounts.
  • T1098Account Manipulation.
  • T1213.002Data from Information Repositories: SharePoint.

Detección — KQL

Agentes publicados con permisos delegados elevados a M365:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
AuditLogs
| where TimeGenerated > ago(30d)
| where OperationName in~ (
    "Consent to application",
    "Add delegated permission grant",
    "Add app role assignment to service principal"
)
| extend target = tostring(TargetResources[0].displayName)
| extend permissions = tostring(parse_json(tostring(TargetResources[0].modifiedProperties))[0].newValue)
| where target has_any ("AIFoundry", "AI Foundry", "Copilot Studio")
   or permissions has_any ("Mail.Read", "Files.ReadWrite.All", "Sites.FullControl.All")
| project TimeGenerated, target, permissions, InitiatedBy
| order by TimeGenerated desc

Invocaciones masivas de agentes (potencial scraping de datos M365):

1
2
3
4
5
6
7
8
let lookback = 7d;
AppServiceHTTPLogs
| where TimeGenerated > ago(lookback)
| where CsHost contains "ai.azure.com" or CsHost contains "foundry"
| summarize calls = count(), uniqueUsers = dcount(CIp)
    by ClientIP_s = CIp, bin(TimeGenerated, 1h)
| where calls > 200
| order by calls desc

Mitigación inmediata

  1. Inventario de agentes: portal AI Foundry → listar agentes publicados con scope tenant.
  2. Auditar permisos delegados: cualquier agente con Mail.*, Files.*All, Sites.FullControl.* requiere justificación documentada.
  3. Eliminar agentes huérfanos: agentes sin owner activo o sin uso en 30 días → revocar.
  4. Conditional Access for Apps: aplicar policy a apps de AI Foundry para limitar IPs / device compliance.

Referencias


Tablero ejecutivo

#CVEProductoSeveridadVectorAcciónVentana SLA
1CVE-2026-33823Teams Events🔴 9.6 CriticalInfo DisclosureAuditar logs + CA temporal24 h
2CVE-2026-40379Entra ID ESTS🟠 Medium / Alto impactoSpoofingValidar tokens + revocar refresh48 h
3CVE-2026-33109/33844Azure Cassandra🟠 Medium / RCENetwork → RCEIsolate + rotar credenciales48 h
4CVE-2026-41105Azure Monitor🟠 MediumSSRFRevisar webhooks + egress control1 semana
5CVE-2026-35435AI Foundry M365🟠 Medium / EoPEoPAuditar permisos delegados1 semana

Próximos pasos recomendados

  • Importar este boletín a Sentinel: crear analytic rules a partir de las KQL anteriores. Empezar por queries en modo Scheduled (alert) con frequency = 1h, lookback = 24h.
  • Cobertura MITRE: cruzar las técnicas listadas (T1190, T1213, T1606, T1552.005, T1078.004) contra tu Defender XDR Coverage para identificar gaps.
  • Watchlist Sentry: crear watchlists por producto (Teams, Entra, Cassandra, Azure Monitor, AI Foundry) con severidad mínima medium y modo KEV-only para los próximos 30 días.
  • Próxima edición: este boletín se actualiza cuando MSRC publique versiones concretas. La fecha de lastmod refleja la última revisión.

Verificar el feed en vivo y conectar tu tenant

👉 sentry.d3fend.me — sign-in con Microsoft Entra ID, GitHub o Google. El módulo Cloud Assets cruza estos CVEs contra los recursos reales de tu suscripción.

Más contexto en la serie: