<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Kcp — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/kcp/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata — refreshed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Wed, 08 Apr 2026 15:04:22 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/kcp/feed.xml" rel="self" type="application/rss+xml"/><item><title>Unauthenticated Access to kcp Cache Server</title><link>https://feed.craftedsignal.io/briefs/2026-04-kcp-cache-unauth/</link><pubDate>Wed, 08 Apr 2026 15:04:22 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-04-kcp-cache-unauth/</guid><description>The kcp cache server is exposed without authentication, allowing unauthorized read access to sensitive data and a race condition for write access that could lead to temporary privilege escalation.</description><content:encoded><![CDATA[<p>The kcp (Kubernetes Cluster Platform) cache server, responsible for replicating resources, is directly exposed by the root shard without any authentication or authorization checks. This vulnerability allows anyone with network access to the root shard to read replicated resources and potentially write to the cache server, creating a race condition. The lack of authentication in the preHandlerChainMux, specifically identified in <code>pkg/server/config.go</code> at line 514-518, causes the cache server to be proxied before authentication or authorization can take place. This impacts kcp versions prior to v0.29.3 and between v0.30.0 and v0.30.3. This vulnerability allows unauthorized access to sensitive information, including RBAC rules, cluster topology, API surfaces, admission control policies, and tenancy configurations.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker gains network access to the kcp root shard, typically through exposed ports or external URLs.</li>
<li>Attacker crafts an HTTP request targeting the <code>/services/cache/*</code> endpoint without any authentication headers.</li>
<li>The request bypasses authentication and authorization checks due to the flawed preHandlerChainMux configuration.</li>
<li>The attacker reads replicated resources from the cache, such as clusterroles, clusterrolebindings, logicalclusters, apiexports, and validatingwebhookconfigurations.</li>
<li>(Optional) The attacker attempts to inject a malicious ClusterRole and ClusterRoleBinding via a POST request to the cache server.</li>
<li>The cache etcd watch fires, notifying the authorization informer and replication controller in parallel.</li>
<li>The authorization informer updates its in-memory store, briefly granting the attacker the injected RBAC rules.</li>
<li>The replication controller eventually reconciles and deletes the injected object, but a small window of opportunity exists for privilege escalation.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows unauthorized access to critical cluster information, potentially exposing RBAC configurations, API endpoints, and internal infrastructure details. An attacker can read replicated resources, including cluster roles, cluster role bindings, logical clusters, shards, API exports, API resource schemas, mutating webhook configurations, validating webhook configurations, validating admission policies, and workspace types. While injected objects are quickly cleaned up, a brief race condition allows for temporary privilege escalation. This affects kcp deployments where the root shard is network-reachable by untrusted clients, including Helm chart deployments, Operator deployments with external URLs set, and deployments with a reachable &ndash;shard-external-url.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Implement network-level access control to restrict access to the <code>/services/cache/*</code> paths at the load balancer, reverse proxy, or firewall level as described in the <strong>Workarounds</strong> section of the advisory.</li>
<li>Deploy the cache server separately with its own kubeconfig (<code>--cache-server-kubeconfig</code>) and restrict network access to it, mitigating direct exposure to the root shard as per the <strong>Workarounds</strong> section.</li>
<li>Upgrade to kcp version v0.29.3 or v0.30.3 or later to patch the vulnerability as per <strong>CVE-2026-39429</strong>.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>kcp</category><category>kubernetes</category><category>cache</category><category>authentication</category><category>authorization</category><category>privilege-escalation</category></item></channel></rss>