Elementrica
03Fallstudien04Referenzen05Unternehmen06Aktuelles07Kontakt
PLENDE

Certighost (CVE-2026-54121): Die Zertifizierungsstelle glaubte dem Angreifer aufs Wort

ElementricaElementrica7 Min.
Certighost (CVE-2026-54121): Die Zertifizierungsstelle glaubte dem Angreifer aufs Wort

Es gibt einen Moment in einem internen Test, in dem Sie aufhören, nach Schwachstellen zu suchen, und anfangen, nach Vertrauen zu suchen. Wer wem ohne Prüfung glaubt. Certighost ist die Lehrbuchantwort auf diese Frage: Eine Zertifizierungsstelle fragte einen fremden Host, wer der Domänencontroller sei, und stellte auf Basis der Antwort ein Zertifikat aus.

Am 24. Juli 2026 veröffentlichten die Forscher H0j3n und Aniq Fakhrul eine Analyse zusammen mit einem funktionierenden PoC. Microsoft schloss den Fehler am 14. Juli und bewertete ihn mit 8,8 als Autorisierungsfehler. Bislang gibt es keine öffentlichen Berichte über eine Ausnutzung in freier Wildbahn. Es gibt aber ein Skript, das den ganzen Weg von einem gewöhnlichen Domänenbenutzerkonto bis zum krbtgt-Geheimnis geht.

Die Branche hat der Schwachstelle wieder einen Namen und ein Logo gegeben. Ich habe nichts dagegen, „Certighost“ merkt man sich leichter als CVE-2026-54121, und die meisten von uns werden ihn ohnehin als „den mit chase“ ablegen.

Worin der Fehler bestand

AD CS stellt Zertifikate aus, und ein Zertifikat in einer Domäne wirkt wie ein signierter Identitätsnachweis. Sie können es dem KDC über PKINIT vorlegen und ein Kerberos-Ticket als derjenige erhalten, der darin eingetragen ist.

Während der Bearbeitung eines Antrags kann die CA einen anderen Domänencontroller nach einem Verzeichnisobjekt fragen. Dieser Pfad heißt chase, und zwei Attribute des Antrags steuern ihn. Das Attribut cdc gibt den Host an, mit dem sich die CA verbinden soll. Das Attribut rmd gibt das Objekt an, nach dem sie dort suchen soll. Beide Werte liefert derjenige, der den Antrag stellt.

Vor dem Juli-Patch verband sich die CA mit der angegebenen Adresse über SMB und LDAP, fragte nach dem genannten Objekt und baute daraus das Zertifikat. Sie prüfte vorher nicht, ob auf der anderen Seite tatsächlich ein Domänencontroller steht.

Der Rest ist mechanisch. Der Angreifer stellt eigene LDAP- und LSA-Dienste bereit, verweist in cdc darauf, trägt in rmd den DNS-Namen des echten Domänencontrollers ein und schickt der CA dessen objectSid und dNSHostName. Die Authentifizierung unterwegs gelingt, weil der Angreifer im Rahmen von ms-DS-MachineAccountQuota ein Computerkonto anlegt und seine vorgeschobenen Dienste die Anfrage der CA an den echten Domänencontroller weiterreichen. Aus Sicht der CA antwortet auf der anderen Seite ein gültiger Domänen-Principal, also wird das Zertifikat mit der Identität des Domänencontrollers ausgestellt.

Danach geht es geradeaus: PKINIT mit diesem Zertifikat, ein Kerberos-Ticket als Domänencontroller, Replikationsrechte, DCSync, das krbtgt-Geheimnis. In der Praxis heißt das ein doppelter krbtgt-Reset, ein Reaktionsteam mitten in der Nacht und eine Frage der Geschäftsleitung, wie lange dieser Zustand schon andauerte. Diese Frage bleibt meist ohne Antwort, weil niemand die Logs gesammelt hat, die sie liefern würden.

Das Juli-Update ergänzt eine Prüfung. Bevor die CA dem Wert cdc folgt, prüft sie im Verzeichnis, ob der angegebene Name zu einem Computerobjekt mit dem Flag SERVER_TRUST_ACCOUNT (8192) passt, weist literale IP-Adressen und Zeichen ab, mit denen sich der LDAP-Filter manipulieren ließe, und vergleicht nach dem Auflösen des Objekts zusätzlich die SID.

Unsere Beobachtungen

Das ist kein weiteres ESC. Die letzten Jahre haben uns gelehrt, AD CS über Nummern zu betrachten: ESC1, ESC4, ESC8 und so weiter bis in den zweistelligen Bereich. Sie haben eines gemeinsam. Es sind Konfigurationsfehler, also beheben Sie sie über die Konfiguration: eine Vorlage, ein Flag, eine Berechtigung, das Abschalten von Web Enrollment.

Hier gab es nichts zu beheben. Die Forscher arbeiteten auf der Standardvorlage Machine, mit der Standard-Zugriffsliste und dem Standardlimit für Computerkonten. Das ist kein Konfigurationsfehler. Das ist ein Fehler im Code von certpdef.dll.

Die Folge ist unbequem für alle, die AD CS anhand einer Checkliste prüfen. In dieser Umgebung würde ein solches Audit „sauber“ melden.

Der Patch ist installiert, der Pfad nicht zwangsläufig geschlossen. In der Juli-Version sitzt die neue Prüfung hinter einem Servicing-Flag (Feature_3185813818), und der alte Zweig ist weiterhin im Code und läuft, wenn das Flag nicht aktiv ist.

Ich habe keine belastbaren Daten dazu, in welchen Umgebungen dieses Flag standardmäßig aktiv ist, und ich rate nicht. Die praktische Lehre ist einfacher: Prüfen Sie es an Ihrer eigenen Konfiguration, statt eine KB in einem WSUS-Bericht abzuhaken. Der Unterschied zwischen „das Update ist installiert“ und „der Pfad ist tatsächlich geschlossen“ kann ein ganzes Kapitel des Berichts füllen.

Der CA-Server ist fast nie im Testumfang. Wir bekommen ein internes Netz und eine Liste kritischer Systeme. Der Rechner mit der CA-Rolle steht selten auf dieser Liste, weil er keine personenbezogenen Daten verarbeitet, keine schöne Oberfläche hat und niemand ihn in einem KPI führt. Meist hat ihn jemand für ein Projekt aufgesetzt, vor ein paar Jahren, und seitdem ist die Maschine einfach da.

Diese Maschine stellt Identitäten für die gesamte Domäne aus. Segmentierung, EDR überall, MFA am VPN, vierteljährliche Berechtigungsprüfungen. Und ein PKI-Dienst, der einen fremden Host fragt, wer der Domänencontroller ist…

Wenn Ihr CA-Server nicht demselben Patch- und Monitoring-Regime unterliegt wie die Domänencontroller, haben Sie in der Architektur eine Vertrauensannahme, die nie jemand aufgeschrieben hat.

ms-DS-MachineAccountQuota erneut. Derselbe Parameter kehrt seit Jahren in einem Eskalationspfad nach dem anderen wieder: RBCD, noPac, jetzt Certighost. Der Standardwert 10 bedeutet, dass jeder Domänenbenutzer sich einen gültigen Principal anlegen kann.

Das Limit auf null zu setzen behebt Certighost nicht, denn das Skript kann ein bestehendes Computerkonto verwenden. Es nimmt dem Angreifer aber einen kostenlosen Baustein, nach dem er in den meisten Ketten greift, die wir in internen Tests sehen. Verlagern Sie das Einbinden von Maschinen in eine delegierte Gruppe, so wie es von Anfang an sein sollte.

Erkennung ist billig, nur sammelt sie niemand. Ein CA-Server, der eine ausgehende Verbindung zu den Ports 389 und 445 zu einem Host aufbaut, der kein Domänencontroller ist, ist eine Anomalie, die in netflow oder an der Firewall sichtbar wird, sofern jemand hinsieht.

Dazu kommen Ereignisse, die Sie ohnehin haben: 4741 für ein durch ein Benutzerkonto erstelltes Computerkonto sowie 4886 und 4887 für Zertifikatsanträge und ausgestellte Zertifikate auf der CA. Für sich genommen bedeuten sie nichts. Zeitlich aneinandergereiht ergeben sie ein sehr gut lesbares Muster.

Was in dieser Woche zu tun ist

  • Installieren Sie die Juli-Updates auf jedem Server mit der CA-Rolle, nicht nur auf den Domänencontrollern.
  • Wenn der Patch warten muss, nennen die Forscher eine Übergangslösung: das chase-Flag mit certutil -setreg policy\EditFlags -EDITF_ENABLECHASECLIENTDC leeren und den Dienst CertSvc neu starten. Prüfen Sie vorher, ob Sie domänenübergreifende Registrierung nutzen, denn genau diese Funktion schalten Sie damit ab.
  • Verschieben Sie den CA-Server aus der Kategorie „Anwendungsserver“ in dieselbe Klasse wie die Domänencontroller: derselbe Patch-Zyklus, dasselbe Monitoring, dieselbe Liste administrativer Zugriffe.
  • Setzen Sie ms-DS-MachineAccountQuota auf null und geben Sie das Einbinden von Maschinen an eine delegierte Gruppe.
  • Aktivieren Sie auf der CA die Protokollierung von Zertifikatsanträgen und senden Sie diese Ereignisse dorthin, wo sie tatsächlich jemand ansieht.

Zum Schluss eine Frage

Eines macht mich neugierig. Wie viele von Ihnen wussten, dass chase überhaupt existiert, bevor dieser CVE auftauchte?

Das ist zugleich das beste Argument dafür, einen internen Test durchzuführen und nicht nur einen Scan. Ein Scanner prüft die Version und zieht weiter. Ein Mensch fragt, ob der Pfad in Ihrer Konfiguration tatsächlich geschlossen ist.

Ist Ihr CA-Server im Umfang eines internen Tests?

Vereinbaren Sie eine kostenlose Beratung: 30 Minuten, auf den Punkt, unverbindlich. Wir zeigen, wie ein interner Test nachvollzieht, wohin ein einziges gewöhnliches Konto in der Domäne wirklich führt und ob Pfade wie chase bei Ihnen tatsächlich geschlossen sind.

Nächster
LegacyHive: Ein normaler Nutzer mountet das Hive des Admins, und einen Patch gibt es nicht