# Critical HashiCorp Consul-k8s ACL Binding Rule Authorization Bypass Allows Cross-Namespace Privilege Escalation (CVE-2026-110720)

> CVE-2026-110720 (HCSEC-2026-50) is a cross-namespace authorization bypass in Consul-k8s component ACL binding rules (0.42.0 through 2.0.4) that lets an attacker with ServiceAccount-creation rights in any Kubernetes namespace impersonate Consul components and obtain elevated Consul privileges when global.acls.manageSystemACLs=true. Fixed in Consul-k8s 2.1.0 and 1.8.18; no exploitation or public PoC has been reported.

- **Published:** 2026-10-27T12:12:56Z
- **Last reviewed:** 2026-10-27T12:12:56Z
- **Canonical:** https://intel.threadlinqs.com/threat/TL-2026-4535
- **ID:** TL-2026-4535
- **Severity:** CRITICAL (CVSS 9.9)
- **Category:** VULNERABILITY
- **Status:** PATCHED
- **Detections:** 9 · **IOCs:** 6 (full data via the Threadlinqs MCP server — Purple tier)
- **CVEs:** CVE-2026-110720

## Description

HashiCorp disclosed HCSEC-2026-50 on 2026-10-26: Consul-k8s is vulnerable to a cross-namespace authorization bypass in component ACL binding rules. Binding rules are the mechanism that maps Kubernetes identities (ServiceAccounts authenticated through the Consul Kubernetes auth method) to Consul ACL roles and permissions. On deployments where system ACL management is enabled (global.acls.manageSystemACLs=true), the rules created for Consul components did not consistently restrict authentication to ServiceAccounts located in the Kubernetes namespace that hosts the Consul deployment.

Because the binding-rule selectors could match on the ServiceAccount name alone, a same-named ServiceAccount created in any other namespace could log in to Consul and receive the component's ACL role. The v2.1.0 release notes describe two affected code paths: rules written by server-acl-init, and the TerminatingGateway controller, which overwrote the terminating-gateway ACL binding rule with a selector matching only the ServiceAccount name. Both now require the Consul release namespace in addition to the ServiceAccount name.

Exploitation prerequisites stated by the vendor and NVD: (1) Kubernetes permissions to create a ServiceAccount and obtain tokens for it in a namespace other than the Consul namespace, and (2) network access to the Consul API. The attacker can then impersonate a Consul component and inherit its privileges. The source notes that successful exploitation does not necessarily grant full administrative access; the impact depends on the privileges of the impersonated component role. Deployments with system ACL management disabled are not affected.

NVD scores the issue 9.9 CRITICAL (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H), CWE-863 (Incorrect Authorization). Affected: Consul-k8s 0.42.0 through 2.0.4 (the NVD text phrases the range as 0.42.0 up to versions before 1.8.18 and 2.0.4; HashiCorp's bulletin states 0.42.0 through 2.0.4). Fixed: 1.8.18 (released 2026-10-19) and 2.1.0 (released 2026-10-23). The issue was reported by Elias Hasas (GitHub: zer0d4y5). No in-the-wild exploitation, PoC or IOCs have been published.

Upgrade caveat from the 1.8.18 and 2.1.0 release notes: server-acl-init does not rewrite binding rules of components that were disabled before the upgrade. If a component (for example sync-catalog, mesh-gateway or a gateway) was previously enabled and later disabled, delete its old binding rule on the component auth method (consul acl binding-rule delete) or re-enable the component once and run the upgrade so the rule is updated; otherwise the permissive rule may persist.

## MITRE ATT&CK

- T1078.004 Valid Accounts: Cloud Accounts
- T1078.004 Valid Accounts: Cloud Accounts
- T1136.003 Create Account: Cloud Account
- T1550.001 Use Alternate Authentication Material: Application Access Token
- T1550.001 Use Alternate Authentication Material: Application Access Token
- T1552.007 Unsecured Credentials: Container API

## Sources

- [HCSEC-2026-50 - Consul-k8s vulnerable to a cross-namespace authorization bypass in component ACL binding rules](https://discuss.hashicorp.com/t/hcsec-2026-50-consul-k8s-vulnerable-to-a-cross-namespace-authorization-bypass-in-component-acl-binding-rules/77915)
- [NVD - CVE-2026-110720](https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2026-110720)
- [Critical HashiCorp Consul Kubernetes Flaw Allows Attackers to Gain Elevated Privileges](https://cybersecuritynews.com/hashicorp-consul-kubernetes-vulnerability/)
- [consul-k8s v2.1.0 release notes](https://newreleases.io/project/github/hashicorp/consul-k8s/release/v2.1.0)
- [consul-k8s v1.8.18 release notes](https://newreleases.io/project/github/hashicorp/consul-k8s/release/v1.8.18)
- [consul-k8s GH-5749 - ACL binding rule namespace restriction fix](https://github.com/hashicorp/consul-k8s/issues/5749)
- [Consul ACL Binding Rules command reference](https://developer.hashicorp.com/consul/commands/acl/binding-rule)
- [HashiCorp consul-k8s release index](https://releases.hashicorp.com/consul-k8s/)

## Full data

Detection queries (Splunk SPL / Microsoft KQL / Sigma) and IOC values require the Threadlinqs MCP server (Purple tier): https://intel.threadlinqs.com/mcp

Canonical: https://intel.threadlinqs.com/threat/TL-2026-4535
