
Analyse défensive de CVE-2026-77680, un déni de service par complexité algorithmique dans la gestion des requêtes HTTP Range de libsoup : décomposition du score CVSS, cartographie de la chaîne d'attaque, détection et recommandations de remédiation.
Évaluation : Sévérité moyenne · CVSS v3.1 : 5.3 · Impact principal : Disponibilité (épuisement du CPU / déni de service)
Ce dépôt documente le comportement technique, le risque, la remédiation et une cartographie Cyber Kill Chain pour CVE-2026-77680, une faille de complexité algorithmique dans le traitement de l'en-tête HTTP Range de libsoup.
CVE-2026-77680 est une vulnérabilité de déni de service dans la logique de fusion des plages HTTP Range de libsoup. Dans les versions affectées, le traitement de nombreuses plages d'octets répétées et satisfaisables peut déclencher un travail quadratique. Le problème persiste après le correctif antérieur CVE-2025-32907, car le code de fusion supprimait toujours les éléments du tableau individuellement ; chaque suppression peut déplacer les éléments restants en mémoire.
Un attaquant distant et non authentifié peut envoyer une requête HTTP forgée à une application serveur utilisant le chemin SoupServer affecté. Dans les conditions vulnérables, le traitement de la requête peut consommer un temps CPU disproportionné et retarder les autres requêtes. L'impact signalé concerne uniquement la disponibilité ; ce problème n'est pas décrit comme une corruption de mémoire ou une divulgation d'informations.
Le correctif amont remplace la suppression répétée d'éléments par une compaction en place en temps linéaire et rejette les en-têtes Range demandant plus de 200 plages. Les opérateurs doivent installer la mise à jour de sécurité appropriée du fournisseur plutôt que de se fier uniquement à un contournement périmétrique.
| Champ | Détails |
|---|---|
| CVE | CVE-2026-77680 |
| Composant | GNOME libsoup (bibliothèque HTTP) |
| Faiblesse | CWE-407 — Complexité algorithmique inefficace |
| Sévérité | Moyenne |
| CVSS v3.1 | 5.3 |
| Vecteur CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L |
| Prérequis d'attaque | Accès réseau à un service affecté ; aucune authentification ni interaction utilisateur requise |
| Impact principal | Épuisement du CPU et disponibilité réduite du service |
| Problème lié | CVE-2025-32907 |
| Correctif amont | Merge request GNOME libsoup !550 |
Les requêtes HTTP par plages d'octets permettent à un client de demander des portions sélectionnées d'une ressource. Dans le chemin de code vulnérable, libsoup fusionne les plages chevauchantes ou dupliquées. Supprimer un élément au milieu d'un GArray contigu peut nécessiter de décaler les éléments restants. Répéter cette opération lors du traitement de nombreuses plages peut produire un travail en O(n²) plutôt qu'un travail linéaire.
Le chemin côté serveur signalé inclut handle_partial_get() dans libsoup/server/http1/soup-server-message-io-http1.c, avec l'analyse et la fusion des plages dans soup_message_headers_get_ranges_internal() dans libsoup/soup-message-headers.c. Le problème est pertinent lorsqu'une application utilise le chemin serveur affecté et renvoie une réponse appropriée avec un corps non vide.
Le nombre de plages peut être limité par les limites d'en-têtes de requête plutôt que par un plafond suffisamment bas du nombre de plages. Par conséquent, une seule requête peut provoquer un traitement excessif, et des requêtes répétées peuvent amplifier l'impact sur la disponibilité. L'impact exact dépend de la version déployée, des limites de requêtes, du comportement de l'application et de la capacité du serveur.
Le score CVSS v3.1 publié est de 5.3 (Moyen).
Un score de base Moyen ne signifie pas que le problème peut être ignoré : l'exposition à Internet, les infrastructures partagées et les requêtes répétées peuvent rendre la disponibilité du service opérationnellement importante.
Ne pas déduire la vulnérabilité de la seule présence de libsoup. Confirmer la compilation spécifique du paquet et si le correctif a été appliqué.
La Cyber Kill Chain de Lockheed Martin est un modèle orienté intrusion. Cette mise en correspondance adapte ses étapes à un scénario de déni de service ; toutes les étapes ne représentent pas une étape distincte ou nécessaire pour cette vulnérabilité.
| Étape | Activité possible dans ce scénario | Opportunités défensives |
|---|---|---|
| 1. Reconnaissance | Identifier une application accessible et déduire sa pile HTTP ou son comportement. | Réduire l'exposition inutile ; maintenir des inventaires d'actifs et de logiciels ; éviter de divulguer des informations de version inutiles. |
| 2. Weaponization | Préparer une requête HTTP avec un nombre excessif de valeurs Range répétées ou chevauchantes. | Corriger la bibliothèque ; valider et plafonner le nombre de plages ; appliquer des limites sûres d'analyse des requêtes. |
| 3. Delivery | Envoyer la requête forgée à un service exposé. | Utiliser des contrôles réseau, des protections de proxy inverse, des limites de connexion et des contrôles de débit de requêtes. |
| 4. Exploitation | Déclencher un travail coûteux de fusion de plages dans un chemin serveur vulnérable. | Déployer le correctif du fournisseur/amont ; rejeter les plages excessives avant tout traitement coûteux. |
| 5. Installation | Généralement non applicable : il s'agit d'une faille d'épuisement de ressources qui n'installe pas elle-même de logiciel malveillant. | Surveiller toute activité consécutive ; ne pas supposer qu'une perturbation de service implique une compromission de l'hôte. |
| 6. Command and Control | Non requis pour le comportement DoS de base. Un botnet ou un contrôleur distant pourrait être utilisé pour coordonner un trafic répété, mais cela n'est pas intrinsèque à la CVE. | Corréler le trafic entre les sources ; appliquer des protections DDoS en amont le cas échéant. |
| 7. Actions on Objectives | Détériorer les temps de réponse ou empêcher les utilisateurs légitimes d'accéder au service. | Surveiller la disponibilité et le CPU ; conserver les journaux ; appliquer les procédures de réponse aux incidents et de rétablissement. |