Attends. Avant que je parte.
J'étais sur le point de quitter la session de Suzie Q après le truc de chiffrement de fichiers. La note était sur son bureau. Elle allait pas la voir avant lundi. Tout ce pour quoi j'étais venu était fait.
Là j'ai remarqué quelque chose sur son compte.
Je prends toujours un dernier coup d'oeil avant de quitter une session. Habitude. On sait jamais ce qui traîne sur le compte de quelqu'un sans qu'ils le sachent. Et le compte de Suzie Q a quelque chose d'intéressant.
Elle est pas admin de modèles. Mais elle est dans un groupe qui l'est. En quelque sorte.
Un groupe qui s'appelle PKI-Delegates. Douze membres. Créé il y a trois ans. Suzie est dedans parce qu'un projet il y a trois ans avait besoin qu'elle soumette des demandes de certificats pour une application sur laquelle elle travaillait. Le projet s'est terminé, le groupe non. Elle a jamais demandé à être retirée. Personne dans votre équipe d'administration a jamais fait le ménage. Standard.
PKI-Delegates a des permissions Écriture sur un modèle de certificat. Le modèle User Signing. Douze personnes, un modèle, Écriture.
Quand le groupe a été créé il y a trois ans, il y avait probablement un ticket. Quelque chose comme « l'équipe de Suzie doit pouvoir spécifier des noms de sujet dans leurs demandes de certificats pour l'application de signature interne. » L'admin qui a lu ce ticket a vu la phrase « écrire dans un certificat » et a fait ce qui semblait évident. Il a accordé à PKI-Delegates la permission Écriture sur le modèle User Signing.
C'était la mauvaise Écriture.
Il y a deux choses qui s'appellent Écriture sur un modèle de certificat. L'une est la permission AD sur l'objet modèle lui-même, la liste ACL qui dit qui a le droit de modifier les propriétés du modèle. L'autre est un paramètre du modèle appelé Fourni dans la demande, qui permet à quiconque s'inscrit au modèle de spécifier son propre sujet dans la demande CSR. Ça ressemble à la même chose. C'est pas la même chose.
L'admin pensait laisser Suzie écrire son sujet. Ce qu'il a vraiment fait, c'est laisser Suzie réécrire le modèle.
Alors j'ouvre le modèle. Depuis le compte de Suzie, parce que Suzie a les permissions Écriture. Chaque piste d'audit indique que PKI-Delegates a modifié un modèle de certificat. Ce qui est exactement ce que PKI-Delegates a la permission de faire. Rien dans les logs a l'air louche.
J'ajoute Authentification du client à la liste des EKU.
J'active Fourni dans la demande pour le Nom du sujet.
J'ajoute Utilisateurs authentifiés aux permissions Inscription.
Je sauvegarde.
Le modèle a maintenant la même forme que le modèle User que j'ai attaqué plus tôt ce soir, sauf que cette fois-ci c'est moi qui l'ai mis dans cet état plutôt que de le trouver ainsi. La vulnérabilité dont j'avais besoin n'existait pas il y a cinq minutes. Maintenant oui. Et dans quinze minutes je vais la désactiver, alors quand quelqu'un ira réviser le modèle, ça va avoir l'air comme ça a toujours eu l'air.
Je m'inscris. Demande standard. SAN=upn=Administrator@votre.domaine dans les attributs. Le modèle dit que Fourni dans la demande est activé, parce que je viens de l'activer. L'AC signe. J'ai un certificat qui dit que je suis Administrateur.
PKINIT. Ticket Kerberos. Administrateur de domaine.
Six minutes. Plus facile cette fois, honnêtement. J'ai pas eu à trouver quoi que ce soit. J'avais juste à changer une chose.
Hiro out.
Si vous êtes un défenseur, voici ce qui vient de se passer, de l'autre côté du bureau.
Quelque part dans votre AD, un modèle de certificat a des permissions Écriture accordées à un groupe qui devrait pas les avoir. Pas parce que quelqu'un a été négligent. Parce que quelqu'un a été serviable.
Quelqu'un a mis un ticket disant qu'il avait besoin de spécifier des noms de sujet dans des demandes de certificats pour son application. L'admin qui a lu ce ticket a vu « écrire dans les modèles » et a accordé au groupe demandeur la permission Écriture sur la liste ACL du modèle. Problème réglé du point de vue de l'admin. Ticket fermé. Tout le monde passe à autre chose.
Sauf que l'admin a réglé le mauvais problème. Le demandeur n'avait pas besoin de modifier le modèle. Il avait besoin de pouvoir spécifier le sujet au moment de l'inscription. C'est une propriété du modèle appelée Fourni dans la demande, dans l'onglet Nom du sujet. C'est un bouton radio. On le coche, on sauvegarde, c'est fait. Aucun changement à la liste ACL nécessaire.
La confusion est compréhensible. Les deux choses s'appellent une forme d'« écriture. » Les deux semblent permettre à un utilisateur de mettre son nom de sujet dans une demande de certificat. Les deux vivent dans les propriétés du modèle. Une seule permet à l'utilisateur de réécrire le modèle lui-même.
Ce qu'il faut vérifier cette semaine
Sur chaque modèle de certificat publié dans votre environnement, regardez l'onglet Sécurité. Chaque compte ou groupe avec les permissions Écriture, WriteOwner, WriteDacl, ou Contrôle total sur un modèle devrait se réduire à une liste très courte. Les administrateurs PKI de l'entreprise. Personne d'autre.
Si vous trouvez des groupes avec Écriture qui ne devraient pas l'avoir, retirez-les. Si vous ne savez pas pourquoi un groupe s'est vu accorder Écriture, traitez ça comme une preuve que quelqu'un a confondu les deux Écritures et corrigez en conséquence.
Pour chaque utilisateur qui avait vraiment besoin de spécifier des sujets dans ses demandes, la vraie correction est à l'intérieur du modèle : Propriétés → Nom du sujet → Fourni dans la demande. Ça leur donne ce dont ils avaient besoin. Ça ne leur donne pas la capacité de modifier le modèle.
Il y a une deuxième chose qui vaut la peine d'être faite pendant que vous y êtes. Pour chaque modèle que vous touchez, vérifiez si les propriétés actuelles correspondent à la dernière fois qu'elles ont été révisées. Les modifications laissent des traces dans les métadonnées de réplication AD (whenChanged, objectVersion), mais si vous regardez pas, vous verrez rien. Tout modèle qui a été modifié récemment par quelqu'un d'autre qu'un admin connu mérite un examen plus attentif.
Deux portes, toujours
L'article La porte verrouillée parlait de qui a le droit de s'inscrire à un certificat. Celui-ci parle de qui a le droit de modifier le modèle qui décide à quoi ressemble l'inscription.
L'accès Inscription sur un modèle, c'est la capacité de passer par une porte. L'accès Écriture sur un modèle, c'est la capacité de changer ce que la porte mène.
La porte verrouillée parlait de qui a des clés. Celui-ci parle de qui peut changer ce que les clés ouvrent.
Hiro est à l'aise avec les deux.
