Skip to main content

Edgeless Contrast CVE-2026-100836

| EUVDEUVD-2026-87831 MEDIUM
Improper Validation of Array Index (CWE-129)
2026-09-27 VulnCheck GHSA-x66w-59x9-vvcf
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain valid mesh certificate for any WorkloadSecretID
  2. Delivery
    Craft ciphertext with sub-12-byte base64 blob
  3. Exploit
    POST to transit-engine endpoint
  4. Execution
    Slice-bounds panic in UnmarshalJSON
  5. Persist
    Recovered 500 plus log spam
  6. Impact
    Repeat for sustained degradation

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Array index validation
Exploitation Conditions

Requires an authenticated caller that holds a valid mesh certificate for any WorkloadSecretID and network reach to the Contrast Coordinator's transit-engine endpoint (versions through 1.20.0). The specific trigger is submitting a 'vault:vX:base64' ciphertext whose third component base64-decodes to fewer than 12 bytes (any base64 string shorter than ~16 characters). No user interaction and no special non-default configuration are needed beyond the transit-engine being in use. Limiting factors: the mesh-certificate authentication requirement (PR:L), and the fact that the panic is recovered by net/http so the process survives - impact is confined to log spam, failed requests, and endpoint degradation rather than a hard crash or data compromise.

Impact

This is a genuinely low-priority availability-only issue despite being reachable over the network. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L, 5.3) is internally consistent with the advisory: the impact is limited (VA:L) because the panic is recovered by net/http's handler goroutine - the Coordinator process does NOT crash, it returns a 500 and continues. The realistic outcome is log spam, elevated request-failure metrics, and a 'slow but cheap' degradation of the transit-engine endpoint, not a full outage. Exploitation requires an authenticated workload holding a valid mesh certificate (PR:L), which meaningfully raises the bar over a truly unauthenticated DoS. No EPSS score, no CISA KEV listing, and no independent POC are provided, though the GHSA advisory itself contains the exact triggering mechanics (a short base64 ciphertext), effectively serving as a proof of concept. No SSVC decision block was supplied. There is no signal of active exploitation. Bottom line: a real but minor DoS gated behind authentication with self-healing impact - patch on normal cadence, not an emergency. Note the input tag 'Denial Of Service' is accurate here, unlike some sibling Contrast CVEs whose tags were mislabeled.

Exploit ScenarioDerived

An authenticated workload with a valid mesh certificate for any WorkloadSecretID sends a crafted request to the transit-engine endpoint containing a 'vault:vX:base64' ciphertext whose base64 component decodes to fewer than 12 bytes. During JSON parsing, ciphertextContainer.UnmarshalJSON slices the too-short buffer to extract the 12-byte AES-GCM nonce, triggering a Go runtime slice-bounds panic that is recovered to a 500 response. Repeating this cheaply produces sustained log spam and request failures against the Coordinator; the GHSA advisory documents the exact panicking code path.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 27, 2026

Authenticated workloads that hold a valid mesh certificate can force a recovered runtime panic in the Edgeless Contrast Coordinator's transit-engine endpoint (all versions through 1.20.0) by submitting a 'vault:vX:base64' ciphertext whose third component decodes to fewer than 12 bytes. The panic is caught by net/http and returned as a 500, so the process survives, but each trigger aborts the request mid-handler and writes the recovered panic to the Coordinator logs, producing log spam, request-failure metrics, and a cheap, low-rate degradation of the transit-engine API. Reachability is gated by mesh-certificate authentication (CVSS 4.0 base 5.3, AV:N/PR:L, availability-only), and no public exploit code or confirmed active exploitation was identified at time of analysis; a vendor fix is available in 1.21.0, making this a low-priority hardening item rather than an urgent one.

RemediationAI

Upgrade Edgeless Contrast to 1.21.0 or later, which contains the length validation fix; the upstream change is commit d6584fbff816037472034f7ad6e08cdbab1d870d and full details are in GHSA-3ccm-4qq2-5wrp (https://github.com/edgelesssys/contrast/security/advisories/GHSA-3ccm-4qq2-5wrp). There is no configuration toggle that disables the affected parsing path, so patching is the only complete fix. As compensating controls pending the upgrade: restrict network reachability to the Coordinator's transit-engine endpoint so only workloads that actually need key operations can reach it (trade-off: any legitimate caller outside that narrow allowlist loses transit-engine access until rules are updated), audit and minimize the set of mesh certificates / WorkloadSecretIDs issued, and revoke certificates that are no longer needed, since only a certificate-holding workload can trigger the panic (trade-off: aggressive certificate rotation adds operational overhead and can break long-running workloads if not staged). Because the panic is recovered by net/http and the process survives, hardening priorities are observability and abuse detection: monitor the Coordinator for repeated HTTP 500 responses and 'slice bounds out of range' panic entries in logs, and apply log rate limiting or sampling so a misbehaving or malicious workload cannot flood storage (trade-off: rate limiting can mask the early signal of a real outage, so pair it with an alert on the underlying 500/panic counter). No vendor workaround obviates the need to patch; treat this as a low-urgency availability fix rather than an emergency, given the authenticated prerequisite and the absence of identified public exploit code or confirmed active exploitation.

Affected VersionsENISA

contrast 0 ≤1.20.0

Affected Packages

go github.com/edgelesssys/contrast fix: 1.21.0
euvd contrast no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in go, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Contrast is Edgeless Systems' confidential-computing service mesh for Kubernetes; its Coordinator exposes a Vault-style 'transit engine' HTTP API that mesh workloads call, authenticated with mesh certificates issued per WorkloadSecretID. The vulnerable code lives in coordinator/internal/transitengineapi/crypto.go, where ciphertextContainer.UnmarshalJSON parses the 'vault:vX:base64...' wire format with strings.SplitN(encoded, ":", 3), validates the version token, then base64-decodes the third component and unconditionally executes c.nonce = fullCiphertext[:aesGCMNonceSize] with aesGCMNonceSize = 12, followed by c.ciphertext = fullCiphertext[12:]. This is CWE-129 (improper validation of array index / slice bounds): no length check is performed before the fixed-width slice, so any decoded payload shorter than 12 bytes - i.e. roughly any base64 string under ~16 characters - raises Go's 'slice bounds out of range [:12] with length N' runtime panic. Critically, this occurs during JSON body parsing inside the request handler, before any AES-GCM cryptographic operation is attempted, meaning no key material, plaintext, or integrity check is involved and no cryptographic primitive is weakened. Because Go's net/http recovers panics per connection goroutine, the Coordinator translates the panic into a 500 response and continues serving; the security impact is therefore confined to request abortion, log volume, and observability noise rather than process death, memory corruption, or data disclosure.

Know when Contrast gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
vuln.today AI 4.3 MEDIUM

Network-reachable and low-complexity, but needs a valid mesh certificate (PR:L); impact is availability-only and partial (A:L) since the recovered panic degrades but does not crash the process.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Contrast through 1.20.0 contains a panic vulnerability in the transit-engine endpoint's ciphertextContainer.UnmarshalJSON function that fails to validate decoded ciphertext length before slicing. An authenticated workload with a valid mesh certificate can trigger a runtime panic by submitting a short base64-encoded ciphertext, causing log spam and request failures without crashing the process.

Threat Intelligence Overview

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Low
Edgeless Systems Contrast is niche confidential-computing Kubernetes software
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy