Feb 10, 2026·6 min read·14 visits
Windows Kerberos is still speaking RC4, a broken cipher from the 80s. Local attackers can force the KDC to issue RC4-encrypted tickets, allowing for easy offline cracking (Kerberoasting) and information disclosure. Microsoft has finally added registry enforcement to kill it.
CVE-2026-20833 exposes a fundamental weakness in how Windows handles legacy cryptography within the Kerberos authentication protocol. Despite years of warnings, the Key Distribution Center (KDC) continued to entertain requests for RC4-HMAC encryption, a cipher from 1987 that is cryptographically broken. This vulnerability allows local attackers to downgrade authentication exchanges to this weak cipher, facilitating trivial brute-force attacks and information disclosure. It is less of a 'bug' in the code and more of a 'bug' in decision-making that prioritized backward compatibility over security.
It is the year 2026. We are on the verge of quantum computing, AI writes our poetry, and yet, deep inside the belly of the Windows operating system, a cryptographic zombie from 1987 is still shambling around. I am talking, of course, about RC4 (Rivest Cipher 4).
CVE-2026-20833 isn't a complex heap overflow or a race condition in the kernel. It is a testament to the persistent nightmare of backward compatibility. The vulnerability lies in the Windows Kerberos Key Distribution Center (KDC). Despite AES being the standard for over a decade, the KDC has remained frustratingly polite. If a client or a service account asked for a ticket encrypted with RC4-HMAC (etype 23), the KDC would oblige.
Why does this matter? Because RC4 is effectively 'cryptographic cheese'. It has known biases in its keystream output. For a hacker, seeing RC4 in a Kerberos exchange is like finding a safe with the combination written on a sticky note attached to the door. This vulnerability allows an attacker to explicitly request this weak encryption to peel back the layers of Kerberos security.
The root cause here is CWE-327: Use of a Broken or Risky Cryptographic Algorithm. In a secure Kerberos environment, the KDC should negotiate the strongest possible encryption (AES-256). However, the Windows KDC logic contained a fallback mechanism that was too permissive.
When a user requests a Ticket-Granting Service (TGS) ticket, the encryption type used for the ticket is determined by the msDS-SupportedEncryptionTypes attribute of the target service account. If that attribute allows RC4, or if it isn't set (defaulting to legacy behavior in older domains), the KDC will happily wrap the session key and the ticket in RC4-HMAC.
The flaw is that a local attacker doesn't need to break into the KDC to trigger this. They simply need to request a ticket for a service that supports RC4. Even if the domain generally prefers AES, the mere presence of RC4 support allows the attacker to 'downgrade' the security of that specific transaction. The KDC failed to enforce a 'hard floor' on crypto quality, effectively allowing clients to dictate their own insecurity.
Since Windows is closed-source, we don't have the luxury of a GitHub commit link. However, based on the behavior analysis and the patch (KB5073381), we can reconstruct the logic flow that led to this mess. The vulnerability exists in the ticket issuance logic within kdcsvc.dll.
The Vulnerable Logic (Pseudo-code):
// Pre-patch: The KDC is too accommodating
EncType selectedType = GetBestCommonEtype(clientSupported, serviceSupported);
// If the service allows RC4 (23), we use it. No questions asked.
if (selectedType == RC4_HMAC) {
Ticket tgs = GenerateTicket();
EncryptTicket(tgs, RC4_HMAC, serviceKey);
return tgs; // Vulnerable: KDC issues weak crypto
}The Patched Logic:
The fix introduces a check against a global enforcement policy (registry keys) before agreeing to use RC4. It's a bouncer at the door checking IDs.
// Post-patch: The KDC checks the new enforcement policy
EncType selectedType = GetBestCommonEtype(clientSupported, serviceSupported);
if (selectedType == RC4_HMAC) {
// Check if RC4 is explicitly banned via Registry or Group Policy
if (IsRC4DisabledGlobally() || !IsRC4AllowedForService(serviceAccount)) {
// Log Event ID 33 (Audit) or Block
LogError("RC4 request denied due to security policy.");
return KRB_AP_ERR_MODIFIED; // Access Denied
}
// Only proceed if we are in 'Audit' mode or legacy mode
EncryptTicket(tgs, RC4_HMAC, serviceKey);
return tgs;
}The patch effectively creates a 'kill switch' for RC4, allowing administrators to force the KDC to reject these requests even if the service account is misconfigured to support them.
Exploiting this is trivially easy because it relies on standard protocol features. We are essentially doing Kerberoasting, but we are guaranteeing that the hash we get back is the weaker RC4-HMAC version, which is exponentially faster to crack than AES.
The Attack Chain:
msDS-SupportedEncryptionTypes is missing or includes 0x4 (RC4).Rubeus.exe kerberoast /etype:rc4 /nowraphashcat -m 13100 and chew through millions of passwords per second.This bypasses the safety net of AES. Even if the password is reasonably strong, the speed at which RC4 can be brute-forced (compared to the computational cost of AES derivation) significantly lowers the bar for a successful compromise.
The impact here is High Confidentiality Loss, but let's translate that into English. If an attacker can force RC4 usage, they can recover the plaintext password of service accounts with frightening speed.
Once a service account is compromised:
sysadmin. If it's a domain controller service, it's Game Over.This vulnerability turns the 'secure' Kerberos protocol into a mechanism for credential distribution to attackers.
Microsoft's January 2026 update (KB5073381) provides the gun to shoot the zombie, but—crucially—it does not pull the trigger automatically. You have to do it yourself.
Remediation Steps:
KdcAuditRc4Usage registry key. Watch your System Event Log for Event ID 33. This will tell you which legacy applications are still trying to use RC4. If you block them immediately, you will break production.KdcForceAES).
HKLM\System\CurrentControlSet\Services\Kdc\KdcForceAES = 1msDS-SupportedEncryptionTypes on all user and computer objects to ensure only AES-128 and AES-256 are flagged.If you don't set the registry keys, the patch does nothing but sit there looking pretty. You must actively configure the KDC to reject RC4.
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N| Product | Affected Versions | Fixed Version |
|---|---|---|
Windows Server 2025 Microsoft | < 10.0.26100.32230 | 10.0.26100.32230 |
Windows Server 2022 Microsoft | < 10.0.20348.4648 | 10.0.20348.4648 |
Windows Server 2019 Microsoft | < 10.0.17763.8276 | 10.0.17763.8276 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-327 |
| Attack Vector | Local (AV:L) |
| CVSS Score | 5.5 (Medium) |
| EPSS Score | 0.02% |
| Impact | High Confidentiality |
| Encryption Type | RC4-HMAC (etype 23) |
| Fix Type | Registry Enforcement |
The use of a broken or risky cryptographic algorithm is an unnecessary risk that may result in the exposure of sensitive information.