Des articles originaux, sources toujours créditées

Des failles de sécurité dans la bibliothèque SSH en Rust « russh » exposent les systèmes à un épuisement des ressources

Deux vulnérabilités affectant les versions de la bibliothèque Eugeny russh jusqu'à 0.64.x permettent des attaques par consommation de ressources via la transmission de canaux et les routines du serveur d'agent.

The Global Wire Newsroom ·

Link preview · horizonglobalnews.com

Des failles de sécurité dans la bibliothèque SSH en Rust « russh » exposent les systèmes à un épuisement des ressources

Deux vulnérabilités affectant les versions de la bibliothèque Eugeny russh jusqu'à 0.64.x permettent des attaques par consommation de ressources via la transmission de canaux et les routines du serveur d'agent.

Share

Cet article a été traduit automatiquement par l'IA de notre rédaction depuis l'original en anglais. Lire en anglais

Deux vulnérabilités de sécurité distinctes ont été identifiées dans l'implémentation open-source en Rust du protocole Secure Shell connue sous le nom de Eugeny russh, affectant toutes les versions du logiciel jusqu'à la branche 0.64.x. Selon les fiches de divulgation publiées par la base de données de vulnérabilités VulDB le 27 oct. 2026, les deux failles permettent des conditions de consommation de ressources susceptibles de dégrader ou d'interrompre les services hôtes. Le premier problème, répertorié sous la référence CVE-2026-116774, réside dans les routines d'analyse syntaxique des canaux de la bibliothèque lors de l'interrogation de transmission (transmission polling). La seconde vulnérabilité, enregistrée sous le code CVE-2026-116696, affecte le module interne du serveur d'agent d'authentification. Les deux entrées ont été formellement classées par VulDB comme des défauts problématiques de consommation de ressources.

## Key facts

- Les fiches de suivi de sécurité CVE-2026-116774 et CVE-2026-116696 ont été cataloguées le 27 oct. 2026, documentant des failles dans les versions d'Eugeny russh jusqu'à la version 0.64.x. - CVE-2026-116774 affecte la fonction ChannelTx::poll_writable au sein de russh/src/channels/io/tx.rs via la manipulation du paramètre maximum_packet_size. - CVE-2026-116696 affecte le sous-système d'authentification situé dans russh/src/keys/agent/server.rs au sein de la fonction russh::keys::agent::server::serve. - Les deux vulnérabilités sont classées comme des bugs problématiques de consommation de ressources déclenchant un épuisement incontrôlé des ressources système. - Le logiciel concerné est une implémentation clé entièrement en Rust (pure-Rust) du protocole SSH-2 utilisée pour concevoir des infrastructures clientes et serveurs.

## What happened

Selon des avis de sécurité publiés par VulDB, des analystes en sécurité ont enregistré deux fiches de vulnérabilité distinctes couvrant le code source d'Eugeny russh le 27 oct. 2026. Les avis décrivent des vulnérabilités qui partagent une classification d'impact commune — la consommation de ressources — tout en provenant de couches fonctionnelles entièrement distinctes de la bibliothèque de protocole.

Le premier avis, désignant la CVE-2026-116774, isole une vulnérabilité au sein du composant Channel Open Parsing de la bibliothèque. Plus précisément, la faille se situe dans le fichier source russh/src/channels/io/tx.rs à l'intérieur de la fonction ChannelTx::poll_writable. Selon VulDB, un attaquant peut manipuler l'argument maximum_packet_size lors des opérations de gestion de canal. Cette manipulation perturbe l'ordonnancement de transmission prévu et entraîne une consommation excessive de ressources, risquant de bloquer ou de saturer le processus appelant.

Le second avis, désignant la CVE-2026-116696, traite d'une faille dans le composant de gestion de l'agent d'authentification de la bibliothèque. Le code vulnérable se trouve dans russh/src/keys/agent/server.rs au sein du chemin d'exécution serve, identifié comme russh::keys::agent::server::serve. VulDB rapporte qu'une manipulation ciblée de cette routine de serveur entraîne une consommation anormale de ressources, soumettant de même l'infrastructure de calcul ou de mémoire à rude épreuve sans nécessiter une violation complète des barrières cryptographiques.

Les deux fiches désignent comme périmètre affecté les versions logicielles jusqu'à la série 0.64.x incluse, ce qui indique que les versions de production actuelles et historiques reposant sur ces branches héritent des comportements structurels sous-jacents décrits dans les rapports.

## Why it matters

Le protocole Secure Shell (SSH), standardisé principalement par la RFC 4251 de l'Internet Engineering Task Force (IETF) et des spécifications associées, constitue la colonne vertébrale administrative des infrastructures cloud modernes, de l'exécution distante automatisée et de l'orchestration sécurisée des systèmes. Lorsqu'une bibliothèque SSH souffre de bugs d'épuisement des ressources, les conséquences menacent directement la disponibilité des services d'infrastructure.

Dans les protocoles réseau, les vulnérabilités de consommation de ressources se manifestent généralement sous la forme de conditions de déni de service. Lorsqu'un démon serveur ou client SSH traite des trames réseau, il doit allouer des tampons de mémoire, gérer des files d'attente de transmission et maintenir des machines à états pour chaque session active. Dans la CVE-2026-116774, étant donné que le problème concerne le paramètre maximum_packet_size dans la routine ChannelTx::poll_writable, un pair externe a la possibilité de forcer des boucles de mise en mémoire tampon asymétriques ou des cycles d'interrogation répétés. Si un pair spécifie des tailles de paquets anormales ou transgressant les limites lors de la négociation du canal, la logique de transmission asynchrone peut consommer des cycles CPU excessifs pour tenter d'harmoniser les limites de paquets demandées avec l'espace de fenêtre disponible, ou elle peut allouer des tampons disproportionnés sur le tas, épuisant ainsi la mémoire de l'hôte.

De même, la CVE-2026-116696 cible le mécanisme du serveur d'agent. Le protocole d'agent SSH, couramment utilisé pour conserver les clés privées en mémoire et répondre aux demandes de signature via des connexions transférées, fonctionne comme un démon local ou transféré de confiance. Une vulnérabilité de consommation de ressources au sein de la boucle serve signifie que tout client ou proxy de transfert capable d'envoyer des requêtes à l'interface de l'agent pourrait provoquer un épuisement des threads, des fuites de mémoire ou des itérations de boucle illimitées. Cela rend l'agent non réactif, bloquant les sessions d'administration légitimes et interrompant les pipelines d'intégration continue qui dépendent du transfert d'agent pour leurs identifiants.

Parce que Rust est largement adopté spécifiquement pour sa sécurité mémoire et sa prévisibilité, les développeurs supposent souvent que les crates Rust sont intrinsèquement immunisés contre les vulnérabilités de bas niveau. Bien que Rust élimine la corruption spatiale de la mémoire, comme les dépassements de tampon et les failles de libération de mémoire (use-after-free) dans le code sûr, il n'élimine pas automatiquement les attaques par complexité algorithmique, les interblocages de machines à états ou la gestion non vérifiée des paramètres à l'origine de dénis de service. Ces divulgations soulignent que les défauts logiques d'analyse syntaxique demeurent une menace opérationnelle pour les logiciels système modernes.

## The background

Le crate russh est issu d'un fork de Thrussh, une des premières implémentations entièrement en Rust d'un framework client et serveur SSH-2. Au fil du temps, sous la direction de son mainteneur Eugeny Pankov — largement connu pour avoir développé l'émulateur de terminal multiplateforme Tabby —, la bibliothèque est devenue l'une des implémentations natives en Rust du protocole SSH les plus en vue. Conçue sur le runtime asynchrone Tokio, russh fournit des communications réseau non bloquantes, basées sur des « futures », pensées pour gérer des environnements à forte concurrence sans générer de threads système d'exploitation dédiés pour chaque connexion.

Au sein de l'architecture SSH-2, la communication s'organise autour de canaux. Plusieurs canaux logiques, tels que des interpréteurs de commandes interactifs (shells), des tunnels de redirection TCP directe et des canaux de transfert d'agent, sont multiplexés sur une unique session de transport cryptographique authentifiée. En vertu de la RFC 4254, chaque extrémité d'un canal régule les données entrantes en annonçant une taille maximale de paquet et une taille de fenêtre initiale. La fenêtre définit le nombre d'octets que l'expéditeur distant peut délivrer avant d'attendre un réajustement, tandis que maximum_packet_size spécifie la plus grande charge utile de données individuelle autorisée dans un seul paquet.

La voie de transmission dans les frameworks asynchrones comme Tokio repose sur l'interrogation de disponibilité (readiness polling). La méthode poll_writable vérifie si le transport sous-jacent peut accepter de nouvelles données sans bloquer le thread du runtime. Dans russh/src/channels/io/tx.rs, la structure ChannelTx orchestre l'encapsulation des données sortantes. Si la bibliothèque n'applique pas de limites strictes de validité ou de contrôles des bornes mathématiques sur maximum_packet_size, un adversaire ou un pair malformé peut provoquer des cas limites où le runtime signale constamment sa disponibilité sans pour autant progresser, ou à l'inverse, divise les données en millions de micro-paquets, saturant l'ordonnancement du processeur.

Sur le plan de l'authentification, les protocoles d'agent SSH découlent du modèle standard d'agent OpenSSH. Les démons écoutent sur des sockets de domaine Unix locaux ou des flux transférés, acceptant des trames d'octets qui représentent des requêtes visant à lister des clés ou à signer des défis (challenges). La fonction serve dans russh/src/keys/agent/server.rs sert de répartiteur d'événements pour les trames entrantes du protocole d'agent. Le traitement de flux non fiables ou malveillants au sein de cette boucle nécessite une validation rigoureuse de la longueur ; sans cela, des en-têtes de messages malformés peuvent déclencher des allocations de lecture non limitées ou l'évaluation d'une boucle infinie, paralysant l'hôte.

Historiquement, les bibliothèques réseau en C, Go et Python ont rencontré des vulnérabilités analogues de gestion des ressources. Des incidents bien connus dans OpenSSH, tels que des attaques par privation de ressources contre des connexions pré-authentification et l'épuisement des états de canaux, ont contraint les développeurs de protocoles, au fil des décennies, à implémenter des plafonds défensifs, des limiteurs de débit et des contrôles de validation stricts sur les valeurs de dimensionnement fournies par les clients.

## Reaction

Les réactions publiques après les publications du 27 oct. sont restées largement circonscrites aux flux de vulnérabilités techniques et aux scanners automatisés de paquets, aucun grand fournisseur de cloud ni aucune distribution grand public de système d'exploitation n'ayant pour l'heure publié d'avis d'urgence. Les divulgations initiales proviennent des pipelines de suivi automatisés de VulDB.

Au sein de l'écosystème open-source élargi, les mainteneurs de logiciels en aval dépendant du crate russh — notamment les passerelles SSH personnalisées, les outils de sauvegarde automatisés et les applications de terminal — sont invités à surveiller les dépôts du projet pour obtenir des correctifs. Dans les flux de travail habituels de gestion des vulnérabilités open-source, les mainteneurs examinent les traces des fonctions signalées dans les pull requests ou les outils de suivi des tickets de Git, établissent des tests de régression reproduisant les charges utiles de paramètres anormales et publient des versions corrigées sur le registre crates.io. Les utilisateurs de la communauté Rust s'attendent généralement à ce que les mainteneurs de crates publient des incréments de version sémantique appliquant des contrôles de plafonnement défensifs sur les arguments d'entrée et limitant les allocations de mémoire lors de l'interrogation asynchrone.

## What we don't know yet

D'importants détails techniques restent omis dans les divulgations initiales publiées par VulDB. Plus particulièrement, les avis ne fournissent pas de chaînes vectorielles du Common Vulnerability Scoring System (CVSS), d'évaluations chiffrées précises de la sévérité, ni d'assignations Common Weakness Enumeration (CWE) au-delà de la qualification générale de consommation de ressources.

Il n'est pas non plus confirmé si l'exploitation de ces vulnérabilités nécessite une authentification cryptographique préalable. Dans le cas de la CVE-2026-116774, bien que l'ouverture d'un canal s'effectue généralement après la finalisation de la négociation SSH et de l'authentification de l'utilisateur, certaines configurations de multiplexage ou des bastions automatisés peuvent autoriser une négociation de canal non authentifiée ou semi-sécurisée. Pour la CVE-2026-116696, les rapports ne précisent pas si la boucle serve vulnérable est exposée exclusivement via des sockets locaux de communication interprocessus ou si elle peut être atteinte à distance par des mécanismes de transfert d'agent SSH.

De plus, les avis n'indiquent pas s'il existe un exploit de preuve de concept public, si les failles ont fait l'objet d'une exploitation active dans la nature, ou si des commits précis corrigeant ces défauts ont déjà été intégrés à la branche principale de développement du dépôt.

## What to watch

Les ingénieurs systèmes et les mainteneurs de paquets doivent surveiller plusieurs étapes clés dans les semaines à venir. Le principal indicateur sera la publication de versions postérieures à la version 0.64.x sur crates.io, spécifiquement accompagnées de notes de version faisant référence à tx.rs et server.rs.

Les équipes de sécurité devront également surveiller la National Vulnerability Database (NVD), gérée par le National Institute of Standards and Technology (NIST), pour la synchronisation officielle des CVE et les scores CVSS formels. Un score CVSS permettra d'établir si les vulnérabilités présentent une sévérité faible, moyenne ou élevée, principalement déterminée par les privilèges requis et la portée du vecteur d'attaque.

Dans l'intervalle, les développeurs s'appuyant sur russh peuvent inspecter leurs implémentations directes. Les audits techniques doivent déterminer si les applications exposent des écouteurs de serveur d'agent bruts à des réseaux non fiables ou permettent à des utilisateurs non fiables de négocier des dimensions de paquets de canaux illimitées sans validation au niveau applicatif.

Ce rapport est basé sur les divulgations de vulnérabilités cataloguées et signalées par VulDB.

Source : vuldb.com

À lire aussi