Les extensions de certificat "Key Usage" et "Extended Key Usage" permettent de déterminer à quelles fins un certificat numérique peut être utilisé. Dans l'extension de certificat "Extended Key Usage", les des utilisations de clés étendues pour lesquels le certificat peut être utilisé.
Il existe toutefois, pour les certificats émis par une autorité de certification Microsoft, une autre extension de certificat appelée "Application Policies" (en anglais : "Politiques d'application"), qui contient également une liste très similaire à l'extension Extended Key Usages.
Justin Bollinger de TrustedSec a découvert queque, pour les demandes de certificats hors ligne, il est contre Modèles de certificats de la version 1 du schéma est possible (comme pour la Extension Security Identifier), n'importe quel Politiques d'application dans la demande de certificat, qui sont reprises telles quelles dans le certificat délivré et peuvent ensuite être utilisées pour attaquer la structure globale d'Active Directory. L'attaque a été baptisée ESC15.
Comment fonctionne l'attaque ?
L'attaque fonctionne en permettant à un attaquant d'exploiter l'un des modèles de certificat standard version 1, à condition que celui-ci soit publié sur une autorité de certification.
Dans la plupart des cas, il s'agira du modèle „serveur web“, car il permet aux demandeurs autorisés de transmettre également l'identité du certificat émis dans la demande de certificat (option „Supply in the Request“).

Cependant, les certificats émis ne seraient pas adaptés à l'augmentation des droits, car ils ne font qu'augmenter la valeur des droits. Utilisation étendue des clés (EKU) „Server Authentication“, c'est-à-dire qu'ils ne peuvent représenter qu'une seule identité de serveur.
Voici venir l'extension de certificat Application Policies entre en jeu. Il s'agit ici d'une Extension de certificat propriétaire Microsoft datant de l'époque de Windows (Server) 2000. Son contenu est très similaire à celui de l'extension „Extended Key Usage“ et, selon Microsoft, elle était également destinée à des fonctions comparables.
La politique d'application est spécifique à Microsoft et est traitée un peu comme l'utilisation de clés étendues.
L'attaquant peut ajouter à sa demande de certificat une extension „Application Policies“ correspondante, qui contient par exemple „Client Authentication“.

Le certificat délivré reprendra alors cette extension 1:1.

Il sera encore plus intéressant de voir comment les applications se comportent désormais.
Comme l'a découvert Justin Bollinger, de tels certificats conviennent parfaitement pour se connecter à l'Active Directory. Il est donc possible d'augmenter les droits jusqu'à Enterprise Administrator avec un tel certificat.
En outre, d'autres bibliothèques Microsoft sont également vulnérables. Par exemple, une „politique d'application“ pour la signature de code pourrait également être demandée et du code malveillant pourrait être signé en conséquence.
Est-ce vraiment aussi simple que cela ?
A mon avis, pas vraiment, car il faut que de nombreuses circonstances soient réunies pour que l'attaque fonctionne :
- L'erreur n'existe que pour les modèles de certificats de la version 1.
- L'erreur n'existe que pour les modèles de certificats hors ligne, c'est-à-dire ceux pour lesquels le demandeur peut de toute façon choisir librement l'identité du certificat délivré.
- Pour exploiter cette erreur, l'attaquant a besoin de droits pour demander des certificats à partir du modèle de certificat correspondant.
- Il existe des contre-mesures simples, qui sont décrites ci-dessous.
On peut toutefois supposer qu'il existe encore de nombreuses installations généralement mal sécurisées des Active Direectory Certificate Services.
Actuellement, il n'existe pas encore de correctif de Microsoft (je suppose aussi que personne ne viendra de sitôt).
Contre-mesures
Connaissez-vous TameMyCerts? TameMyCerts est un add-on pour l'autorité de certification Microsoft (Active Directory Certificate Services). Il étend la fonction de l'autorité de certification et permet de Application de la réglementationIl s'agit d'un logiciel de gestion des certificats qui permet d'automatiser l'émission de certificats en toute sécurité. TameMyCerts est unique dans l'écosystème Microsoft, a déjà fait ses preuves dans d'innombrables entreprises du monde entier et est disponible sous une licence libre. Il peut téléchargé via GitHub et être utilisé gratuitement. Une maintenance professionnelle est également proposée.
Désactiver les modèles de certificats par défaut de la version 1
Les modèles de certificats suivants sont vulnérables à l'attaque :
- ExchangeUserSignature
- ExchangeUser
- CEPEncryption
- Routeur hors ligne
- IPSECIntermediateOffline
- SubCA
- CA
- Serveur web
- EnrollmentAgentOffline
Si l'autorité de certification les supprime, il n'est plus possible de les attaquer. Il est généralement conseillé de ne pas utiliser de modèles de certificats version 1, mais toujours des modèles définis par l'utilisateur, qui proviennent des modèles de certificats version 2 et 3 fournis.
La personne qui a découvert la faille a également un script fourni, Mais il y a encore plus simple :
"ExchangeUserSignature", "ExchangeUser", "CEPEncryption", "OfflineRouter", "IPSECIntermediateOffline", "SubCA", "CA", "WebServer", "EnrollmentAgentOffline" | % { if ( (Get-CATemplate).Name.Contains($_)) { Remove-CATemplate -Force }}
Empêcher la publication de modèles de certificats version 1 directement lors de l'installation de l'autorité de certification
Si l'on installe une autorité de certification Microsoft avec des paramètres par défaut, les modèles de certificats par défaut sont automatiquement publiés sur l'autorité de certification.
Ce comportement peut toutefois être corrigé en définissant les LoadDefaultTemplates Direktive zu „false“ in einer Konfigurationsdatei (capolicy.inf) doit être empêché. Une variante minimale d'un tel fichier pourrait se présenter comme suit :
[Version]
Signature="$Windows NT$"
[Certsrv_Server]
LoadDefaultTemplates=0
Le fichier doit être enregistré dans le répertoire C:\NWindows avec l'encodage ANSI / Windows-1252 (Latin-1, Europe de l'Ouest) avant de configurer le rôle d'autorité de certification.
Les données que j'ai utilisées et scripts d'installation publiés sur GitHub pour les organismes de certification Microsoft en tiennent compte en conséquence.
Suppression de l'extension de certificat „Application Policies“ des certificats émis
Par défaut, le module Windows Default Policy de l'autorité de certification est responsable de l'écriture de cette extension de certificat dans les certificats émis.
L'extension de certificat „Application Policies“ peut être désactivée sur l'autorité de certification à l'aide de la commande de ligne de commande suivante.
certutil -setreg policy\DisableExtensionList +1.3.6.1.4.1.311.21.10

Le service d'autorité de certification doit ensuite être redémarré pour que les modifications prennent effet.
Les certificats émis à partir de ce moment ne contiennent plus que l'extension „Extended Key Usage“, mais pas l'extension „Application Policies“.
Les données que j'ai utilisées et scripts d'installation publiés sur GitHub pour les organismes de certification Microsoft en tiennent compte en conséquence.
Autres
Essayer avec PSCertificateEnrollment
J'ai fait le PSCertifiateEnrollment Module PowerShell complété par l'extension Application Policies, de sorte que le scénario peut être facilement reproduit.
Import-Module PSCertificateEnrollment
$Csr = New-CertificateRequest -Upn "Administrator@domain.tld" -ApplicationPolicy ClientAuthentication
$Csr | Get-IssuedCertificate -ConfigString "CA-Name\Hostname" -CertificateTemplate "WebServer"
Un module de politique est-il utile ici ?
Oui et non.
L'erreur se situe dans Windows Default Module de politique, qui fait partie de la livraison des services de certificats Active Directory. Il serait également très simple d'intégrer une protection dans le Module de politique de TameMyCerts d'intégrer.
Toutefois, je pense que les contre-mesures disponibles avec les moyens du bord sont largement suffisantes pour rendre l'attaque inefficace. Même un patch ne peut pas sauver des autorités de certification mal configurées et mal sécurisées.
Il est toutefois judicieux de limiter autant que possible les champs de certificat utilisables ainsi que le format et l'étendue des identités pouvant être demandées pour les modèles de certificats hors ligne. Le module de politique de TameMyCerts pour les services Microsoft Active Directory permet d'y parvenir facilement..
Liens complémentaires :
- Comment le module de politique TameMyCerts pour Active Directory Certificate Services (ADCS) peut empêcher les attaques contre le vecteur d'attaque ESC1
- Principes de base : fichier de configuration pour l'autorité de certification (capolicy.inf)
- L'extension de certificat "Application Policies
- Description des générations de modèles de certificats
- Utilisations étendues des clés (Extended Key Usages) et politiques d'émission (Issuance Policies) fréquemment utilisées
- Modifications apportées à l'émission de certificats et à l'ouverture de session basée sur des certificats dans Active Directory par le correctif pour Windows Server du 10 mai 2022 (KB5014754)
Sources externes
- CVE 2024 49019 - Vulnérabilité d'élévation de privilèges des services de certificats Active Directory (Microsoft)
- EKUwu : Pas seulement un autre AD CSC ESC (Justin Bollinger / TrustedSec)
- Comprendre ESC15 : une nouvelle vulnérabilité d'escalade de privilèges dans Active Directory Certificate Services (ADCS) (Forestall)
- Vulnérabilité Microsoft ADCS - CVE-2024-49019 Escalade de privilège (PKI Solutions, Inc.)