CVE-2025-54470: NeuVector telemetry sender is vulnerable to MITM and DoS
8.6
Basic Information
Technical Details
| Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
|---|---|---|---|
| https://github.com/neuvector/neuvector | go | >= 5.3.0, < 5.3.5 | 5.3.5 |
| https://github.com/neuvector/neuvector | go | >= 5.4.0, <= 5.4.6 | 5.4.7 |
| https://github.com/neuvector/neuvector | go | >= 0.0.0-20230727023453-1c4957d53911, < 0.0.0-20251020133207-084a437033b4 | 0.0.0-20251020133207-084a437033b4 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability analysis identified two primary issues in the NeuVector telemetry sender: a Man-in-the-Middle (MITM) vulnerability due to improper TLS certificate validation, and a Denial of Service (DoS) vulnerability due to unbounded memory allocation when reading server responses.
The investigation of the provided patches pinpointed the root causes within the controller/rest/federation.go file. The rest.createHttpClient function was hardcoded to create an insecure HTTP client with InsecureSkipVerify: true. This client was then used by the rest.sendRestReqInternal function for all outgoing requests, including telemetry data transmission.
The rest.sendRestReqInternal function also contained the DoS flaw, as it used ioutil.ReadAll to read the entire response from the telemetry server into memory without any size restrictions. An attacker could exploit this by sending a large response, causing the controller to crash.
The patch addresses these issues by introducing a secure-by-default approach. It modifies rest.createHttpClient to accept a parameter for TLS verification and creates both a secure and an insecure client. The rest.sendRestReqInternal function is updated to use the secure client for telemetry requests and implements io.LimitReader to restrict the response size to 256 bytes, effectively mitigating both the MITM and DoS vulnerabilities.
The function rest.getNvUpgradeInfo in controller/rest/system.go was identified as the trigger for this vulnerable operation, as it initiates the call to the telemetry server.
Vulnerable functions
rest.sendRestReqInternalcontroller/rest/federation.go
rest.createHttpClientcontroller/rest/federation.go
rest.getNvUpgradeInfocontroller/rest/system.go