Aspire 13.2.4 corrige CVE-2026-40894: DoS por encabezado baggage en OpenTelemetry .NET
Aspire 13.2.4 incluye una actualización de OpenTelemetry para CVE-2026-40894, una amplificación de asignaciones en Gen0 al analizar los propagadores baggage, B3 y Jaeger. Actualiza OpenTelemetry.Api y OpenTelemetry.Extensions.Propagators a 1.15.3 incluso si no usas Aspire.
Aspire 13.2.4 se publicó el 24 de abril con una sola línea que importa: “Bumped OpenTelemetry dependencies to address CVE-2026-40894.” El aviso en sí, registrado contra open-telemetry/opentelemetry-dotnet, es la mitad más interesante de la historia. Se trata de una amplificación de asignaciones en Gen0 dentro del código de análisis de los propagadores, y aparece en OpenTelemetry.Api y OpenTelemetry.Extensions.Propagators desde la versión 0.5.0-beta.2 hasta cualquier versión anterior a 1.15.3. Si estás en una línea reciente de Aspire 13.2, el parche llega al actualizar. Si usas ASP.NET Core sin Aspire con un cableado manual de OpenTelemetry, tienes que actualizar los paquetes tú mismo.
Cómo una cadena de comas se convierte en una tormenta de Gen0
Las rutas de código vulnerables viven en los analizadores del encabezado W3C baggage y de los encabezados heredados b3 y uber-trace-id (Jaeger). Los tres dividen por delimitadores antes de validar la longitud, así que la asignación escala linealmente con el número de caracteres separadores, no con la cantidad de datos reales. Una sola solicitud entrante como
GET /orders/42 HTTP/1.1
Host: api.example.com
baggage: ,,,,,,,,,,,,,,,,,,,,,,,,,,,,, [...5000 commas...]
hace que el framework materialice miles de objetos string vacíos en Gen0 antes de que ninguno sea inspeccionado. No hay ejecución remota de código ni impacto en la integridad, de ahí la puntuación CVSS media de 5.3, pero un goteo constante de solicitudes manipuladas saturará el GC y bloqueará el servidor. La clasificación CWE es CWE-789: Memory Allocation with Excessive Size Value, y la corrección en 1.15.3 limita el analizador antes de la división por delimitadores.
Dónde golpea esto en una aplicación .NET típica
Cualquier código que llame a AddOpenTelemetry().WithTracing() y acepte un propagador de HTTP entrante está en el alcance. Eso incluye los AppHosts predeterminados de Aspire, el cableado estándar de OpenTelemetry.Extensions.Hosting y los nuevos valores predeterminados de Microsoft.Extensions.Telemetry que activan baggage por defecto:
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.
La llamada a AddAspNetCoreInstrumentation registra una cadena de TextMapPropagator que se ejecuta en cada solicitud entrante. No se necesita ningún opt-in para que el bug sea alcanzable; los analizadores se ejecutan incondicionalmente en cuanto aparece un encabezado coincidente.
El parche mínimo viable
Para usuarios de Aspire, aspire stop sobre el AppHost en ejecución y fija el paquete a 13.2.4:
dotnet workload update
dotnet add package Aspire.AppHost --version 13.2.4
dotnet add package Aspire.ServiceDefaults --version 13.2.4
Para proyectos que referencian OpenTelemetry directamente, las líneas relevantes son:
<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" />
Las referencias transitivas cuentan. Ejecuta dotnet list package --include-transitive --vulnerable después de la actualización para confirmar que ninguna de tus dependencias indirectas siga arrastrando un OpenTelemetry.Api previo a 1.15.3. Si operas detrás de un WAF, el aviso sugiere limitar los encabezados baggage, b3 y uber-trace-id a 1024 caracteres como capa de defensa en profundidad, pero la corrección real es la actualización del paquete.
Que Aspire publique un parche en la misma semana para un CVE upstream de OpenTelemetry es una señal útil: el pin del SDK en Aspire.ServiceDefaults ya no es algo que puedas ignorar hasta la siguiente versión menor. Trata las versiones 13.2.x del mismo modo que tratas las actualizaciones de mantenimiento de ASP.NET Core.