CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-26017

CVE-2026-26017: CoreDNS ACL Bypass via TOCTOU in Plugin Chain

Amit Schendel
Amit Schendel
Senior Security Researcher

Mar 6, 2026·5 min read·52 visits

Executive Summary (TL;DR)

CoreDNS < 1.14.2 evaluates ACLs before rewriting query names. Attackers can query an allowed domain that rewrites to a restricted internal domain, bypassing security controls.

A logical vulnerability in CoreDNS versions prior to 1.14.2 allows attackers to bypass access control lists (ACLs) via a Time-of-Check Time-of-Use (TOCTOU) flaw. The default plugin execution order processes security enforcement plugins (such as `acl`, `firewall`, and `opa`) before the `rewrite` plugin. Consequently, an attacker can query a permitted domain name that is subsequently rewritten to a restricted internal domain, bypassing the intended security policies and resolving the restricted target.

Vulnerability Overview

CoreDNS is a modular DNS server widely used in cloud-native environments, particularly Kubernetes, where it serves as the cluster DNS provider. Its architecture relies on a chain of plugins (middleware) to process DNS queries sequentially. Each plugin inspects, modifies, or answers the query before passing it to the next plugin in the chain. The execution order is statically defined at compile time via a plugin.cfg file.

In versions prior to 1.14.2, the default configuration placed security enforcement plugins—specifically acl, firewall, and opa—earlier in the execution chain than the rewrite plugin. This ordering created a logical flaw: the authorization decision was based on the initial query name (Time-of-Check), while the actual resolution occurred on a modified query name (Time-of-Use) after the rewrite plugin had altered the request.

This discrepancy allows an attacker to exploit the rewrite rules to access restricted records. By crafting a DNS query for a domain that is permitted by the ACL but explicitly rewritten to a restricted domain (e.g., an internal service or sensitive infrastructure), the attacker can successfully resolve the restricted target, effectively bypassing the access control layer.

Root Cause Analysis

The root cause is a Time-of-Check Time-of-Use (TOCTOU) race condition (CWE-367) inherent in the static plugin ordering defined in plugin.cfg. In CoreDNS, the order of lines in plugin.cfg dictates the order of Handler registration in the compiled binary. The vulnerable configuration prioritized acl over rewrite.

The processing pipeline functioned as follows:

  1. Authorization (Check): The acl plugin receives the dns.Msg structure. It inspects the Question section (QNAME) against its configured rules. If the QNAME matches an allow list (or fails to match a block list), the plugin calls next.ServeDNS() to pass control down the chain.
  2. Mutation (Use): The rewrite plugin receives the request. It matches the QNAME against rewrite rules. If a match is found, it modifies the QNAME in place within the dns.Msg structure (e.g., changing public-proxy.example.com to admin-panel.internal).
  3. Resolution: Backend plugins (like kubernetes, etcd, or file) receive the modified request. They resolve the new QNAME (admin-panel.internal) and return the IP address.

Because the acl plugin does not re-verify the request after it returns from the chain (or before the backend resolves it), the security context established at step 1 is invalid for the parameters used at step 3. The system effectively authorizes the alias but resolves the target.

Configuration Analysis

The vulnerability is not a syntax error in Go code but a semantic error in the build configuration plugin.cfg. Below is a conceptual comparison of the vulnerable vs. fixed execution order.

Vulnerable Configuration (Conceptual)

The acl plugin runs before rewrite. The query passes the security check before it is transformed.

# plugin.cfg (Vulnerable)
 
# Security plugins execute first
acl:acl
firewall:firewall
 
# ... intermediary plugins ...
 
# Mutation plugins execute later
rewrite:rewrite
 
# Backend resolution
kubernetes:kubernetes
file:file

Fixed Configuration (CoreDNS v1.14.2)

The fix involves moving rewrite (and other normalization plugins like template) before the security plugins. This ensures that the ACL checks are applied to the final, normalized state of the query.

# plugin.cfg (Fixed)
 
# Mutation/Normalization executes first
rewrite:rewrite
 
# Security plugins execute on the transformed query
acl:acl
firewall:firewall
 
# Backend resolution
kubernetes:kubernetes
file:file

This reordering ensures that if rewrite changes public.com to private.internal, the acl plugin sees private.internal and correctly blocks the request based on the policy for the internal domain.

Exploitation Scenario

An attacker can exploit this vulnerability in environments where CoreDNS is configured with both ACLs (to restrict access to internal names) and Rewrites (to map external aliases to internal names). Consider a Kubernetes cluster where *.internal is restricted to authorized pods, but proxy.example.com is publicly resolvable and rewrites to db.internal.

Attack Steps:

  1. Reconnaissance: The attacker identifies a rewrite rule. This might be known via open-source configuration repositories, leaked config maps, or inferred by observing DNS behavior.
  2. Crafting the Query: The attacker sends a standard DNS query for the allowed alias: DIG @target-server proxy.example.com
  3. Bypass Execution:
    • ACL Check: CoreDNS checks proxy.example.com. The ACL allows this public domain. Code: Allowed.
    • Rewrite: CoreDNS transforms proxy.example.com → db.internal.
    • Resolution: The kubernetes plugin looks up db.internal and finds the ClusterIP 10.96.0.50.
  4. Result: The attacker receives the IP address of the restricted database service, bypassing the intended network segmentation.

Impact Assessment

The impact of this vulnerability is significant in multi-tenant or segmented network environments utilizing CoreDNS for service discovery.

Security Implications:

  • Network Reconnaissance: Unprivileged users can enumerate internal infrastructure layout and service IP addresses.
  • Access Control Bypass: In environments using DNS as a control plane (e.g., preventing access to admin.* services), this bypass renders those controls ineffective against aliased domains.
  • Cloud Native Risk: In Kubernetes, this can facilitate lateral movement. If an attacker compromises a pod with limited DNS permissions, they can leverage this flaw to resolve addresses for sensitive services (like the API server or internal databases) that should be hidden from that pod's namespace.

Severity Metrics:

  • CVSS v3.1: 7.7 (High). The vulnerability is network-accessible (AV:N), low complexity (AC:L), and requires low privileges (PR:L). The scope is changed (S:C) because the DNS server facilitates access to other components in the infrastructure.
  • Confidentiality: High. The flaw directly leaks the existence and location of restricted resources.

Fix Analysis (1)

Technical Appendix

CVSS Score
7.7/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N

Affected Systems

CoreDNS < 1.14.2Kubernetes clusters using default CoreDNS images < 1.14.2Custom DNS deployments using `rewrite` and `acl` plugins together

Affected Versions Detail

Product
Affected Versions
Fixed Version
CoreDNS
CoreDNS
< 1.14.21.14.2
AttributeDetail
CWE IDCWE-367 (TOCTOU)
Attack VectorNetwork
CVSS v3.17.7 (High)
ImpactACL Bypass / Information Disclosure
Exploit StatusNo Active Exploitation
Fixed Version1.14.2

MITRE ATT&CK Mapping

T1548Abuse Elevation Control Mechanism
Privilege Escalation
T1071.004Application Layer Protocol: DNS
Command and Control
T1583.001Acquire Infrastructure: Domains
Resource Development
CWE-367
Time-of-check Time-of-use (TOCTOU) Race Condition

Vulnerability Timeline

Vulnerability Disclosed (GHSA-c9v3-4pv7-87pr)
2026-03-06
CoreDNS v1.14.2 Released (Patch)
2026-03-06

References & Sources

  • [1]GitHub Advisory GHSA-c9v3-4pv7-87pr
  • [2]CoreDNS v1.14.2 Release Notes
  • [3]NVD CVE-2026-26017

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 9 hours ago•GHSA-7PPR-R889-MCF2
7.5

GHSA-7PPR-R889-MCF2: Unbounded WebSocket Message Aggregation in http4s-blaze-server leads to Denial of Service

An uncontrolled resource consumption vulnerability exists in the Scala-based http4s-blaze-server package of the http4s/blaze library. The vulnerability allows remote, unauthenticated attackers to cause an Out of Memory Error (OOM) and JVM crash by streaming a continuous sequence of small or empty WebSocket continuation frames with the FIN bit set to 0. This bypasses typical payload size checks because of the JVM's per-object allocation overhead, leading to rapid heap exhaustion with minimal network bandwidth.

Alon Barad
Alon Barad
6 views•5 min read
•about 10 hours ago•GHSA-95CV-R8X4-VH75
7.6

GHSA-95cv-r8x4-vh75: Path Traversal Vulnerability in OpenList Batch Rename Handler

A critical path traversal vulnerability has been identified in the OpenList Go-based backend package. The vulnerability exists within the batch rename handler because the application does not validate the source filename parameter before constructing filesystems paths. This omission allows authenticated users to escape their designated directory and rename files in sibling paths.

Amit Schendel
Amit Schendel
7 views•7 min read
•about 11 hours ago•GHSA-P6PH-3JX2-3337
4.3

GHSA-P6PH-3JX2-3337: Horizontal Privilege Escalation and Metadata Information Disclosure via Bleve Search in OpenList

OpenList version 4.2.3 and prior is vulnerable to an authorization bypass and metadata leakage. When configured with the Bleve search engine backend, OpenList fails to perform separator-aware path matching when validating tenant containment. This allows authenticated users to access sibling directories sharing similar name prefixes. Furthermore, the search backend returns unfiltered global result counts, leaking existence verification data of unauthorized files via side-channel analysis.

Amit Schendel
Amit Schendel
7 views•5 min read
•about 12 hours ago•GHSA-86CX-WWF4-PHQ4
6.5

GHSA-86cx-wwf4-phq4: Path Prefix Confusion Authorization Bypass in OpenList

An authorization bypass vulnerability in OpenList version 4.2.3 and below allows authenticated users to read arbitrary files outside of their designated base directories due to an insecure path prefix check using Go's standard strings.HasPrefix function.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 13 hours ago•CVE-2026-16584
7.0

CVE-2026-16584: Security Policy Bypass in AWS API MCP Server via Startup Initialization Failure

A security policy bypass vulnerability exists in the AWS API MCP Server (awslabs-aws-api-mcp-server) from version 0.2.13 through 1.3.46. When the server fails to load the read-only operations index during startup (due to transient network failures, file permission issues, or other exceptions), it logs a warning but continues running in an insecure, degraded state. Under this condition, the security policy engine fails open, silently skipping all subsequent security checks and consent prompts for the lifetime of the process. This permits unauthorized mutating AWS CLI commands to execute via indirect prompt injection attacks.

Amit Schendel
Amit Schendel
7 views•7 min read
•about 14 hours ago•GHSA-6V4M-FW66-8R4X
6.5

GHSA-6V4M-FW66-8R4X: Path Disclosure and Shell Expansion Bypass in Shescape

An incomplete escaping vulnerability in the npm package 'shescape' allows unauthenticated users to trigger dynamic shell expansions, absolute path disclosure, and command block break-outs on Unix and Windows systems.

Alon Barad
Alon Barad
6 views•7 min read