Le projet OpenSSH vient de recevoir un correctif qui empêche les pirates de profiter des vulnérabilités matérielles qui peuvent leur donner accès à des espaces mémoire non autorisés en exploitant des processus sans privilèges, pour finalement dérober des clés privées. La même approche pourrait être utilisée par d'autres applications logicielles pour protéger leurs secrets inscrits en RAM jusqu'à ce que des solutions soient trouvées à ces problèmes pour les futures générations de chips SDRAM et de CPU. Le correctif a été publié après la présentation par une équipe de chercheurs d’une attaque appelée RAMBleed. Cette dernière exploite le design de modules mémoire modernes pour extraire des informations à partir d’espaces mémoire dédiés à des processus avec privilège et au kernel. RAMBleed utilise une technique logicielle appelée Rowhammer pour déclencher des sauts de bit à l'intérieur des cellules de mémoire physique et récupérer des informations sensibles par un canal auxiliaire. L’attaque réalisée par les chercheurs a permis de récupérer une clé de signature RSA 2048 bits à partir d'un serveur OpenSSH en utilisant un code exécuté avec des privilèges de niveau utilisateur.

Les systèmes d'exploitation modernes isolent la mémoire virtuelle allouée au kernel de la mémoire des applications de l'espace utilisateur. En effet, la mémoire du noyau contient des données sensibles, dont des clés de chiffrement et des mots de passe. Ces derniers doivent rester hors de portée des applications sans privilèges. Toute violation de ce principe fondamental introduit une faille de sécurité critique, les attaquants ayant l’embarras du choix pour obtenir les permissions d'exécution de code sur les systèmes informatiques. Ils passent par des infections par malware ou exploitent les vulnérabilités des nombreuses applications exécutées dans l’espace utilisateur. La surface d'attaque offerte par toutes les applications non privilégiées exécutées sur un ordinateur est beaucoup plus grande que celle du noyau lui-même.

Le correctif OpenSSH chiffre les clés privées

Le nouveau correctif OpenSSH, soumis par le développeur OpenBSD Damien Miller, vient « protéger les clés privées au repos dans la RAM contre une action spéculative et des attaques de mémoire par canal auxiliaire comme Spectre, Meltdown, Rowhammer et Rambleed ». Les attaques par canal auxiliaire comme Spectre, Meltdown et, plus récemment, Microarchitectural Data Sampling (MDS), tirent parti de la fonctionnalité d'exécution spéculative des CPU modernes, une fonctionnalité conçue pour améliorer les performances. Certaines de ces attaques peuvent être utilisées pour lire la mémoire protégée du noyau.

Le nouveau patch OpenSSH chiffre les clés privées quand elles résident en mémoire et ne sont pas utilisées activement avec une autre clé symétrique dérivée de données aléatoires en 16 Ko. « Les attaquants doivent récupérer l'ensemble de la clef pré-partagée avec une grande précision avant de pouvoir tenter de déchiffrer la clé privée protégée, or cela paraît peu probable si l’on considère l'ensemble des taux d'erreur observés sur les bits dans les attaques actuelles », a expliqué Damien Miller dans ses commentaires sur le patch. « Du point de vue de l'implémentation, au moment de leur chargement, les clés sont chiffrées avec une protection, et déprotégées automatiquement et de manière transparente quand elles sont utilisées pour les signatures ou quand elles sont enregistrées/sérialisées ».

Un patch utilisable ou reproductible pour d'autres logiciels

OpenSSH est la mise en oeuvre la plus populaire du protocole SSH (Secure Shell), utilisé pour accéder et gérer à distance les systèmes informatiques et les serveurs, mais aussi pour les communications automatisées de machine à machine. Le protocole a été initialement conçu pour OpenBSD, mais il est également utilisé par défaut dans la plupart des distributions Linux actuelles et il est supporté par Windows 10. L'approche utilisée par OpenSSH pourrait être reproduite par d'autres projets logiciels pour protéger leurs propres clés et secrets en mémoire. Cependant, comme le laisse entendre les notes accompagnant le correctif, cette technique réduit la probabilité de réussir des attaques par canaux auxiliaires, mais elle ne les rend pas impossibles.

Les procédures d’attaques sont améliorées en permanence par les pirates, et l’on peut imaginer que de futures variantes de RAMBleed ou de Meltdown/Spectre parviennent à contrer cette atténuation. Les défauts de design sous-jacents des hardwares de demain seront probablement corrigés, mais le remplacement des processeurs et des puces SDRAM utilisés aujourd'hui prendra de nombreuses années. Il est préférable de prendre en compte le fait que ces attaques matérielles, et toute attaque future, auront un impact à long terme sur l’IT d’entreprise. Tout ce que les développeurs pourront faire sur le plan logiciel pour atténuer partiellement ces défauts et compliquer le travail des pirates, est extrêmement utile. « Je pense que nous pourrons résoudre ce problème d'ici quelques années et offrir une architecture informatique plus sécurisée », a ajouté M. Miller.