
Análisis defensivo de CVE-2026-77680, un DoS por complejidad algorítmica en HTTP Range de libsoup: desglose de CVSS, mapeo de la kill chain, detección y guía de remediación.
Evaluación: Gravedad media · CVSS v3.1: 5.3 · Impacto principal: Disponibilidad (agotamiento de CPU / denegación de servicio)
Este repositorio documenta el comportamiento técnico, el riesgo, la remediación y un mapeo de Cyber Kill Chain para CVE-2026-77680, una falla de complejidad algorítmica en el procesamiento del encabezado HTTP Range de libsoup.
CVE-2026-77680 es una vulnerabilidad de denegación de servicio en la lógica de coalescencia de HTTP Range en libsoup. En las versiones afectadas, procesar muchos rangos de bytes repetidos y satisfacibles puede desencadenar un trabajo cuadrático. El problema persiste tras la corrección anterior de CVE-2025-32907, porque el código de coalescencia seguía eliminando elementos del arreglo de uno en uno; cada eliminación puede desplazar los elementos restantes en memoria.
Un atacante remoto y no autenticado puede enviar una solicitud HTTP manipulada a una aplicación servidor que utilice la ruta afectada de SoupServer. Bajo las condiciones vulnerables, el procesamiento de la solicitud puede consumir un tiempo de CPU desproporcionado y retrasar otras solicitudes. El impacto reportado es únicamente sobre la disponibilidad; este problema no se describe como corrupción de memoria ni divulgación de información.
La corrección upstream reemplaza la eliminación repetida de elementos por una compactación in situ en tiempo lineal y rechaza los encabezados Range que solicitan más de 200 rangos. Los operadores deben instalar la actualización de seguridad correspondiente del proveedor en lugar de depender únicamente de una solución perimetral.
| Campo | Detalles |
|---|---|
| CVE | CVE-2026-77680 |
| Componente | GNOME libsoup (biblioteca HTTP) |
| Debilidad | CWE-407 — Complejidad algorítmica ineficiente |
| Gravedad | Media |
| CVSS v3.1 | 5.3 |
| Vector CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L |
| Requisitos previos del ataque | Acceso de red a un servicio afectado; no se requiere autenticación ni interacción del usuario |
| Impacto principal | Agotamiento de CPU y reducción de la disponibilidad del servicio |
| Problema relacionado | CVE-2025-32907 |
| Corrección upstream | Merge request !550 de GNOME libsoup |
Las solicitudes de rangos de bytes HTTP permiten a un cliente solicitar porciones seleccionadas de un recurso. En la ruta de código vulnerable, libsoup coalesce rangos superpuestos o duplicados. Eliminar un elemento del medio de un GArray contiguo puede requerir desplazar los elementos restantes. Repetir esa operación mientras se procesan muchos rangos puede producir un trabajo O(n²) en lugar de un trabajo lineal.
La ruta del lado del servidor reportada incluye handle_partial_get() en libsoup/server/http1/soup-server-message-io-http1.c, con el análisis y la coalescencia de rangos en soup_message_headers_get_ranges_internal() en libsoup/soup-message-headers.c. El problema es relevante cuando una aplicación utiliza la ruta del servidor afectada y devuelve una respuesta adecuada con un cuerpo no vacío.
El número de rangos puede estar limitado por los límites de los encabezados de solicitud en lugar de por un tope suficientemente bajo en la cantidad de rangos. En consecuencia, una sola solicitud puede provocar un procesamiento excesivo, y las solicitudes repetidas pueden amplificar el impacto sobre la disponibilidad. El impacto exacto depende de la versión desplegada, los límites de solicitudes, el comportamiento de la aplicación y la capacidad del servidor.
La puntuación CVSS v3.1 publicada es 5.3 (Media).
Una puntuación base Media no significa que el problema pueda ignorarse: la exposición a internet, la infraestructura compartida y las solicitudes repetidas pueden hacer que la disponibilidad del servicio sea operativamente importante.
No inferir vulnerabilidad por la sola presencia de libsoup. Confirmar la compilación específica del paquete y si se ha aplicado la corrección.
La Cyber Kill Chain de Lockheed Martin es un modelo orientado a la intrusión. Esta asignación adapta sus etapas a un escenario de denegación de servicio; no todas las etapas representan un paso separado o necesario para esta vulnerabilidad.
| Etapa | Posible actividad en este escenario | Oportunidades defensivas |
|---|---|---|
| 1. Reconocimiento | Identificar una aplicación accesible e inferir su pila HTTP o su comportamiento. | Reducir la exposición innecesaria; mantener inventarios de activos y software; evitar divulgar información de versión innecesaria. |
| 2. Armamentización | Preparar una solicitud HTTP con un número excesivo de valores Range repetidos o superpuestos. | Aplicar el parche a la biblioteca; validar y limitar el número de rangos; aplicar límites seguros de análisis de solicitudes. |
| 3. Entrega | Enviar la solicitud manipulada a un servicio expuesto. | Usar controles de red, protecciones de proxy inverso, límites de conexión y controles de tasa de solicitudes. |
| 4. Explotación | Desencadenar un trabajo costoso de coalescencia de rangos en una ruta de servidor vulnerable. | Desplegar la corrección del proveedor/upstream; rechazar rangos excesivos antes del procesamiento costoso. |
| 5. Instalación | Normalmente no aplicable: se trata de un fallo de agotamiento de recursos y no instala malware por sí mismo. | Monitorizar actividad posterior; no asumir que una interrupción del servicio implica compromiso del host. |
| 6. Comando y control | No es necesario para el comportamiento básico de DoS. Se podría usar una botnet o un controlador remoto para coordinar tráfico repetido, pero eso no es intrínseco a la CVE. | Correlacionar el tráfico entre fuentes; aplicar protecciones DDoS upstream cuando corresponda. |
| 7. Acciones sobre los objetivos | Degradar los tiempos de respuesta o denegar el acceso de usuarios legítimos al servicio. | Monitorizar la disponibilidad y la CPU; preservar los registros; aplicar procedimientos de respuesta a incidentes y recuperación. |