Start Debugging

Aspire 13.2.4 schließt CVE-2026-40894: DoS über baggage-Header in OpenTelemetry .NET

Aspire 13.2.4 enthält ein OpenTelemetry-Update für CVE-2026-40894, eine Allokationsverstärkung in Gen0 beim Parsen der Propagatoren baggage, B3 und Jaeger. Aktualisieren Sie OpenTelemetry.Api und OpenTelemetry.Extensions.Propagators auf 1.15.3, auch wenn Sie kein Aspire verwenden.

Aspire 13.2.4 wurde am 24. April veröffentlicht, mit einer einzigen Zeile, die zählt: “Bumped OpenTelemetry dependencies to address CVE-2026-40894.” Der eigentliche Advisory, eingereicht gegen open-telemetry/opentelemetry-dotnet, ist die spannendere Hälfte der Geschichte. Es handelt sich um eine Allokationsverstärkung in Gen0 im Parser-Code der Propagatoren, vorhanden in OpenTelemetry.Api und OpenTelemetry.Extensions.Propagators von Version 0.5.0-beta.2 bis zu jedem Release vor 1.15.3. Wenn Sie auf einer aktuellen Aspire-13.2-Linie sind, kommt der Patch beim Update an. Wenn Sie ASP.NET Core ohne Aspire mit manueller OpenTelemetry-Verdrahtung betreiben, müssen Sie die Pakete selbst aktualisieren.

Wie ein Komma-String zu einem Gen0-Sturm wird

Die verwundbaren Codepfade liegen in den Parsern für den W3C-Header baggage und die Legacy-Header b3 und uber-trace-id (Jaeger). Alle drei splitten an Trennzeichen, bevor sie die Länge prüfen, sodass die Allokation linear mit der Anzahl der Trennzeichen skaliert, nicht mit der Menge der echten Daten. Eine einzige eingehende Anfrage wie

GET /orders/42 HTTP/1.1
Host: api.example.com
baggage: ,,,,,,,,,,,,,,,,,,,,,,,,,,,,, [...5000 commas...]

löst aus, dass das Framework Tausende leerer string-Objekte in Gen0 materialisiert, bevor irgendeines davon inspiziert wird. Es gibt keine Remotecodeausführung und keine Auswirkung auf die Integrität, daher der mittlere CVSS-Wert von 5.3, aber ein stetiger Strom manipulierter Anfragen legt den GC lahm und blockiert den Server. Die CWE-Klassifikation lautet CWE-789: Memory Allocation with Excessive Size Value, und die Korrektur in 1.15.3 begrenzt den Parser vor dem Trennzeichen-Split.

Wo das in einer typischen .NET-Anwendung trifft

Jeder Code, der AddOpenTelemetry().WithTracing() aufruft und einen Propagator aus eingehendem HTTP akzeptiert, ist im Geltungsbereich. Dazu zählen die Standard-AppHosts von Aspire, die übliche Verdrahtung über OpenTelemetry.Extensions.Hosting sowie die neuen Standardwerte von Microsoft.Extensions.Telemetry, die baggage standardmäßig aktivieren:

builder.Services.AddOpenTelemetry()
    .WithTracing(tracing => tracing
        .AddAspNetCoreInstrumentation()
        .AddSource("OrderService")
        .AddOtlpExporter());

// Aspire 13.2 ServiceDefaults wire the same propagators in by default.
// builder.AddServiceDefaults() pulls in baggage + W3C tracecontext.

Der Aufruf von AddAspNetCoreInstrumentation registriert eine Kette von TextMapPropagator, die bei jeder eingehenden Anfrage läuft. Es ist kein Opt-in nötig, damit der Bug erreichbar ist; die Parser laufen bedingungslos, sobald ein passender Header vorliegt.

Der minimal nötige Patch

Für Aspire-Nutzer: aspire stop auf dem laufenden AppHost und das Paket auf 13.2.4 fixieren:

dotnet workload update
dotnet add package Aspire.AppHost --version 13.2.4
dotnet add package Aspire.ServiceDefaults --version 13.2.4

Für Projekte, die OpenTelemetry direkt referenzieren, sind die relevanten Zeilen:

<PackageReference Include="OpenTelemetry.Api" Version="1.15.3" />
<PackageReference Include="OpenTelemetry.Extensions.Propagators" Version="1.15.3" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.15.3" />

Transitive Referenzen zählen. Führen Sie nach dem Update dotnet list package --include-transitive --vulnerable aus, um zu bestätigen, dass keine Ihrer indirekten Abhängigkeiten noch ein OpenTelemetry.Api vor 1.15.3 zieht. Wenn Sie hinter einem WAF betreiben, empfiehlt der Advisory, die Header baggage, b3 und uber-trace-id als zusätzliche Verteidigungsschicht auf 1024 Zeichen zu begrenzen, doch die eigentliche Korrektur ist das Paket-Update.

Dass Aspire in derselben Woche einen Patch für ein Upstream-CVE von OpenTelemetry liefert, ist ein nützliches Signal: Der SDK-Pin in Aspire.ServiceDefaults ist nichts mehr, was Sie bis zur nächsten Minor-Version ignorieren können. Behandeln Sie 13.2.x-Patch-Releases wie Servicing-Updates für ASP.NET Core.

< Zurück