
Análise defensiva da CVE-2026-77680, uma DoS de complexidade algorítmica no HTTP Range do libsoup: detalhamento do CVSS, mapeamento da kill chain, orientações de detecção e remediação.
Avaliação: Severidade média · CVSS v3.1: 5.3 · Impacto principal: Disponibilidade (esgotamento de CPU / negação de serviço)
Este repositório documenta o comportamento técnico, o risco, a remediação e um mapeamento da Cyber Kill Chain para CVE-2026-77680, uma falha de complexidade algorítmica no processamento do cabeçalho HTTP Range do libsoup.
CVE-2026-77680 é uma vulnerabilidade de negação de serviço na lógica de coalescência de HTTP Range no libsoup. Nas versões afetadas, o processamento de muitos intervalos de bytes repetidos e satisfazíveis pode desencadear trabalho quadrático. O problema persiste após a correção anterior do CVE-2025-32907, porque o código de coalescência ainda removia elementos do array individualmente; cada remoção pode mover os elementos restantes na memória.
Um atacante remoto e não autenticado pode enviar uma requisição HTTP especialmente construída a uma aplicação servidora que utilize o caminho afetado do SoupServer. Sob as condições vulneráveis, o processamento da requisição pode consumir tempo de CPU desproporcional e atrasar outras requisições. O impacto relatado é apenas de disponibilidade; este problema não é descrito como corrupção de memória ou divulgação de informações.
A correção upstream substitui a remoção repetida de elementos por compactação in-place em tempo linear e rejeita cabeçalhos Range que solicitem mais de 200 intervalos. Os operadores devem instalar a atualização de segurança apropriada do fornecedor em vez de confiar apenas em uma solução de contorno no perímetro.
| Campo | Detalhes |
|---|---|
| CVE | CVE-2026-77680 |
| Componente | GNOME libsoup (biblioteca HTTP) |
| Fraqueza | CWE-407 — Complexidade Algorítmica Ineficiente |
| Severidade | Média |
| CVSS v3.1 | 5.3 |
| Vetor CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L |
| Pré-requisitos de ataque | Acesso de rede a um serviço afetado; nenhuma autenticação ou interação do usuário necessária |
| Impacto principal | Esgotamento de CPU e redução da disponibilidade do serviço |
| Problema relacionado | CVE-2025-32907 |
| Correção upstream | Merge request !550 do GNOME libsoup |
Requisições HTTP de intervalo de bytes permitem que um cliente solicite porções selecionadas de um recurso. No caminho de código vulnerável, o libsoup faz a coalescência de intervalos sobrepostos ou duplicados. Remover um elemento do meio de um GArray contíguo pode exigir o deslocamento dos elementos restantes. Repetir essa operação durante o processamento de muitos intervalos pode produzir trabalho O(n²) em vez de trabalho linear.
O caminho do lado do servidor relatado inclui handle_partial_get() em libsoup/server/http1/soup-server-message-io-http1.c, com análise/coalescência de intervalos em soup_message_headers_get_ranges_internal() em libsoup/soup-message-headers.c. O problema é relevante quando uma aplicação utiliza o caminho de servidor afetado e retorna uma resposta adequada com corpo não vazio.
O número de intervalos pode ser limitado por limites de cabeçalho de requisição, em vez de um limite suficientemente baixo de contagem de intervalos. Consequentemente, uma única requisição pode causar processamento excessivo, e requisições repetidas podem amplificar o impacto na disponibilidade. O impacto exato depende da versão implantada, dos limites de requisição, do comportamento da aplicação e da capacidade do servidor.
A pontuação CVSS v3.1 publicada é 5.3 (Média).
Uma pontuação base Média não significa que o problema possa ser ignorado: exposição à internet, infraestrutura compartilhada e requisições repetidas podem tornar a disponibilidade do serviço operacionalmente importante.
Não inferir vulnerabilidade apenas pela presença do libsoup. Confirme a build específica do pacote e se a correção foi aplicada.
A Cyber Kill Chain da Lockheed Martin é um modelo orientado a intrusão. Este mapeamento adapta seus estágios a um cenário de negação de serviço; nem todo estágio representa uma etapa separada ou necessária para esta vulnerabilidade.
| Estágio | Atividade possível neste cenário | Oportunidades defensivas |
|---|---|---|
| 1. Reconhecimento | Identificar uma aplicação acessível e inferir sua pilha HTTP ou comportamento. | Reduzir exposição desnecessária; manter inventários de ativos e software; evitar divulgar informações de versão desnecessárias. |
| 2. Armamentização | Preparar uma requisição HTTP com um número excessivo de valores Range repetidos ou sobrepostos. | Aplicar o patch na biblioteca; validar e limitar a contagem de ranges; aplicar limites seguros de parsing de requisições. |
| 3. Entrega | Enviar a requisição elaborada a um serviço exposto. | Usar controles de rede, proteções de proxy reverso, limites de conexão e controles de taxa de requisições. |
| 4. Exploração | Acionar trabalho custoso de coalescência de ranges em um caminho de servidor vulnerável. | Implantar a correção do fornecedor/upstream; rejeitar ranges excessivos antes do processamento custoso. |
| 5. Instalação | Normalmente não aplicável: esta é uma falha de esgotamento de recursos e não instala malware por si só. | Monitorar atividades subsequentes; não presumir que a interrupção do serviço implique comprometimento do host. |
| 6. Comando e Controle | Não necessário para o comportamento básico de DoS. Uma botnet ou controlador remoto poderia ser usado para coordenar tráfego repetido, mas isso não é intrínseco à CVE. | Correlacionar tráfego entre fontes; aplicar proteções DDoS upstream quando apropriado. |
| 7. Ações sobre Objetivos | Degradar tempos de resposta ou negar o acesso de usuários legítimos ao serviço. | Monitorar disponibilidade e CPU; preservar logs; aplicar procedimentos de resposta a incidentes e recuperação. |
O resultado principal é degradação do serviço ou negação de serviço, não execução de código. Essa distinção importa para a triagem: priorize controles de disponibilidade e aplicação de patches, enquanto ainda verifica logs e telemetria em busca de quaisquer indicadores separados de comprometimento.