{"id":"CVE-2025-71426","aliases":["EUVD-2025-211006","GHSA-m5hp-85q9-x6vh","GHSA-vqv5-385r-2hf8","GO-2025-3455"],"status":"published","title":"Contrast before 1.4.1 Coordinator Impersonation via Unauthenticated Recovery","description":"Contrast is a confidential-computing runtime for Kubernetes. In versions before 1.4.1, a recovering Coordinator does not verify the seed supplied by the recovering party. An attacker can therefore stand up a rogue Coordinator whose manifest passes validation but whose secret seed is attacker-controlled. If network traffic is redirected from the legitimate Coordinator to the attacker's Coordinator, a workload owner can be impersonated when they either set a new manifest without comparing the returned root CA certificate against the existing one (the default behavior of the contrast CLI) or verify the Coordinator without comparing the root CA certificate against a trusted reference. Under these conditions the attacker can issue certificates that chain back to the rogue Coordinator's root CA and recover arbitrary workload secrets of workloads deployed after the attack. Secrets of the legitimate Coordinator (seed, workload secrets, CA), workload integrity, and certificates chaining to the mesh CA are not affected.","severity":{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.0014,"percentile":0.03445,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-285"],"published":"2025-02-05T21:30:35Z","modified":"2026-10-28T02:30:58Z","fixes":[{"ecosystem":"Go","package":"github.com/edgelesssys/contrast","fixed_in":["1.4.1"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"Go","package":"github.com/edgelesssys/contrast","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"1.4.0"},{"fixed":"1.4.1"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/edgelesssys/contrast","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.4.1"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/edgelesssys/contrast","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.4.1"}]}]}],"products":[{"vendor":"edgelesssys","product":"contrast"}],"references":[{"url":"https://github.com/edgelesssys/contrast/security/advisories/GHSA-vqv5-385r-2hf8","tags":["vendor-advisory","advisory","web"]},{"url":"https://www.vulncheck.com/advisories/contrast-before-1.4.1-coordinator-impersonation-via-unauthenticated-recovery","tags":["third-party-advisory","advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-71426","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-m5hp-85q9-x6vh"},{"url":"https://pkg.go.dev/vuln/GO-2025-3455","tags":["web"]},{"url":"https://github.com/advisories/GHSA-vqv5-385r-2hf8"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/71xxx/CVE-2025-71426.json","tags":["advisory"]},{"url":"https://github.com/edgelesssys/contrast","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2025-71426","title":"Contrast before 1.4.1 Coordinator Impersonation via Unauthenticated Recovery","description":"Contrast is a confidential-computing runtime for Kubernetes. In versions before 1.4.1, a recovering Coordinator does not verify the seed supplied by the recovering party. An attacker can therefore stand up a rogue Coordinator whose manifest passes validation but whose secret seed is attacker-controlled. If network traffic is redirected from the legitimate Coordinator to the attacker's Coordinator, a workload owner can be impersonated when they either set a new manifest without comparing the returned root CA certificate against the existing one (the default behavior of the contrast CLI) or verify the Coordinator without comparing the root CA certificate against a trusted reference. Under these conditions the attacker can issue certificates that chain back to the rogue Coordinator's root CA and recover arbitrary workload secrets of workloads deployed after the attack. Secrets of the legitimate Coordinator (seed, workload secrets, CA), workload integrity, and certificates chaining to the mesh CA are not affected.","status":"published","published":"2026-09-27T01:28:27.915Z","modified":"2026-10-08T15:21:39.266Z","cvss":[{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high","assessor":"cna"},{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N","level":"high","assessor":"cna"}],"cwes":["CWE-285"],"updated_at":"2026-11-02T14:32:42.751171Z"}],"euvd":[{"id":"EUVD-2025-211006","description":"Contrast is a confidential-computing runtime for Kubernetes. In versions before 1.4.1, a recovering Coordinator does not verify the seed supplied by the recovering party. An attacker can therefore stand up a rogue Coordinator whose manifest passes validation but whose secret seed is attacker-controlled. If network traffic is redirected from the legitimate Coordinator to the attacker's Coordinator, a workload owner can be impersonated when they either set a new manifest without comparing the returned root CA certificate against the existing one (the default behavior of the contrast CLI) or verify the Coordinator without comparing the root CA certificate against a trusted reference. Under these conditions the attacker can issue certificates that chain back to the rogue Coordinator's root CA and recover arbitrary workload secrets of workloads deployed after the attack. Secrets of the legitimate Coordinator (seed, workload secrets, CA), workload integrity, and certificates chaining to the mesh CA are not affected.","status":"published","published":"2026-09-27T01:28:27Z","modified":"2026-10-08T15:21:39Z","cvss":[{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high"}],"updated_at":"2026-11-02T17:27:32.18003Z"}],"ghsa":[{"id":"GHSA-m5hp-85q9-x6vh","title":"Contrast is a confidential-computing runtime for Kubernetes. In versions before 1.4.1, a...","description":"Contrast is a confidential-computing runtime for Kubernetes. In versions before 1.4.1, a recovering Coordinator does not verify the seed supplied by the recovering party. An attacker can therefore stand up a rogue Coordinator whose manifest passes validation but whose secret seed is attacker-controlled. If network traffic is redirected from the legitimate Coordinator to the attacker's Coordinator, a workload owner can be impersonated when they either set a new manifest without comparing the returned root CA certificate against the existing one (the default behavior of the contrast CLI) or verify the Coordinator without comparing the root CA certificate against a trusted reference. Under these conditions the attacker can issue certificates that chain back to the rogue Coordinator's root CA and recover arbitrary workload secrets of workloads deployed after the attack. Secrets of the legitimate Coordinator (seed, workload secrets, CA), workload integrity, and certificates chaining to the mesh CA are not affected.","status":"published","published":"2026-09-27T03:31:03Z","modified":"2026-09-27T03:31:12Z","cvss":[{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"high"},{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N","level":"high"}],"cwes":["CWE-285"],"updated_at":"2026-11-02T15:12:30.689958Z"},{"id":"GHSA-vqv5-385r-2hf8","title":"Contrast's unauthenticated recovery allows Coordinator impersonation","description":"### Impact\n\nRecovering coordinators do not verify the seed provided by the recovering party. This allows an attacker to set up a coordinator with a manifest that passes validation, but with a secret seed controlled by the attacker. \n\nIf network traffic is redirected from the legitimate coordinator to the attacker's coordinator, a workload owner is susceptible to impersonation if either \n\n* they `set` a new manifest and don't compare the root CA cert with the existing one (this is the default of the `contrast` CLI) or\n* they `verify` the coordinator and don't compare the root CA cert with a trusted reference.\n\nUnder these circumstances, the attacker can:\n\n* Issue certificates that chain back to the attacker coordinator's root CA.\n* Recover arbitrary workload secrets of workloads deployed after the attack.\n\nThis issue does **not** affect the following:\n\n* secrets of the legitimate coordinator (seed, workload secrets, CA)\n* integrity of workloads, even when used with the rogue coordinator\n* certificates chaining back to the mesh CA\n\n### Patches\n\nThis issue is patched in Contrast v1.4.1.\n\n### Workarounds\n\nThe issue can be avoided by verifying the coordinator root CA cert against expectations.\n\n* At the first `set` call, keep a copy of the CA cert returned by the coordinator.\n* After subsequent `set` or `verify` calls, compare the returned CA cert with the backup copy. If it matches bit-for-bit, the coordinator is legitimate.","status":"published","published":"2025-02-05T21:30:35Z","modified":"2025-02-06T18:05:16Z","cvss":[{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N","level":"high"}],"cwes":["CWE-285"],"updated_at":"2026-11-02T14:38:29.866763Z"}],"nvd":[{"id":"CVE-2025-71426","description":"Contrast is a confidential-computing runtime for Kubernetes. In versions before 1.4.1, a recovering Coordinator does not verify the seed supplied by the recovering party. An attacker can therefore stand up a rogue Coordinator whose manifest passes validation but whose secret seed is attacker-controlled. If network traffic is redirected from the legitimate Coordinator to the attacker's Coordinator, a workload owner can be impersonated when they either set a new manifest without comparing the returned root CA certificate against the existing one (the default behavior of the contrast CLI) or verify the Coordinator without comparing the root CA certificate against a trusted reference. Under these conditions the attacker can issue certificates that chain back to the rogue Coordinator's root CA and recover arbitrary workload secrets of workloads deployed after the attack. Secrets of the legitimate Coordinator (seed, workload secrets, CA), workload integrity, and certificates chaining to the mesh CA are not affected.","status":"published","published":"2026-09-27T02:17:17.16Z","modified":"2026-10-14T13:10:00.187Z","cvss":[{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"high","assessor":"secondary"},{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N","level":"high","assessor":"secondary"}],"cwes":["CWE-285"],"updated_at":"2026-11-02T14:12:03.20248Z"}],"osv":[{"id":"CVE-2025-71426","title":"Contrast before 1.4.1 Coordinator Impersonation via Unauthenticated Recovery","description":"Contrast is a confidential-computing runtime for Kubernetes. In versions before 1.4.1, a recovering Coordinator does not verify the seed supplied by the recovering party. An attacker can therefore stand up a rogue Coordinator whose manifest passes validation but whose secret seed is attacker-controlled. If network traffic is redirected from the legitimate Coordinator to the attacker's Coordinator, a workload owner can be impersonated when they either set a new manifest without comparing the returned root CA certificate against the existing one (the default behavior of the contrast CLI) or verify the Coordinator without comparing the root CA certificate against a trusted reference. Under these conditions the attacker can issue certificates that chain back to the rogue Coordinator's root CA and recover arbitrary workload secrets of workloads deployed after the attack. Secrets of the legitimate Coordinator (seed, workload secrets, CA), workload integrity, and certificates chaining to the mesh CA are not affected.","status":"published","published":"2026-09-27T01:28:27.915Z","modified":"2026-10-28T02:30:58.404184183Z","cvss":[{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-285"],"updated_at":"2026-11-02T15:44:53.185592Z"},{"id":"GHSA-vqv5-385r-2hf8","title":"Contrast's unauthenticated recovery allows Coordinator impersonation","description":"### Impact\n\nRecovering coordinators do not verify the seed provided by the recovering party. This allows an attacker to set up a coordinator with a manifest that passes validation, but with a secret seed controlled by the attacker. \n\nIf network traffic is redirected from the legitimate coordinator to the attacker's coordinator, a workload owner is susceptible to impersonation if either \n\n* they `set` a new manifest and don't compare the root CA cert with the existing one (this is the default of the `contrast` CLI) or\n* they `verify` the coordinator and don't compare the root CA cert with a trusted reference.\n\nUnder these circumstances, the attacker can:\n\n* Issue certificates that chain back to the attacker coordinator's root CA.\n* Recover arbitrary workload secrets of workloads deployed after the attack.\n\nThis issue does **not** affect the following:\n\n* secrets of the legitimate coordinator (seed, workload secrets, CA)\n* integrity of workloads, even when used with the rogue coordinator\n* certificates chaining back to the mesh CA\n\n### Patches\n\nThis issue is patched in Contrast v1.4.1.\n\n### Workarounds\n\nThe issue can be avoided by verifying the coordinator root CA cert against expectations.\n\n* At the first `set` call, keep a copy of the CA cert returned by the coordinator.\n* After subsequent `set` or `verify` calls, compare the returned CA cert with the backup copy. If it matches bit-for-bit, the coordinator is legitimate.","status":"published","published":"2025-02-05T21:30:35Z","modified":"2026-09-27T11:55:52.460631994Z","cvss":[{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N","level":"high"}],"cwes":["CWE-285"],"updated_at":"2026-11-02T15:46:57.694388Z"},{"id":"GO-2025-3455","title":"Contrast's unauthenticated recovery allows Coordinator impersonation in github.com/edgelesssys/contrast","description":"Contrast's unauthenticated recovery allows Coordinator impersonation in github.com/edgelesssys/contrast","status":"published","published":"2025-02-05T23:27:43Z","modified":"2026-09-27T11:55:52.460631994Z","updated_at":"2026-11-02T15:47:01.728182Z"}]}}
