Miggo Logo

CVE-2025-32793:
In Cilium, packets from terminating endpoints may not be encrypted in Wireguard-enabled clusters

4

CVSS Score

Basic Information

EPSS Score
-
Published
4/21/2025
Updated
4/23/2025
KEV Status
No
Technology
TechnologyGo

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:N/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
github.com/cilium/ciliumgo>= 1.13.0, < 1.15.161.15.16
github.com/cilium/ciliumgo>= 1.16.0, < 1.16.91.16.9
github.com/cilium/ciliumgo>= 1.17.0, < 1.17.31.17.3

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability description and commit message indicate a race condition where packets from terminating endpoints might not be encrypted. The patch (commit 0de9ea6ec94ceb16b7c16924f048a83e7332dbc2) modifies wg_maybe_redirect_to_encrypt in bpf/lib/wireguard.h and its caller in bpf/bpf_host.c. The core issue was that wg_maybe_redirect_to_encrypt previously performed an ipcache lookup for the source security identity. This lookup could fail or return an incorrect identity for a terminating endpoint due to the race condition, leading to encryption being skipped. The patch changes wg_maybe_redirect_to_encrypt to accept the source security identity (obtained earlier and more reliably from skb->mark via cil_to_netdev) as a parameter, thus avoiding the racy ipcache lookup within the function itself for determining the source identity. Therefore, the pre-patch version of wg_maybe_redirect_to_encrypt is identified as the vulnerable function because its logic for determining the source security identity was flawed under race conditions for terminating pods, leading to incorrect encryption decisions.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

### Imp**t W**n usin* [Wir**u*r* tr*nsp*r*nt *n*ryption](*ttps://*o*s.*ilium.io/*n/st**l*/s**urity/n*twork/*n*ryption-wir**u*r*/#*n*ryption-w*) in * *ilium *lust*r, p**k*ts t**t ori*in*t* *rom * t*rmin*tin* *n*point **n l**v* t** sour** no** wit*out

Reasoning

T** vuln*r**ility **s*ription *n* *ommit m*ss*** in*i**t* * r*** *on*ition w**r* p**k*ts *rom t*rmin*tin* *n*points mi**t not ** *n*rypt**. T** p*t** (*ommit ****************************************) mo*i*i*s `w*_m*y**_r**ir**t_to_*n*rypt` in `*p*/li