Aspire 13.2.4 が CVE-2026-40894 を修正: OpenTelemetry .NET の baggage ヘッダー DoS
Aspire 13.2.4 は CVE-2026-40894 に対応する OpenTelemetry の更新を含みます。baggage、B3、Jaeger プロパゲーターのパースで Gen0 のアロケーションが増幅される問題です。Aspire を使っていなくても OpenTelemetry.Api と OpenTelemetry.Extensions.Propagators を 1.15.3 に更新してください。
Aspire 13.2.4 は 4 月 24 日にリリースされました。重要な行はひとつだけです: “Bumped OpenTelemetry dependencies to address CVE-2026-40894.” open-telemetry/opentelemetry-dotnet に対して登録された アドバイザリーそのものが、より興味深い半分です。プロパゲーターのパースコードに存在する Gen0 のアロケーション増幅で、OpenTelemetry.Api と OpenTelemetry.Extensions.Propagators のバージョン 0.5.0-beta.2 から 1.15.3 未満のすべてのリリースに含まれています。最近の Aspire 13.2 ラインを使っているなら、アップグレードでパッチが入ります。Aspire を使わずに ASP.NET Core で OpenTelemetry を手で組み立てている場合、自分でパッケージを更新する必要があります。
カンマだけの文字列がどのように Gen0 の嵐を引き起こすか
脆弱なコードパスは W3C の baggage ヘッダーと、レガシーの b3 および uber-trace-id (Jaeger) ヘッダーのパーサーにあります。3 つとも長さを検証する前に区切り文字で分割するため、アロケーションは実データの量ではなく区切り文字の数に対して線形にスケールします。次のような単一の受信リクエスト
GET /orders/42 HTTP/1.1
Host: api.example.com
baggage: ,,,,,,,,,,,,,,,,,,,,,,,,,,,,, [...5000 commas...]
を送るだけで、フレームワークはどれも検査される前に Gen0 で空の string オブジェクトを数千個マテリアライズします。リモートコード実行も整合性への影響もないため CVSS は中レベルの 5.3 ですが、加工されたリクエストが継続的に届けば GC を圧迫してサーバーを止めます。CWE 分類は CWE-789: Memory Allocation with Excessive Size Value で、1.15.3 の修正は区切り文字での分割前にパーサーの上限を設けます。
一般的な .NET アプリのどこに当たるか
AddOpenTelemetry().WithTracing() を呼び出して受信 HTTP からプロパゲーターを受け取るコードはすべて影響を受けます。これには Aspire のデフォルト AppHost、標準的な OpenTelemetry.Extensions.Hosting の配線、baggage を既定で有効にする新しい Microsoft.Extensions.Telemetry のデフォルトが含まれます。
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.
AddAspNetCoreInstrumentation の呼び出しは、受信リクエストごとに走る TextMapPropagator のチェーンを登録します。バグに到達するためのオプトインは不要で、対応するヘッダーが存在すればパーサーは無条件に走ります。
必要最小限のパッチ
Aspire ユーザーは、起動中の AppHost に対して aspire stop を実行し、パッケージを 13.2.4 に固定します。
dotnet workload update
dotnet add package Aspire.AppHost --version 13.2.4
dotnet add package Aspire.ServiceDefaults --version 13.2.4
OpenTelemetry を直接参照しているプロジェクトでは、関連する行は次のとおりです。
<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" />
推移的な参照も対象です。アップデート後に dotnet list package --include-transitive --vulnerable を実行し、間接依存のいずれもが 1.15.3 より前の OpenTelemetry.Api を引き込んでいないことを確認してください。WAF の背後で運用しているなら、アドバイザリーは多層防御として baggage、b3、uber-trace-id ヘッダーを 1024 文字に制限することを推奨していますが、本当の修正はパッケージのアップデートです。
Aspire が OpenTelemetry の上流 CVE に同じ週でパッチを出してきたのは、Aspire.ServiceDefaults の SDK ピンを次のマイナーリリースまで放置できる時代は終わったという有用なシグナルです。13.2.x のパッチリリースは ASP.NET Core の servicing アップデートと同じ扱いにしてください。