Contexte et découverte

Le 2 octobre 2026, un rapporteur a signalé que Xray‑core, logiciel de proxy largement utilisé, masquait une vulnérabilité de contournement de la vérification de certificat. L’option allowInsecure, déjà critiquée comme dangereuse, était combinée à une nouvelle option pinnedPeerCertSha256 introduite le 13 janvier 2026. Cette combinaison devait permettre l’usage sécurisé de certificats auto‑signés en désactivant la vérification standard tout en appliquant un épinglage personnalisé.

Le 9 janvier 2026, les mainteneurs ont retiré l’ancienne option pinnedPeerCertificateChainSha256 et l’ont remplacée par pinnedPeerCertSha256, affirmant vouloir empêcher le « streaking ». Cette modification a contraint les utilisateurs à migrer vers la nouvelle option, qui s’est avérée vulnérable dès sa première version publiée.

Mécanisme de la vulnérabilité

Dans la version initiale du 13 janvier 2026, pinnedPeerCertSha256 exécutait un logique d’épinglage sans jamais appeler la vérification de chaîne TLS standard. Le 16 janvier 2026, le code a été modifié pour que cette option ignore systématiquement la vérification habituelle, ne conservant que le contrôle d’épinglage. Un attaquant MITM peut alors insérer un certificat feuille arbitraire dans la chaîne ; le mécanisme d’épinglage accepte ce certificat tant que son empreinte SHA‑256 correspond, ce qui se produit parce que la vérification de la chaîne racine est complètement contournée.

En pratique, la vulnérabilité repose sur le fait que le code ne compare que le hachage du certificat fourni par l’utilisateur, sans valider la chaîne de confiance. Ainsi, même si le certificat racine est compromis ou absent, la connexion est considérée comme valide, ouvrant la porte à une interception totale du trafic chiffré.

Impact et limites

La faille expose toutes les configurations où allowInsecure et pinnedPeerCertSha256 sont activés simultanément, ce qui était la méthode recommandée pour les certificats auto‑signés. Dans ces scénarios, aucune vérification TLS ne subsiste, rendant les communications vulnérables à des attaques de type man‑in‑the‑middle sans besoin de compétences avancées. Les utilisateurs qui n’utilisent pas de certificats auto‑signés ou qui laissent allowInsecure désactivé conservent une protection partielle, mais le risque demeure élevé pour les déploiements automatisés où ces options sont souvent activées par défaut.

Le rapport indique que la vulnérabilité a été découverte le 6 février 2026 et corrigée le même jour, sans mention officielle dans les notes de version. Cette absence de divulgation empêche les administrateurs de réagir rapidement, prolongeant la période d’exposition potentielle.

Réaction du projet

Le correctif du 6 février 2026 a été présenté comme une simplification du code, sans référence à une faille de sécurité. Le communiqué Telegram du projet, publié le même jour, insiste sur la sécurité « au cœur du logiciel », alors que la modification avait en réalité éliminé la dernière couche de vérification TLS. Cette incohérence souligne un problème de gouvernance de la sécurité au sein du projet Xray‑core, où la communication transparente sur les correctifs critiques fait défaut.

En l’absence de CVE attribué ou de divulgation publique, les utilisateurs doivent surveiller les versions post‑février 2026 et vérifier que l’option pinnedPeerCertSha256 ne réintroduit pas le contournement. Une revue de configuration et le recours à des certificats signés par une autorité reconnue restent les meilleures pratiques pour atténuer le risque tant que le projet ne publie pas de documentation détaillée.