Rapport CTI technique du 20 août 2026
Résumé exécutif
CVE-2026-8037 est une vulnérabilité d'injection de commande pré-authentification affectant Progress Kemp LoadMaster, un load balancer et contrôleur de livraison d'applications déployé en bordure de nombreux réseaux d'entreprise. Le défaut, noté 9.6 sur l'échelle CVSS, permet à un attaquant non authentifié d'exécuter des commandes arbitraires sur l'appliance dès lors que l'API est activée. CISA l'a ajoutée à son catalogue Known Exploited Vulnerabilities le 7 août 2026, après que la société de threat intelligence KEVIntel a recensé 792 tentatives d'exploitation en 41 jours, provenant de 65 adresses IP réparties dans 18 pays.
Le mécanisme sous-jacent est instructif pour quiconque audite du code C d'appliance réseau. Le correctif publié par Progress ne modifie qu'une seule fonction, escape_quotes(), sans ajouter le moindre caractère à la liste des symboles échappés. La faille ne tient donc pas à un défaut de filtrage classique mais à un buffer heap alloué avec malloc() jamais initialisé et jamais terminé par un octet nul, ce qui permet à sprintf() de continuer sa lecture bien au-delà des données prévues et de récupérer, dans un chunk mémoire libéré voisin, une charge utile préalablement pulvérisée par l'attaquant via le parseur JSON de l'API.
Chronologie
| Date | Événement |
|---|---|
| 4 juin 2026 | Progress publie l'avis de sécurité et le correctif pour CVE-2026-8037 (LoadMaster GA 7.2.63.2, LTSF 7.2.54.18) |
| 29 juin 2026 | Début observé de l'exploitation active selon watchTowr Labs, qui publie son analyse technique le jour même |
| Juillet 2026 | eSentire signale des tentatives d'exploitation en cours, majoritairement infructueuses |
| 4 août 2026 | Dernière vague d'activité recensée par KEVIntel : cinq tentatives en une journée |
| 7 août 2026 | CISA ajoute CVE-2026-8037 au catalogue KEV, avec échéance de correction au 10 août pour les agences fédérales (BOD 26-04) |
| 20 août 2026 | Total cumulé de 792 tentatives d'exploitation documentées depuis 65 IP distinctes dans 18 pays |
Fiche vulnérabilité
CVE-2026-8037 | CVSS 9.6 | Progress Kemp LoadMaster, API accessible
Injection de commande OS pré-authentification (CWE-77) rendue exploitable par une lecture hors limites sur segment libéré du tas (CWE-457, use of uninitialized resource ; apparenté à CWE-825, expired pointer dereference sur chunk réutilisé). Versions affectées : LoadMaster GA 7.2.63.1 et antérieures, LoadMaster LTSF 7.2.54.17 et antérieures, lorsque l'API de gestion est exposée. Découverte attribuée à Syed Ibrahim Ahmed (TrendAI Research), publiée sous la référence ZDI-26-342.
Conditions d'exploitation : accès réseau à l'endpoint /accessv2 de l'API, aucune authentification requise, aucune interaction utilisateur. La complexité d'exploitation est réelle mais documentée en détail par watchTowr Labs, qui a publié une preuve de concept complète le 29 juin 2026 : PoC disponible, oui, source watchTowr Labs. Patch disponible depuis le 4 juin 2026 (LoadMaster GA 7.2.63.2, LTSF 7.2.54.18) ; à défaut de mise à jour immédiate, restreindre l'accès réseau à l'API sur liste blanche d'IP constitue la seule mitigation partielle documentée.
Diagramme de la chaîne d'attaque
Analyse technique

Étape 1 : un correctif qui ne change presque rien
La fonction escape_quotes() sert à neutraliser les apostrophes dans les valeurs apiuser et apipass avant leur insertion dans une commande shell du type validuser -u '' -p ''. Avant le 4 juin, elle allouait son buffer de sortie avec malloc() et ne posait aucun octet nul de fin après l'expansion des apostrophes échappées. Le correctif se limite à deux changements : remplacer malloc() par calloc() (buffer zérotté par défaut) et écrire explicitement un octet nul après la dernière écriture. Aucun caractère supplémentaire n'est ajouté à la liste des symboles filtrés, ce qui a immédiatement mis la puce à l'oreille des chercheurs de watchTowr : le bug n'était pas un défaut de filtrage, mais un défaut de terminaison de chaîne.
Étape 2 : ce que révèle un chunk de tas non initialisé
Quand malloc() réutilise un chunk précédemment libéré, il ne l'efface pas. Les premiers octets contiennent encore les métadonnées de l'allocateur (pointeur tcache next, clé de protection anti double-free) suivis des données de l'ancien occupant du chunk. Si le buffer résultant n'est jamais explicitement terminé par un octet nul, toute fonction qui le traite comme une chaîne C, ici sprintf() via __sprintf_chk(), continuera de lire au-delà de la frontière logique du buffer jusqu'à tomber sur un octet nul, où qu'il se trouve en mémoire.
Étape 3 : effacer les métadonnées et pulvériser la charge utile
L'endpoint /accessv2 accepte un corps JSON avec les champs apiuser et apipass. En envoyant quatre apostrophes comme valeur d'apiuser, l'attaquant déclenche l'expansion d'échappement : chaque apostrophe devient la séquence de quatre octets '\''. Quatre apostrophes produisent donc seize octets, exactement la taille des métadonnées d'allocateur situées en tête du chunk libéré adjacent. En parallèle, la requête ajoute des dizaines de clés JSON supplémentaires (g0, g1, g2...) contenant chacune une charge du type AAAA...'; cat /etc/passwd #, dans le but de pulvériser cette charge sur le tas et d'augmenter la probabilité qu'une copie atterrisse juste après le chunk réservé à apiuser.
Étape 4 : concaténation et exécution via system()
Lorsque le chunk pulvérisé se positionne au bon endroit, __sprintf_chk() construit la commande finale en lisant le buffer apiuser échappé, dépasse sa frontière faute d'octet nul, traverse les seize octets de métadonnées désormais écrasés par les apostrophes échappées, puis continue dans le chunk voisin jusqu'à rencontrer la charge injectée. La commande complète, incluant le point-virgule et la commande arbitraire de l'attaquant, est alors passée telle quelle à system(). Résultat : exécution de commande arbitraire avec les privilèges du processus API, sans authentification.
Indicateurs de compromission
| Type | Valeur |
|---|---|
| IP attaquante | 192.42.116[.]58 |
| IP attaquante | 192.42.116[.]105 |
| IP attaquante | 146.70.139[.]154 |
| Endpoint ciblé | POST /accessv2 |
| Motif de requête | Corps JSON avec apiuser contenant des séquences d'apostrophes répétées et clés supplémentaires (g0, g1, g2...) porteuses de charges shell |
| Volume observé | 792 tentatives, 65 IP sources, 18 pays, sur 41 jours (source KEVIntel) |
MITRE ATT&CK
Aucune cartographie officielle de l'acteur ou de la campagne n'a été publiée par CISA ou par les vendeurs cités ; le tableau suivant reflète une lecture technique de la chaîne d'exploitation, pas une attribution.
| Tactique | Technique | ID | Justification |
|---|---|---|---|
| Initial Access | Exploit Public-Facing Application | T1190 | Endpoint API /accessv2 exposé sans authentification |
| Execution | Command and Scripting Interpreter: Unix Shell | T1059.004 | Commande injectée exécutée via system() côté appliance |
| Defense Evasion | Obfuscated Files or Information | T1027 | Encodage/pulvérisation JSON pour placer la charge en mémoire hors du corps de requête visible |
| Discovery | System Information Discovery | T1082 | Commande de démonstration cat /etc/passwd utilisée dans les PoC publics |
Remédiation : checklist opérationnelle
- Mettre à jour immédiatement vers LoadMaster GA 7.2.63.2 ou LTSF 7.2.54.18 (ou versions ultérieures).
- Si la mise à jour ne peut être appliquée sous 24 à 48h, désactiver l'accès à l'API de gestion depuis Internet et le restreindre à un réseau d'administration dédié.
- Auditer les journaux d'accès à /accessv2 sur les 41 derniers jours pour rechercher des corps de requête JSON contenant des séquences d'apostrophes multiples ou un nombre anormal de clés (g0, g1, g2...).
- Comparer les IP sources des connexions à l'API avec la liste d'IOC publiée par KEVIntel et watchTowr Labs.
- Pour les entités fédérales américaines soumises à BOD 26-04, documenter la conformité au correctif au regard de l'échéance du 10 août 2026 déjà dépassée.
- En cas de suspicion de compromission antérieure au patch, considérer l'appliance comme potentiellement compromise et procéder à une réinitialisation complète plutôt qu'à un simple correctif à chaud.
Sources
- watchTowr Labs : Enterprise Tech In, Shell Out (CVE-2026-8037)
- The Hacker News : Progress Kemp LoadMaster Flaw Hits CISA KEV After 792 Reported Exploit Attempts
- The Hacker News : Latest Progress Kemp LoadMaster Pre-Auth RCE Flaw Faces Active Exploitation Attempts
- CISA : Known Exploited Vulnerabilities Catalog
- KEVIntel : CVE-2026-8037 telemetry