News

Squidbleed CVE-2026-47729 : un bug de 1997 dans Squid expose les requêtes HTTP des autres utilisateurs

CVE-2026-47729 (Squidbleed) : un bug de 1997 dans Squid expose les requêtes HTTP d'autres utilisateurs au niveau du proxy. Le PoC est public.
Sara Amin
Marketing Student • Content & Writing Enthusiast

Des chercheurs de Calif.io ont divulgué en juin 2026 une vulnérabilité dans Squid, le proxy web open-source parmi les plus répandus dans les environnements réseau d'entreprise, d'enseignement et de Wi-Fi public. La faille, référencée CVE-2026-47729 et baptisée Squidbleed par ses découvreurs en référence à Heartbleed, permet à un attaquant déjà autorisé à utiliser le proxy de récupérer une requête HTTP en clair envoyée par un autre utilisateur du même proxy, y compris les credentials ou tokens de session qu'elle transporte. Le bug remonte à une modification du code d'analyse FTP datant de 1997 et demeure actif dans la configuration par défaut de Squid. Un proof-of-concept est publiquement disponible depuis la divulgation, et aucune exploitation dans la nature n'avait été documentée au moment de la publication.

Un bug de 29 ans : l'origine de CVE-2026-47729

CVE-2026-47729 trouve son origine dans une modification apportée au parseur de listes de répertoires FTP de Squid en 1997, pour gérer la compatibilité avec des serveurs NetWare anciens qui ajoutaient des espaces supplémentaires dans leurs réponses de liste de répertoires. La modification introduisait une boucle de saut de caractères d'espacement dont le comportement de terminaison était défectueux dans un cas limite spécifique : lorsqu'une ligne de listing FTP se termine immédiatement après l'horodatage, sans nom de fichier.

Ce cas limite n'a pas été identifié comme problème de sécurité pendant 29 ans. Le code a survécu aux multiples versions majeures de Squid sans que le bug soit détecté lors des révisions de code ou des tests de sécurité. Il a fallu l'analyse de Calif.io, assistée par Claude Mythos Preview, le modèle IA d'Anthropic développé dans le cadre du projet Glasswing, pour que la subtilité de la boucle défectueuse soit identifiée comme exploitable. Calif.io indique que le modèle a détecté l'anomalie dans le comportement de strchr presque immédiatement, illustrant la capacité des outils d'analyse de code par IA à identifier ce type de bug subtil dans du code C ancien.

La longévité du bug illustre un problème structurel dans la maintenance du code C de longue date : les cas limites dans les parseurs de protocoles anciens peuvent persister des décennies car ils ne se manifestent pas dans les conditions normales d'utilisation et ne sont pas couverts par les tests de régression standards. Le protocole FTP lui-même est aujourd'hui peu utilisé sur la plupart des réseaux d'entreprise, ce qui explique en partie pourquoi le cas limite n'a jamais été rencontré en conditions réelles avant que des chercheurs ne le provoquent délibérément.

La mécanique exacte de la fuite mémoire

La vulnérabilité réside dans le parseur de listes de répertoires FTP de Squid, dans la fonction FtpGateway.cc. Lorsque Squid traite une réponse de liste de répertoires d'un serveur FTP, il analyse chaque ligne de la liste pour en extraire le nom de fichier. Pour gérer les anciennes réponses NetWare contenant des espaces supplémentaires, le code inclut une boucle qui avance un pointeur de lecture, copyFrom, au-delà de tout caractère d'espacement : while (strchr(w_space, *copyFrom)) ++copyFrom;.

Le problème survient lorsqu'un serveur FTP contrôlé par l'attaquant envoie une ligne de listing dont le contenu se termine immédiatement après l'horodatage, sans nom de fichier. Dans ce cas, le pointeur copyFrom se retrouve positionné sur le terminateur nul de la chaîne, le caractère qui marque la fin d'une chaîne en C. La fonction strchr, dans son implémentation standard, traite ce terminateur nul comme faisant partie de la chaîne de caractères qu'elle recherche. Elle retourne donc un pointeur valide au lieu de retourner NULL, et la boucle while ne s'arrête jamais : le pointeur continue d'avancer au-delà de la fin du tampon alloué.

La fonction xstrdup est ensuite appelée pour copier ce qui suit comme si c'était le nom de fichier manquant. Elle copie les octets lus au-delà de la fin du tampon et les renvoie à l'attaquant sous forme de nom de fichier. Ce sont ces octets qui constituent la fuite : le contenu de la mémoire qui suit le tampon de la ligne FTP dans l'espace mémoire de Squid.

Ce que l'attaquant récupère concrètement

Le contenu récupéré via la lecture hors limite dépend de ce que Squid stocke dans les zones mémoire adjacentes au tampon de la ligne FTP au moment de l'exploitation. Squid réutilise les tampons mémoire de 4 Ko libérés sans les réinitialiser à zéro au préalable. Un tampon qui contenait récemment la requête HTTP d'une autre victime transitant par le même proxy conserve donc encore la majeure partie de cette requête dans sa mémoire non réinitialisée.

Une ligne FTP de l'attaquant qui est courte écrase seulement les premiers octets du tampon réutilisé ; la lecture hors limite retourne le reste de ce contenu, qui peut inclure les en-têtes HTTP complets de la requête d'une victime, notamment les en-têtes Authorization, Cookie, et X-Auth-Token. La démonstration de Calif.io a réussi à extraire un en-tête d'autorisation appartenant à un utilisateur partageant le même proxy, suffisant pour agir en tant que cet utilisateur auprès des services auxquels il s'authentifiait.

La portée de la fuite se limite au trafic que Squid peut lire. Le trafic HTTPS normal transite par Squid comme un tunnel CONNECT opaque : Squid établit la connexion mais ne voit jamais le contenu chiffré à l'intérieur. La fuite affecte donc uniquement le trafic HTTP en clair et les configurations où Squid effectue une inspection SSL, c'est-à-dire où il déchiffre et rechiffre le trafic HTTPS pour l'inspecter. Ces configurations d'inspection SSL sont cependant relativement fréquentes dans les environnements d'entreprise qui souhaitent analyser le contenu du trafic chiffré.

Les conditions d'exploitation

Squid décrit CVE-2026-47729 comme une attaque par un "client de confiance" : un utilisateur déjà autorisé à utiliser le proxy, pas n'importe quel hôte sur Internet. Cette caractérisation correspond aux contextes typiques dans lesquels Squid est déployé : réseaux d'entreprise partagés, établissements scolaires, et réseaux Wi-Fi publics. Dans ces environnements, l'attaquant est simplement un autre utilisateur du même proxy.

L'attaquant doit également pouvoir demander au proxy d'accéder à un serveur FTP qu'il contrôle sur le port 21. Le protocole FTP et ce port sont activés par défaut dans la configuration standard de Squid. L'exploitation nécessite donc que l'attaquant contrôle ou puisse simuler un serveur FTP qui envoie des réponses de listing spécialement conçues, et que le proxy puisse accéder à ce serveur. Ces conditions sont réunissables dans la majorité des déploiements Squid par défaut.

Le timing joue un rôle dans l'exploitation. Pour récupérer la requête d'une victime spécifique, l'attaquant doit déclencher la lecture hors limite peu après que cette requête ait libéré son tampon mémoire, avant que ce tampon soit réutilisé pour un autre contenu. Dans un proxy très chargé, cette fenêtre peut être très courte. Dans un proxy moins chargé, elle peut durer suffisamment longtemps pour permettre une exploitation ciblée. La démonstration de Calif.io a été réalisée avec succès dans des conditions de laboratoire contrôlées.

Le score CVSS 6.5 et ce qu'il signifie

SUSE a évalué CVE-2026-47729 avec un score CVSS de 6,5 et une qualification "modérée". La décomposition du vecteur CVSS éclaire les décisions de priorité. Le vecteur d'attaque est réseau (AV:N) car l'exploitation passe par le réseau. La complexité est basse (AC:L) car il n'existe pas de conditions particulières à réunir côté cible hormis la disponibilité de FTP. Les privilèges requis sont bas (PR:L) car l'attaquant doit disposer d'un accès légitime au proxy, mais pas de privilèges administrateurs. Il n'y a pas d'interaction utilisateur requise (UI:N).

L'impact se concentre sur la confidentialité (C:H) avec une intégrité et une disponibilité non affectées (I:N/A:N). Il n'y a pas de modification de données ni de perturbation du service : la fuite est passive et invisible pour les victimes. C'est précisément ce qui peut en faire une menace sous-estimée : l'absence d'impact sur la disponibilité signifie que la fuite peut se produire sans aucun symptôme observable côté victime ou côté administrateur du proxy.

Le score 6,5 traduit correctement le fait que l'attaquant doit disposer d'un accès réseau au proxy (ce qui, dans un réseau d'entreprise, est généralement le cas de tout employé). Il ne traduit pas nécessairement la gravité réelle dans un contexte où l'en-tête d'autorisation récupéré donne accès à un service critique d'entreprise. L'impact effectif dépend entièrement de ce que transporte la requête HTTP récupérée, ce que le score CVSS ne peut pas anticiper.

L'état du correctif : la confusion entre Squid 7.6 et 7.7

L'application du correctif disponible pour CVE-2026-47729 est compliquée par une incohérence dans la communication publique autour de la version corrigée. Le mainteneur de Squid, Amos Jeffries, a d'abord indiqué que Squid 7.6 contenait le correctif, avant de se corriger en précisant que le correctif était en réalité dans la version 7.7. Dans un troisième commentaire, Salvatore Bonaccorso de l'équipe sécurité de Debian a noté que le commit référencé semble déjà présent dans Squid 7.6. Cette incohérence rend l'identification de la version corrigée incertaine si l'on se base uniquement sur les déclarations publiques.

La recommandation de Calif.io pour naviguer dans cette ambiguïté est de vérifier directement la présence du correctif dans le code source plutôt que de se fier au numéro de version. Le correctif lui-même est simple : une vérification du terminateur nul ajoutée avant les appels strchr vulnérables dans FtpGateway.cc. Ce correctif a été fusionné dans la branche de développement en avril et dans la branche v7 en mai 2026. Les distributions Linux comme Debian maintiennent leurs propres versions compilées de Squid avec des rétroports de correctifs, ce qui signifie que la version de votre distribution peut être corrigée indépendamment du numéro de version officiel de Squid.

Squid 7.6 contient par ailleurs un correctif pour CVE-2026-50012, une vulnérabilité de débordement de tas dans le traitement du cache_digest, distincte de Squidbleed et non liée. La présence de ce correctif dans 7.6 ne confirme pas que CVE-2026-47729 est également corrigé dans cette version. Les deux vulnérabilités doivent être vérifiées séparément.

La mitigation recommandée : désactiver FTP dans Squid

La mesure compensatoire la plus simple et la plus robuste, recommandée par Calif.io indépendamment de l'application du correctif, est la désactivation du support FTP dans Squid. FTP est un protocole dont l'usage a décliné très significativement au cours de la dernière décennie. Google Chrome a abandonné le support FTP en 2022. La grande majorité des réseaux d'entreprise ne génèrent pas de trafic FTP légitime qui transiterait par un proxy Squid.

Désactiver FTP dans Squid élimine complètement le vecteur d'exploitation de CVE-2026-47729, quelle que soit la version de Squid deployée, sans affecter le proxy HTTP et HTTPS que Squid fournit. La désactivation s'effectue via la configuration de Squid en restreignant les schémas d'URL acceptés. Cette modification est réversible et sans impact sur les fonctionnalités d'usage courant. C'est la mitigation à appliquer en priorité, indépendamment et en complément de l'application du correctif.

Comment le modèle IA Claude Mythos Preview a trouvé Squidbleed

Calif.io attribue la découverte de CVE-2026-47729 à Claude Mythos Preview, le modèle IA d'Anthropic développé dans le cadre du projet Glasswing, qui a identifié l'anomalie dans le comportement de strchr presque immédiatement lors de l'analyse du code. Cette attribution illustre une tendance émergente dans la recherche de vulnérabilités : les modèles d'IA capables d'analyser du code C de bas niveau détectent des comportements subtils dans des cas limites que les revues de code humaines et les outils d'analyse statique traditionnels peuvent manquer.

Des découvertes similaires ont été documentées dans d'autres projets open-source, dont FFmpeg, via des processus d'analyse assistés par IA. La subtilité du bug Squidbleed, une boucle while dont la condition de terminaison échoue silencieusement sur un seul cas limite de fin de chaîne, est précisément le type de problème que les outils d'analyse statique traditionnels peuvent ne pas identifier comme vulnérabilité exploitable mais qu'une analyse sémantique du flux de contrôle peut reconnaître.

Calif.io suggère que le code FTP de Squid pourrait contenir d'autres problèmes similaires et qu'une analyse plus approfondie reste à effectuer. Cette perspective est pertinente pour les équipes qui gèrent des déploiements Squid : même avec CVE-2026-47729 corrigé, le code FTP de Squid est ancien et n'a pas bénéficié du même niveau de révision de sécurité que les composants plus récents. La désactivation de FTP reste donc la posture la plus prudente à long terme, au-delà de la correction du bug spécifique documenté.

Implications pour les organisations utilisant des proxies web

CVE-2026-47729 est particulièrement pertinent pour les organisations qui utilisent Squid comme proxy partagé dans des environnements multi-utilisateurs : campus universitaires, réseaux d'entreprise avec un proxy centralisé, fournisseurs de Wi-Fi public. Dans ces contextes, la condition "client de confiance" est structurellement satisfaite par tous les utilisateurs du réseau, ce qui signifie que tout utilisateur du réseau peut potentiellement récupérer des requêtes HTTP d'autres utilisateurs.

Les organisations qui utilisent Squid en mode d'inspection SSL, où Squid déchiffre le trafic HTTPS pour l'analyser, ont une exposition plus large que celles qui utilisent Squid uniquement comme proxy HTTP, car les requêtes HTTPS déchiffrées sont visibles dans les tampons mémoire de Squid et donc potentiellement incluses dans le contenu récupéré par la fuite. L'inventaire des modes d'utilisation de Squid dans votre infrastructure et l'évaluation de l'exposition liée à l'inspection SSL sont des étapes préalables à la priorisation de la réponse.

La réponse structurée à CVE-2026-47729 comprend trois étapes : désactiver FTP dans la configuration Squid immédiatement, vérifier la présence du correctif dans votre version de Squid (en examinant le code source ou les notes de version de votre distribution), et revoir la configuration d'inspection SSL pour évaluer si la portée de la fuite potentielle inclut du trafic HTTPS déchiffré. La surveillance des indicateurs de compromission associés à des tentatives d'exploitation de CVE-2026-47729, notamment des connexions FTP inhabituelles vers des hôtes externes depuis le proxy, est le signal de détection le plus direct disponible. Evaluer la surface d'exposition de votre infrastructure proxy est la première étape pour comprendre si cette vulnérabilité présente un risque réel dans votre contexte spécifique.

Foire aux questions

Notre proxy Squid est-il affecté si nous n'utilisons pas FTP ?

Si FTP est désactivé dans votre configuration Squid, CVE-2026-47729 n'est pas exploitable via le vecteur documenté. La désactivation de FTP est la mitigation recommandée par Calif.io et représente la mesure la plus directe pour éliminer le risque, indépendamment de la version de Squid installée. Vérifiez que votre configuration ne permet pas l'accès à des URL de schéma ftp:// avant de conclure que votre déploiement est protégé.

L'exploitation est-elle automatisable et peut-elle cibler des victimes spécifiques ?

Un proof-of-concept est publiquement disponible depuis la divulgation de juin 2026. La démonstration de Calif.io a réussi à extraire des en-têtes d'autorisation dans des conditions de laboratoire. La difficulté d'un ciblage précis d'une victime spécifique dépend de la charge du proxy et de la synchronisation entre la requête de la victime et l'exploitation : le contenu récupéré reflète ce qui se trouve en mémoire au moment de l'exploitation, pas le contenu d'une requête choisie délibérément. Une exploitation opportuniste récupérant le contenu de n'importe quelle requête récente est plus réaliste qu'un ciblage précis.

Quelle est la différence entre Squidbleed et Heartbleed ?

Le nom Squidbleed est une référence à la structure de la vulnérabilité : comme Heartbleed, qui en 2014 avait permis de lire de la mémoire serveur via une extension de protocole TLS défectueuse, Squidbleed permet de lire de la mémoire au-delà des limites d'un tampon alloué via une boucle de parsing défectueuse. Les deux vulnérabilités entraînent une fuite de mémoire qui peut exposer des credentials d'autres utilisateurs. La différence principale est que Heartbleed affectait OpenSSL et avait donc une portée d'exposition universelle, tandis que Squidbleed affecte spécifiquement Squid et requiert que l'attaquant soit un client légitime du proxy.

Debian Squid 5.7, que nous utilisons, est-il affecté ?

Debian maintient sa propre version compilée de Squid avec ses propres rétroports de correctifs, indépendamment des versions officielle amont. La présence ou l'absence du correctif pour CVE-2026-47729 dans le paquet Squid de Debian dépend des rétroports appliqués par l'équipe de sécurité de Debian. Salvatore Bonaccorso de l'équipe sécurité de Debian a commenté sur ce bug : consultez les avis de sécurité officiels de Debian (DSA) et le tracker de sécurité Debian pour confirmer le statut du correctif dans votre version du paquet.

CVE-2026-50012 mentionné dans le contexte de Squid 7.6 est-il aussi grave que Squidbleed ?

CVE-2026-50012 est une vulnérabilité de débordement de tas dans le traitement du cache_digest de Squid, distincte de CVE-2026-47729 (Squidbleed). Elle est corrigée dans Squid 7.6 mais n'est pas liée à la fuite mémoire via le parseur FTP. Les deux vulnérabilités doivent être traitées séparément. La présence du correctif pour CVE-2026-50012 dans votre version de Squid ne garantit pas la présence du correctif pour CVE-2026-47729.

Le trafic HTTPS est-il exposé via Squidbleed ?

Le trafic HTTPS normal qui transite par Squid comme un tunnel CONNECT opaque n'est pas exposé, car Squid ne voit jamais le contenu chiffré. En revanche, si votre déploiement Squid utilise l'inspection SSL (aussi appelée SSL bumping), où Squid déchiffre et rechiffre le trafic HTTPS pour l'analyser, les requêtes déchiffrées circulent dans les tampons mémoire de Squid et pourraient être récupérables via Squidbleed. L'exposition dans les configurations avec inspection SSL est donc significativement plus large que dans les configurations de proxy HTTP pur.

Faut-il désactiver complètement Squid jusqu'à l'application du correctif ?

Non, si vous désactivez le support FTP dans la configuration de Squid. La désactivation de FTP élimine le vecteur d'exploitation de CVE-2026-47729 sans affecter les fonctionnalités de proxy HTTP et HTTPS de Squid. Désactiver complètement Squid aurait un impact opérationnel disproportionné par rapport au risque. La séquence recommandée est : désactiver FTP immédiatement, puis appliquer le correctif de version lors de votre prochain cycle de maintenance normal.

Comment Defendis peut vous aider

Ce type de menace illustre un problème structurel : les informations critiques sur une campagne active circulent d'abord dans des canaux fermés, forums clandestins et groupes Telegram privés, avant d'atteindre les équipes de sécurité par les canaux habituels. Le temps perdu dans cet écart est souvent celui où l'exploitation est la plus active.

Defendis surveille ces sources en continu. Votre équipe reçoit des signaux d'alerte pertinents avant que l'incident ne devienne public, avec le contexte nécessaire pour agir : nature de la menace, infrastructure associée, secteurs ciblés. Sans que vos analystes aient à patrouiller eux-mêmes dans des espaces qu'ils ne devraient pas avoir à fréquenter.

Réserver une démo

About the author
Sara is a marketing student and tech writing enthusiast with an interest in digital culture, startups, and emerging technologies.

Related Articles

Discover simplified
Cyber Risk Management
Request access and learn how we can help you prevent cyberattacks proactively.