Actor Tokens: De meest kritieke Entra ID kwetsbaarheid ooit ontdekt
Samenvatting
In juli 2025 werd een uiterst kritieke kwetsbaarheid ontdekt in Microsoft Entra ID (voorheen Azure AD) die potentieel elke tenant wereldwijd had kunnen compromitteren. De ontdekker, beveiligingsonderzoeker Dirk-jan Mollema, vond een combinatie van twee zwakheden: ondocumenteerde “Actor tokens” voor service-to-service communicatie én een validatiefout in de legacy Azure AD Graph API. Deze combinatie maakte het mogelijk om als willekeurige gebruiker, inclusief Global Admins, in te loggen op elke Entra ID tenant.
Microsoft heeft de kwetsbaarheid binnen enkele dagen verholpen en CVE-2025-55241 toegewezen. Volgens Microsoft is er geen bewijs van misbruik gevonden.
Photo by Kathyryn Tripp on Unsplash
Wat waren Actor Tokens?
Actor tokens zijn speciale authenticatietokens die Microsoft intern gebruikt voor communicatie tussen services. Ze komen uit een legacy “Access Control Service” en werden bijvoorbeeld gebruikt door Exchange Online om namens gebruikers te communiceren met andere services zoals SharePoint en de Azure AD Graph API.
De grote problemen met deze tokens:
- Er worden geen logs gegenereerd bij het aanvragen van deze tokens
- Ze kunnen niet worden ingetrokken binnen hun 24-uurs geldigheid
- Ze omzeilen alle Conditional Access policies volledig
- Services kunnen ermee ongevraagd andere gebruikers imiteren
De fatale fout: Cross-tenant toegang
Het echte probleem lag in de Azure AD Graph API die niet correct valideerde uit welke tenant een Actor token kwam. Hierdoor kon een aanvaller:
- Een Actor token aanvragen in zijn eigen tenant
- Een unsigned JWT token creëren die zich voordoet als een gebruiker in een andere tenant
- Via de Azure AD Graph API volledige toegang krijgen tot die andere tenant
Zonder enige logs of detectiemogelijkheden.
Impact: Van ongekend tot catastrofaal
Met deze kwetsbaarheid kon een aanvaller:
Zonder detectie uitlezen:
- Alle gebruikersinformatie en persoonlijke gegevens
- Groepen, rollen en rechten
- Tenant-instellingen en Conditional Access policies
- Applicaties en hun permissies
- Device informatie en BitLocker sleutels
Met minimale logs wijzigen:
- Nieuwe Global Admin accounts aanmaken
- Credentials toevoegen aan bestaande applicaties
- API permissies toekennen voor data-exfiltratie
- Volledige controle over Microsoft 365 en Azure resources
Praktische uitvoering: Drie aanvalsvectoren
1. Brute-force aanpak
De netId
identifiers (te zien als puid
in tokens) zijn incrementeel in plaats van willekeurig. Een aanvaller kon deze binnen minuten tot uren brute-forcen voor een willekeurige tenant.
2. Token scraping
Oude of gelekte tokens, zelfs met verlopen handtekeningen, bevatten de benodigde netId
. Screenshots of logs met tokens zouden voldoende zijn geweest.
3. B2B Trust hopping (meest krachtig)
Dit was de meest elegante aanval:
- Lees de
netId
van guest users in jouw tenant (staat inalternativeSecurityIds
) - Zoek hun home tenant ID op via de domeinnaam
- Creëer een impersonation token voor die home tenant
- Compromitteer de hele tenant door Global Admins te imiteren
- Herhaal met de guest users in die nieuwe tenant
Deze methode schaalt exponentieel - met één Actor token kon je binnen minuten de informatie verzamelen om duizenden tenants over te nemen. Microsoft’s eigen tenant zou vaak één van de eerste zijn, omdat hun consultants vaak als guest worden uitgenodigd bij klanten.
Detectie: De Exchange vingerafdruk
Hoewel data-toegang onzichtbaar was, lieten wijzigingen wel merkwaardige audit logs achter. De logs toonden de UPN van de geïmiteerde admin maar de display name van “Office 365 Exchange Online” - een duidelijke indicator van Actor token misbruik.
KQL detectie query:
AuditLogs
| where not(OperationName has "group")
| where not(OperationName == "Set directory feature on tenant")
| where InitiatedBy has "user"
| where InitiatedBy.user.displayName has_any (
"Office 365 Exchange Online",
"Skype for Business Online",
"Dataverse",
"Office 365 SharePoint Online",
"Microsoft Dynamics ERP"
)
Timeline van de fix
- 14 juli 2025: Kwetsbaarheid gerapporteerd aan MSRC
- 17 juli 2025: Fix wereldwijd uitgerold (3 dagen later!)
- 6 augustus 2025: Aanvullende mitigaties geïmplementeerd
- 4 september 2025: CVE-2025-55241 gepubliceerd
- 17 september 2025: Publieke disclosure
Lessen voor security professionals
- Legacy protocols zijn gevaarlijk: De Actor token implementatie miste vrijwel alle moderne security controls
- Defense in depth werkt: Conditional Access had niet geholpen tegen deze aanval
- Logging is cruciaal: Het gebrek aan telemetrie maakte detectie vrijwel onmogelijk
- Guest access vereist voorzichtigheid: B2B trusts kunnen onverwachte aanvalspaden creëren
Conclusie
Deze kwetsbaarheid toont aan hoe legacy systemen en backwards compatibility ernstige security risico’s kunnen introduceren. Het ontwerp van Actor tokens - zonder logging, revocation of policy enforcement - was fundamenteel onveilig. Gelukkig reageerde Microsoft buitengewoon snel met een fix.
Voor Entra ID beheerders: controleer je audit logs met de bovenstaande query en wees alert op ongebruikelijke patronen in de audit trails van je Global Admins.
Bronnen: