Cette semaine en sécurité : Zenbleed, intégrité Web, et plus encore !

En premier lieu, Zenbleed, un bug d’exécution spéculatif particulièrement inquiétant, qui s’avère malheureusement très simple à exploiter. Il fuit les données de la fonction comme strlen, memcpyet strcmp. Il est vulnérable depuis les machines virtuelles et potentiellement depuis le navigateur. La portée est cependant assez limitée, car Zenbleed n’affecte que les processeurs Zen 2 : il s’agit de la série AMD Epyc 7002, de la série Ryzen 3000 et de certains processeurs des séries Ryzen 4000, 5000 et 7020, en particulier ceux avec le processeur intégré. Graphiques Radeon.

Et au cœur du problème se trouve un pointeur use-after-free – qui se produit à l’intérieur du CPU lui-même. Nous considérons normalement les registres CPU comme des emplacements fixes sur le silicium. Mais dans le cas des registres XMM et YMM, il existe en fait un magasin partagé d’espace de registre, et les registres individuels sont mappés dans cet espace à l’aide d’une méthode qui rappelle beaucoup les pointeurs.

Les registres XMM ont une longueur de 128 bits et les registres YMM ont une longueur de 256 bits. Pour optimiser les performances, les compilateurs utilisent souvent le vzeroupper instruction pour définir la moitié supérieure d’un registre YMM sur 0, laissant le CPU exécuter le reste des instructions en utilisant des calculs 128 bits. La chose importante à comprendre est que la mémoire sous-jacente n’est pas définie sur zéro, mais que le pseudo-pointeur est simplement signalé comme égal à zéro.

Voici maintenant l’exécution spéculative : le processeur exécute du code à l’avance qui inclut un vzeroupper. Si le CPU se trompe, il annule l’exécution, y compris que vzeroupper instruction, mais le stockage sous-jacent a peut-être déjà été affecté à l’un des autres registres XMM. Les données sont toujours là et peuvent simplement être lues à partir du registre. Notez qu’il ne s’agit pas d’une attaque par canal latéral, les données sont juste là, prêtes à être consultées.

Ce qui est intéressant, ce sont les types de données que l’on trouve dans ces registres. Les compilateurs modernes utilisent ces instructions de traitement vectoriel pour certaines fonctions essentielles, comme strcmp, memcpyet srtlen. Ces routines traitent des clés, des mots de passe, des messages de journal, etc.

J’ai testé cela sur mon serveur, alimenté par un AMD 7302P, et j’ai confirmé qu’à partir d’une machine virtuelle, le code de preuve de concept était capable d’accéder aux messages du journal à partir de l’installation bare-metal d’Alma Linux. C’est vraiment pas bon. Heureusement, AMD a publié un correctif de microcode pour ces processeurs de série de serveurs, et AlmaLinux a rendu ce correctif disponible. J’ai répété le test après l’installation, et le correctif du microcode arrête effectivement la fuite de données.

Qu’en est-il des puces de bureau et mobiles ? Eh bien, malheureusement, ces mises à jour ne sont pas encore disponibles et n’ont pas de date cible avant la fin de cette année – décembre dans le pire des cas. Il semble que le correctif serveur d’AMD soit arrivé bien en avance sur le calendrier et ait laissé le chat sortir du sac proverbial, expliquant la divulgation moins que coordonnée que nous constatons.

Intégrité de l’environnement Web de Google

Internet est en colère contre un projet de Google visant à ajouter l’intégrité de l’environnement Web (WEI) à Google Chrome. L’objectif de la proposition WEI est précisé dans le projet de spécification. Il permet à un site Web d’avoir la certitude qu’une connexion provient d’un utilisateur réel et d’un environnement Web validé, sans violer la vie privée de cet utilisateur en prenant ses empreintes digitales.

Cela fonctionnerait par le biais d’une attestation, où un tiers de confiance a accès au navigateur, puis atteste qu’il est approuvé. Cela semble être essentiellement un système anti-triche, ou une autre couche de DRM. C’est là que nous entrons dans les mauvaises herbes d’être peut-être une idée terrible.

C’est l’argument avancé par Vivaldi, il n’y a aucune garantie que ce nouveau système ne sera pas terriblement abusé pour garder d’autres navigateurs hors du marché. Et où va Linux ? Les mesures anti-triche ont été très difficiles à mettre en œuvre de manière sensée sous Linux. Si la norme décolle, les navigateurs Linux seront-ils simplement exclus du plaisir ? Est-ce un monde meilleur lorsque des tiers déterminent le logiciel que vous êtes autorisé à exécuter ? Il est juste de dire que nous avons plus de questions que de réponses.

Superposition d’Ubuntu

Dans une petite recherche astucieusement nommée « Game Over(lay) », [Sagi Tzadik] et [Shir Tamari] de Wiz décrivent une faille qu’ils ont trouvée dans les correctifs d’Ubuntu au-dessus d’OverlayFS. La version courte est que le noyau Linux avait une vulnérabilité dans le module du noyau OverlayFS en 2020. Des correctifs ont été ajoutés au vfs_setxattr fonction, mais Ubuntu expose plus de fonctionnalités en sautant cette fonction et en appelant directement __vfs_setxattr_noperm. En raison des modifications spécifiques à Ubuntu, les correctifs du noyau en amont sont ignorés dans les noyaux d’Ubuntu.

Le problème exact est la possibilité de définir les capacités des fichiers. setcap est la nouvelle et meilleure approche de la setuid bit, qui permet à un utilisateur non privilégié d’exécuter un binaire avec de plus grandes capacités. Jeter un coup d’œil à fping:
[jbennett@Celeborn Downloads]$ getcap /usr/sbin/fping
/usr/sbin/fping cap_net_raw=ep

La clé pour sécuriser cela est que seul root peut attribuer des capacités. Sauf à l’intérieur des systèmes de fichiers de conteneurs, où le processus de leur construction nécessite parfois des capacités de fichiers. L’utilisateur non privilégié peut lancer un nouvel espace de noms et créer l’exécutable le plus performant dans le répertoire « inférieur ». Là où cela ne va pas, c’est lorsque le système de fichiers OverlayFS est monté et que l’exécutable obtient touchéd. Le système fait une copie du fichier, dans la moitié « supérieure » de l’OverlayFS, mais cette copie existe en dehors de l’espace de noms créé, échappant au bac à sable.

L’estimation est que près de 40 % des installations d’Ubuntu sont vulnérables à cet exploit. Heureusement, il s’agit d’une faille d’escalade de privilèges locale uniquement. C’est toujours une menace dans le cadre d’une chaîne d’attaque, alors allez-y et corrigez !

Bits et octets

Le framework Spring Java a un problème dans le composant WebFlux, où un double astérisque ** modèle peut atteindre un cas limite dans la couverture de sécurité, permettant potentiellement un contournement de sécurité. Il affiche un score de base CVSS de 9,1 et 8,8 au total.

Et enfin, ne manquez pas notre couverture de la faiblesse intentionnelle de la norme radio TETRA. Toute l’histoire me rappelle un peu l’opération Rubicon, où Crypto AG a expédié des appareils compromis de la même manière sous la direction des gouvernements américain et allemand.

François Zipponi
Je suis François Zipponi, éditorialiste pour le site 10-raisons.fr. J'ai commencé ma carrière de journaliste en 2004, et j'ai travaillé pour plusieurs médias français, dont le Monde et Libération. En 2016, j'ai rejoint 10-raisons.fr, un site innovant proposant des articles sous la forme « 10 raisons de... ». En tant qu'éditorialiste, je me suis engagé à fournir un contenu original et pertinent, abordant des sujets variés tels que la politique, l'économie, les sciences, l'histoire, etc. Je m'efforce de toujours traiter les sujets de façon objective et impartiale. Mes articles sont régulièrement partagés sur les réseaux sociaux et j'interviens dans des conférences et des tables rondes autour des thèmes abordés sur 10-raisons.fr.