<?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>Fission — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/fission/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Thu, 21 May 2026 20:18:20 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/fission/feed.xml" rel="self" type="application/rss+xml"/><item><title>Fission Function Pods Leak Service Account Token, Enabling Namespace-Wide Secret Access</title><link>https://feed.craftedsignal.io/briefs/2026-05-fission-sa-token-leak/</link><pubDate>Thu, 21 May 2026 20:18:20 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-fission-sa-token-leak/</guid><description>Fission runtime pods were created with the `fission-fetcher` service account, granting namespace-wide `get` access to secrets and configmaps; the runtime pod's automounted token was reachable from inside the user's function container, allowing user-supplied function code to inherit the same Kubernetes API privileges and read any secret or configmap in the function's namespace, far beyond the intended `Function.spec.secrets` allowlist.</description><content:encoded><![CDATA[<p>Fission is a function-as-a-service (FaaS) framework for Kubernetes. Prior to version 1.23.0, Fission runtime pods were configured with the <code>fission-fetcher</code> service account, which had broad permissions to read secrets and configmaps within its namespace. This was necessary for the fetcher sidecar to retrieve function code, environment variables, and configuration data. However, the service account token was automatically mounted into the user&rsquo;s function container at <code>/var/run/secrets/kubernetes.io/serviceaccount/token</code>. This exposed the token to user-supplied function code, granting it unintended Kubernetes API privileges and the ability to read any secret or configmap in the function&rsquo;s namespace, bypassing the intended security controls defined by <code>Function.spec.secrets</code>. This vulnerability allows malicious function code to escalate privileges and access sensitive data within the Kubernetes namespace.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker gains the ability to deploy or update a Fission <code>Function</code> or <code>Package</code> resource in a Kubernetes namespace.</li>
<li>The attacker crafts a malicious function that reads the service account token file located at <code>/var/run/secrets/kubernetes.io/serviceaccount/token</code>.</li>
<li>The function uses the token to authenticate against the Kubernetes API server.</li>
<li>The function queries the Kubernetes API to list and read all secrets within the namespace.</li>
<li>The function retrieves sensitive data from the secrets, such as TLS keys, OIDC client secrets, database credentials, or cloud provider credentials.</li>
<li>The function queries the Kubernetes API to list and read all configmaps within the namespace.</li>
<li>The attacker uses the stolen credentials to pivot to other Kubernetes resources or external systems.</li>
<li>The attacker compromises other systems or resources using the obtained credentials.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows an attacker to read every secret and configmap within a Kubernetes namespace where Fission runtime pods are scheduled. This could include sensitive information such as database credentials, API keys, and TLS certificates. By gaining access to these secrets, an attacker could potentially compromise other applications and services running within the cluster, or even gain unauthorized access to external systems. The vulnerability violates the principle that <code>Function.spec.secrets</code> should be the sole declaration of secrets accessible to a function.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to Fission version 1.23.0 or later, where the user function container has <code>AutomountServiceAccountToken</code> set to <code>false</code> at the container level to prevent the token leak, as described in <a href="https://github.com/fission/fission/pull/3366">PR #3366</a>.</li>
<li>Until an upgrade is possible, restrict who can create or update <code>Function</code> and <code>Package</code> CRDs in your cluster, treating function code deployment as equivalent to namespace-wide secret read.</li>
<li>Reduce the scope of the <code>fission-fetcher</code> ClusterRole/Role where possible, limiting access to specific named secrets via separate Role bindings.</li>
<li>Implement NetworkPolicy egress rules to deny function pods access to the Kubernetes API server, mitigating the impact of a token leak.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>privilege-escalation</category><category>kubernetes</category><category>faas</category></item><item><title>Fission Function Invocation Bypass via Public Router Endpoint</title><link>https://feed.craftedsignal.io/briefs/2026-05-fission-function-bypass/</link><pubDate>Thu, 21 May 2026 20:15:31 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-fission-function-bypass/</guid><description>The Fission router exposes the `/fission-function/&lt;ns&gt;/&lt;name&gt;` endpoint on its public listener, allowing invocation of any function without an HTTPTrigger, leading to unauthorized function access and potential cross-tenant exploitation; patched in v1.23.0.</description><content:encoded><![CDATA[<p>Fission is a Kubernetes-native serverless framework. Versions up to 1.22.0 are vulnerable to a function invocation bypass. The Fission router registered an internal-style route (<code>/fission-function/&lt;ns&gt;/&lt;name&gt;</code>) for every Function object, irrespective of any existing HTTPTrigger. This route was exposed on the public listener (svc/router, port 8888). An attacker capable of reaching the router could invoke any function by guessing its <code>metadata.name</code> and namespace, thereby circumventing the constraints specified in HTTPTrigger objects, such as host, path, and allowed methods. This vulnerability was patched in version v1.23.0.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker identifies a Fission deployment with a publicly accessible router (svc/router, port 8888).</li>
<li>Attacker enumerates or guesses the <code>metadata.name</code> and namespace of Fission functions.</li>
<li>Attacker crafts an HTTP GET request to <code>/fission-function/&lt;ns&gt;/&lt;name&gt;</code> on the public router endpoint.</li>
<li>The Fission router, lacking proper access control, forwards the request to the specified function.</li>
<li>The function executes, potentially performing unintended actions or leaking sensitive information.</li>
<li>In multi-tenant environments, an attacker in one tenant&rsquo;s pod can invoke functions in another tenant&rsquo;s namespace, crossing tenant boundaries.</li>
<li>Attacker bypasses HTTPTrigger-level restrictions (e.g., a function published only on POST /api/v2/foo can be invoked as GET /fission-function/<ns>/<name>).</li>
<li>The attacker probes response semantics (404 vs 200 vs 502) to enumerate existing function names.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows external callers to invoke functions that were not intended for public access, such as internal helpers or sample functions. It also bypasses HTTPTrigger restrictions, enabling invocation of functions with arbitrary headers and bodies. In multi-tenant deployments, this vulnerability can cross tenant boundaries, potentially leading to unauthorized access to sensitive data or resources. Function names can also be enumerated by probing the response semantics, providing attackers with valuable information for further attacks.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to Fission v1.23.0 or later to incorporate the fix implemented in PR #3369, which separates public and internal listeners.</li>
<li>Apply a NetworkPolicy to the Fission namespace to restrict ingress to <code>svc/router</code> (port 8888) only from authorized sources and block access to <code>/fission-function/...</code> as suggested in the mitigation steps.</li>
<li>If an ingress controller is used, implement path-based filtering at the ingress layer to block access to <code>/fission-function/</code> until the upgrade is complete.</li>
<li>Deploy the Sigma rule <code>Detect Fission Function Invocation Bypass</code> to identify attempts to exploit this vulnerability.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>fission</category><category>function-invocation</category><category>bypass</category><category>kubernetes</category></item><item><title>Fission StorageSvc Unauthenticated Archive CRUD Vulnerability</title><link>https://feed.craftedsignal.io/briefs/2026-05-fission-storagesvc-auth-bypass/</link><pubDate>Thu, 21 May 2026 20:08:37 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-05-fission-storagesvc-auth-bypass/</guid><description>The Fission `storagesvc` component exposes unauthenticated CRUD operations on the `/v1/archive` endpoint, allowing any workload within the same Kubernetes cluster to enumerate archive IDs, download archives, upload arbitrary content, and delete archives, leading to potential code and secret exposure and function disruption.</description><content:encoded><![CDATA[<p>Fission is a serverless framework for Kubernetes. A critical vulnerability exists within the <code>storagesvc</code> component of Fission versions 1.22.0 and earlier. The <code>storagesvc</code> registers archive CRUD handlers (<code>/v1/archive</code> GET / POST / DELETE and <code>/v1/archives</code> list) directly on its HTTP router without any authentication or authorization checks. This oversight enables any workload within the same Kubernetes cluster to interact with the archive storage service, bypassing tenant boundaries. The vulnerability was addressed in Fission v1.23.0 via PR #3368, which implemented HMAC verification, and defense in depth was added via PR #3365 which implemented a NetworkPolicy for the service. This unauthenticated access allows attackers to enumerate, download, modify, or delete function deployment archives, impacting code integrity and confidentiality.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker compromises a pod within the Kubernetes cluster hosting Fission.</li>
<li>The compromised pod discovers the <code>storagesvc</code> ClusterIP.</li>
<li>The attacker sends an unauthenticated GET request to <code>/v1/archives</code> to enumerate archive IDs.</li>
<li>The attacker crafts a GET request to <code>/v1/archive/{archiveID}</code> to download a function&rsquo;s deployment archive, exposing source code and embedded secrets.</li>
<li>Alternatively, the attacker sends a DELETE request to <code>/v1/archive/{archiveID}</code> to remove a function archive, causing function specialization failures.</li>
<li>The attacker can also send a POST request to <code>/v1/archive</code> to upload a malicious archive.</li>
<li>Subsequent function specializations fetch and execute the uploaded malicious archive.</li>
<li>The attacker achieves arbitrary code execution within the Fission environment, potentially leading to further compromise.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows a workload within the cluster to enumerate every function deployment archive, download sensitive function code and secrets, delete archives causing function failures, and upload malicious archives leading to code execution. This completely breaks tenant boundaries in multi-tenant Fission deployments. The absence of authentication on the <code>storagesvc</code> endpoint allows for trivial exploitation from any compromised workload within the cluster. This vulnerability is tracked as CVE-2026-46612.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade Fission to v1.23.0 or later to incorporate the authentication fix introduced in PR #3368.</li>
<li>Enable the Helm chart&rsquo;s per-service NetworkPolicy (set <code>networkPolicy.enabled=true</code>) as outlined in the Mitigation section of the advisory.</li>
<li>Implement egress/ingress restrictions for <code>storagesvc</code> to limit network access to only the executor, builder, and fetcher pods, as described in the advisory.</li>
<li>Deploy the Sigma rule &ldquo;Detect Unauthenticated Access to Fission StorageSvc Archive Endpoint&rdquo; to detect unauthorized access attempts to the <code>/v1/archive</code> endpoint.</li>
<li>Deploy the Sigma rule &ldquo;Detect Fission StorageSvc Archive Manipulation&rdquo; to detect POST/DELETE attempts to the <code>/v1/archive</code> endpoint.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">threat</category><category>kubernetes</category><category>serverless</category><category>authentication-bypass</category><category>code-execution</category></item></channel></rss>