CVE-2026-14440
Executive Summary
CVE-2026-14440 describes a design-level vulnerability in Cloudflare's Universal SSL feature. The core issue is that Cloudflare's authoritative DNS servers automatically serve a permissive CAA (Certification Authority Authorization) RRset for zones with Universal SSL enabled, which supersedes any customer-configured CAA records. When a customer attempts to enforce stricter CAA policies using RFC 8657 parameters (accounturi or validationmethods), the Certificate Authority (CA) does not observe these parameters because the served RRset is evaluated under RFC 8659 without the binding protections. This allows an attacker with an ACME account at a permitted CA to potentially obtain a browser-trusted TLS certificate for the affected domain, enabling man-in-the-middle (MITM) attacks.
The vulnerability is non-trivial to exploit, requiring the attacker to satisfy domain control validation across multiple geographically distinct network perspectives (Multi-Perspective Issuance Corroboration) and to hold an ACME account at one of the CAs in the served RRset. Cloudflare's anycast infrastructure further raises the bar against single-vantage-point BGP hijacks. However, the design flaw remains, and any misissuance would be visible via Certificate Transparency (CT) logs.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not related to a software package or library but to a cloud service feature (Cloudflare Universal SSL). No supply chain or package security implications apply.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
- Base Score: 7.4 (High)
- Attack Vector: Network (AV:N)
- Attack Complexity: High (AC:H) – requires ACME account, multi-perspective validation bypass, and BGP hijack or equivalent.
- Privileges Required: None (PR:N)
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: High (C:H) – attacker can decrypt traffic via MITM.
- Integrity Impact: High (I:H) – attacker can impersonate the domain.
- Availability Impact: None (A:N)
Threat Level: High. While exploitation is complex, the impact is severe (full TLS certificate misissuance). The vulnerability is unpatched, and the only mitigation is disabling Universal SSL, which may break functionality for many customers.
Deep Dive & Mechanics
The vulnerability stems from a conflict between Cloudflare's automatic CAA management and RFC 8657's account-binding and validation-method-binding protections.
Universal SSL CAA Management: When a customer enables Universal SSL, Cloudflare automatically manages the CAA RRset for the zone. This RRset is permissive, e.g.,
issue "letsencrypt.org"without parameters. Cloudflare's authoritative DNS serves this auto-managed RRset at query time, overriding any customer-configured CAA records.RFC 8657 Parameters: Customers can publish stricter CAA records using
accounturi(binding to a specific ACME account) orvalidationmethods(binding to a specific validation method). For example:issue "letsencrypt.org; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/123456".RFC 8659 Evaluation: When a CA evaluates the CAA RRset, it follows RFC 8659. However, the auto-managed RRset served by Cloudflare does not include the RFC 8657 parameters. The CA sees only the permissive
issuetag without bindings, so it ignores the customer's stricter records.Exploitation Path: An attacker with an ACME account at a permitted CA (e.g., Let's Encrypt) can request a certificate for the victim domain. The CA queries Cloudflare's DNS for the CAA RRset, receives the permissive record, and proceeds with domain validation. If the attacker can satisfy domain control validation (e.g., via BGP hijack to intercept ACME HTTP challenges), the CA issues a certificate.
Multi-Perspective Issuance Corroboration (MPIC): Modern CAs check domain validation from multiple network perspectives. Cloudflare's anycast prefixes are announced from hundreds of locations, making it difficult for an attacker to hijack all perspectives simultaneously. This raises the exploitation bar but does not eliminate the design flaw.
Vulnerable vs. Patched Code
This is not a code-level vulnerability but a design flaw in Cloudflare's service. There is no patched code to compare. The "vulnerable" state is any Cloudflare zone with Universal SSL enabled. The "patched" state would require Cloudflare to either:
- Allow customers to opt out of automatic CAA management while keeping Universal SSL.
- Properly merge customer-configured RFC 8657 parameters into the auto-managed RRset.
Currently, no patch exists. The only workaround is disabling Universal SSL.
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- An ACME account at a CA listed in the permissive CAA RRset (e.g., Let's Encrypt).
- Ability to perform a BGP hijack or otherwise intercept HTTP-01 challenges for the victim domain.
- Knowledge of the victim's Cloudflare zone configuration.
Steps:
- Reconnaissance: Identify Cloudflare zones using Universal SSL. Use Shodan dorks or DNS queries to find domains with Cloudflare nameservers.
- CAA Check: Query the victim's CAA records using
dig caa victim.com. If the response shows a permissive record (e.g.,issue "letsencrypt.org"), the zone is vulnerable. - BGP Hijack: Announce a more specific BGP prefix for the victim's IP range to intercept traffic. This is illegal without authorization; use a lab environment.
- ACME Challenge: Use an ACME client (e.g., Certbot) to request a certificate for the victim domain. The CA will query Cloudflare's DNS for CAA and receive the permissive record.
- Domain Validation: Serve the ACME HTTP-01 challenge token on the hijacked IP. The CA validates from multiple perspectives; ensure all perspectives see the token (e.g., by hijacking multiple prefixes).
- Certificate Issuance: If validation passes, the CA issues a certificate. The attacker can now perform MITM attacks.
Lab Setup:
- Use a controlled environment with BGP-capable routers (e.g., using Docker with Bird or FRR).
- Set up a Cloudflare zone with Universal SSL enabled.
- Use a test CA (e.g., Let's Encrypt staging) to avoid real certificate issuance.
Blue Team (Defense & Detection)
Detection:
- Monitor Certificate Transparency logs for unexpected certificates issued for your domains.
- Use CAA record monitoring to detect changes or discrepancies.
- Implement DNS query logging to detect unusual CAA queries from unknown CAs.
Prevention:
- Disable Universal SSL on zones requiring strict CAA enforcement.
- Use Cloudflare's "Full (strict)" SSL mode with custom certificates instead of Universal SSL.
- Implement DNSSEC to prevent DNS spoofing.
Indicators of Compromise (IOCs)
- DNS CAA Record Anomalies: CAA records served by Cloudflare that do not match customer-configured records.
- Unexpected TLS Certificates: Certificates in CT logs for your domain issued by a CA you did not authorize.
- BGP Hijack Events: Unusual BGP announcements for your IP prefixes.
- ACME Challenge Logs: HTTP-01 challenge requests from unexpected IPs or CAs.
Detection Engineering
YARA Rule
rule CVE_2026_14440_CAA_Anomaly {
meta:
description = "Detects CAA records that may indicate Cloudflare Universal SSL override"
author = "Valters IT"
date = "2026-01-01"
reference = "CVE-2026-14440"
strings:
$caa_permissive = /issue\s+"[^"]+"/ nocase
$caa_restrictive = /issue\s+"[^"]+;\s*accounturi\s*=/ nocase
condition:
$caa_permissive and not $caa_restrictive
}
Sigma Rule
title: Cloudflare Universal SSL CAA Override Detection
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects DNS CAA queries that may indicate exploitation of CVE-2026-14440
author: Valters IT
date: 2026-01-01
logsource:
category: dns
product: windows
service: dns-server
detection:
selection:
QueryType: "CAA"
Response: "issue \"letsencrypt.org\""
condition: selection
falsepositives:
- Legitimate Cloudflare Universal SSL zones
level: medium
Suricata Rule
alert dns any any -> any any (msg:"CVE-2026-14440 - Cloudflare Universal SSL CAA Override"; dns.query; content:"|00 00|"; dns.rrname; content:"|00 00|"; dns.rrtype; content:"|00 00|"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Mitigation:
- Disable Universal SSL on zones that require strict RFC 8657 CAA enforcement. This is the only currently available workaround.
- Use Cloudflare's "Full (strict)" SSL mode with a custom certificate uploaded to Cloudflare.
Long-Term Fix:
- Cloudflare must update Universal SSL to respect customer-configured CAA records with RFC 8657 parameters. This could involve merging the customer's records into the auto-managed RRset or allowing customers to disable automatic CAA management while keeping Universal SSL.
Detection Controls:
- Implement Certificate Transparency monitoring (e.g., using certspotter or Facebook's CT monitor).
- Regularly audit CAA records using external DNS checks.
- Monitor BGP announcements for your IP prefixes.
Valters IT Signature: This report was prepared by Valters IT, an elite DevSecOps and Cyber Threat Intelligence team. For further analysis or remediation assistance, contact Valters IT.