A low-privileged Active Directory account is all it takes to forge a Domain Controller certificate — Microsoft patched it in July, and a working exploit just landed on GitHub.
On July 24, security researchers published a working exploit for CVE-2026-54121 — a flaw they've nicknamed Certighost — that lets any authenticated domain user, with no admin rights at all, forge a certificate that lets them impersonate a Windows Domain Controller. From there, an attacker can extract the krbtgt secret, the master key underpinning every Kerberos ticket in the domain, and effectively own the whole network. Microsoft patched the underlying bug in Active Directory Certificate Services on July 14. If your organization hasn't applied that update, this is the one to check before reading any further.
How Certighost actually works
The bug lives in a fallback mechanism AD CS uses during directory-object resolution, which researchers call a 'chase,' as detailed to Help Net Security. By default, Active Directory lets any domain user create a limited number of machine accounts — a setting called ms-DS-MachineAccountQuota, and most organizations never change the default of 10. An attacker uses that quota to create a machine account, then requests a certificate while supplying crafted attributes that cause the Certificate Authority to reach out to an attacker-controlled host for identity data. Because the attacker controls that host — running rogue SMB, LSA and LDAP services to answer the CA's query — they can feed it the identity of a real Domain Controller. The CA issues a certificate binding that stolen identity to the attacker's machine account, and that certificate authenticates via PKINIT as if it were the actual DC.
How Certighost went from private report to public exploit
May 14, 2026
Researchers Aniq Fakhrul and Muhammad Ali privately report the flaw to Microsoft.
July 14, 2026
Microsoft patches CVE-2026-54121 as part of its July Patch Tuesday release.
July 24, 2026
Full technical details and a working exploit tool, certighost.py, go public on GitHub.
July 27, 2026
Security outlets widely report the PoC, pushing unpatched organizations to act.
Why this one deserves more attention than a routine AD CS bug
Here's the priority list researchers and Microsoft recommend, cross-checked against the published PoC writeup:
Confirm the July 14, 2026 cumulative update is installed on every Domain Controller and AD CS server — don't assume it rolled out automatically.
Check ms-DS-MachineAccountQuota across your domain; if it's still the default value of 10, lower it to 0 unless you have a specific reason not to.
If you can't patch immediately, apply the registry workaround researchers published (certutil -setreg policy\EditFlags -EDITF_ENABLECHASECLIENTDC, then restart the CertSvc service) as a stopgap, not a fix.
Audit AD CS logs for certificate requests tied to newly created machine accounts, especially ones requesting Domain-Controller-equivalent identities.
Certighost, answered
What does CVE-2026-54121 actually let an attacker do?
An authenticated domain user with no admin rights can forge a certificate that lets them authenticate as a Domain Controller, then extract the krbtgt secret and take over the entire Active Directory domain.
Has Microsoft patched this?
Yes. Microsoft fixed the underlying AD CS flaw in the July 14, 2026 Patch Tuesday release, about two months after researchers reported it privately.
Is there a public exploit available?
Yes. Researchers released a working proof-of-concept tool called certighost.py on GitHub on July 24, 2026, along with full technical writeups.
What's the quickest thing I can check today?
Confirm the July 14 update is installed on every Domain Controller and AD CS server, and check whether ms-DS-MachineAccountQuota is still set to its default of 10.
Patch first, audit second — in that order, since the registry workaround is a stopgap researchers themselves don't trust as a real fix. If your organization runs AD CS anywhere and you haven't confirmed the July update landed, that's this week's actual priority, not next sprint's.