Connexion
Abonnez-vous

Looney Tunables : une faille dans la bibliothèque C de GNU donne accès au root sous Linux

Looney Tunables : une faille dans la bibliothèque C de GNU donne accès au root sous Linux

Le 09 octobre 2023 à 05h01

L’équipe Qualys Threat Research Unit a découvert une importante faille de sécurité (CVE-2023-4911) dans la bibliothèque C de GNU. Elle peut provoquer un dépassement de mémoire tampon qui, exploité, peut conduire par escalade de privilèges à la récupération des droits administrateurs dans une partie des distributions Linux.

La bibliothèque C de GNU, appelée glibc, est chargée de fournir des fonctions essentielles au système, notamment les appels comme open, malloc, printf, exit, servant aux applications. Dans cette bibliothèque, le chargeur dynamique est responsable de la préparation et de l’exécution des programmes.

La faille réside dans la manière dont est traitée la variable GLIBC_TUNABLES, donnant son nom à la vulnérabilité, en référence aux Looney Tunes. Elle doit cependant être exploitée localement. La faille a été exploitée avec succès sur Debian 12 et 13, Ubuntu 22.04 et 23.04, et Fedora 37 et 38. Les chercheurs notent qu’Alpine Linux, par son utilisation de musl libc, n’est pas concernée.

Des correctifs ont été émis pour les autres. Il est recommandé de mettre à jour les installations aussi rapidement que possible.

Le 09 octobre 2023 à 05h01

Commentaires (55)

Vous devez être abonné pour pouvoir commenter.

Abonnez-vous
votre avatar

Ouf, je viens juste de mettre à jour toutes mes machines.
Par contre, niveau exploitation locale, j’ai quelques doutes. Un simple module joomla bien ficelé peut tout à fait exploiter la faille non?

votre avatar

Quel ne N° de CVE ?

votre avatar

CVE-2023-4911, je viens de l’ajouter dans le texte :chinois:

votre avatar

Merci !



Ubuntu 22.04 : les correctifs ont été mis en ligne le 4 octobre dernier. :8

votre avatar

Je me disais bien qu’il y avait drôlement beaucoup de mises à jour ce matin sur mes debian …

votre avatar

Passage en 12.2 ;)

votre avatar

Le patch libc6 est déployé sur Debian depuis au moins une semaine.

votre avatar

Curieux d’avoir des nouvelles de ceux qui pondent des containers sans suivi.
Alors oui, c’est souvent Alpine par défaut. Mais les autres? Les distribs “je m’en fous”.

votre avatar

Ah ça clairement c’est un des gros problèmes modernes…



Note que tu vas avoir exactement le même problème avec les flatpak/snap…

votre avatar

Je ne sais pas si c’est de la modernité que de coller cela à toutes les sauces. Ça devrait rester le mal nécessaire d’applicatifs donnant peu confiance qu’il faut border… ou de vieux trucs plus maintenus mais restant parfois utiles, qui ne fonctionneraient pas sans cela sur une distro à jour.



En réalité, le concept a été violé pour se retrouver utilisé afin de permettre le véritable alignement de planètes de dépendances mal gérées (voir totalement évitables) d’applicatifs codés vite fait mal fait…

votre avatar

Vive le progrès. :‘(



:inpactitude:

votre avatar

Il me semble, mais je ne sais pas si c’est le cas en théorie sur Docker (en pratique, il y a surement des failles), l’un des principes de la conteneurisation, c’est d’isoler l’exécution du container du reste du système. Il pourrait se passer ce qu’il veut dans le container, son interaction avec le système hôte est limitée.

votre avatar

Attention, si on n’y prend pas garde les process des containers sont en root dans le container, et en root sur l’OS.
Donc en cas de faille dans le process, avec de “mauvaises” images sur un “mauvais” container, c’est root direct !
Et le nombre d’images avec des processus root est encore important, et le nombre de containers qui ne “remappe” pas root vers un autre user sont nombreux (install par défaut avec docker)…



Par défaut, le niveau d’isolation peut facilement sembler perfectible.

votre avatar

Les Dockerfile sans instruction USER sont effectivement trop fréquents. Alors que ça fait partie des alertes soulevées par la plupart des analyseurs de code.

votre avatar

Avant de parler conteneurs, parlant des machines virtuelles, voire de machine physiques.
Certaines entités ne les mettent juste pas à jour.

votre avatar

Les vieux serveurs sans mises à jour (même celle en mode étendue) peut être le résultat d’une exigence client. Pour ce genre de cas, je préconise une DMZ avec un antivirus réglé sur paranoïaque avec mise à jour de la base de signature toutes les 2 heures.

votre avatar

TNZfr a dit:


Passage en 12.2 ;)


Effectivement, rien à voir avec la faille mentionnée.



À noter qu’il y a aussi des nouvelles versions pour les 2 versions de Debian antérieures (Bullseye & Buster).




skan a dit:


Curieux d’avoir des nouvelles de ceux qui pondent des containers sans suivi. Alors oui, c’est souvent Alpine par défaut. Mais les autres? Les distribs “je m’en fous”.


Ouaip, le nombre de personnes qui se pensent protégées car “Docker, c’est magique…”, d’autant plus qu’il y a des failles de sécu qui permettent de passer outre la conteneurisation.

votre avatar

Sinon pour ceux qui se posent la question pour suse/opensuse:
https://www.suse.com/security/cve/CVE-2023-4911.html



En gros Suse/opensuse non concerné.
Tumbleweed c’est corrigé glibc >= 2.38-4.1

votre avatar

Merci bien, je cherchais l’info dans les mailing lists :yes:

votre avatar

Notez tout de même que la plupart des grosses distrib’ ont publié les correctifs plusieurs jours avant la news / annonce.



ce qui n’est généralement pas le cas pour les OS propriétaires

votre avatar

Il a quand même fallu 14 commentaires pour ce troll semi déguisé. Toujours la même rengaine :roll:



Quand le process est respecté ça se passe bien chez l’ensemble des OS qu’ils soient propriétaire ou pas. Il y a des patch d’urgence quand c’est nécessaire.

votre avatar

La capacité à ne pas vouloir comprendre et à tout prendre de travers m’épate toujours.



En partant du prérequis de base que l’utilisateur effectue les mises à jour au fur et à mesure des publications, l’élément à surveiller est la vitesse de publication des correctifs. Et avant la dite publication, la base de signature antivirus est sensée protéger à minima le système.
Et dans certains cas, le correctif est publié avant les mises à jour des bases antivirus.



Sauf que :




  • les utilisateurs sont paresseux sur les mises à jour

  • les OS proprios publient de manière très tardive (un patch de sécurité ne leur rapporte pas d’argent : 1 mois pour le DirtyPipe dans le WSL)

  • les bases antivirus sont mises à jour de manière réactive en fonction des exploitations de failles découvertes (pour les moteurs heuristiques, il leur faut du code exemple et le mettre dans la base de signature et la diffuser, ce qui peut prendre quelques jours)



Donc oui, il n’y a pas de système infaillible, mais il y a moyen en faisant attention d’être à minima exposé.



et il a (encore) fallu tout un paragraphe pour démonter une bêtise écrite en une phrase

votre avatar

quand même, “la faille doit être exploité localement” tous les PC de la maison ont un bios / EFI avec mot de passe et tout bloqué sauf démarrage sur le disque dur et l’OS protégé par mot de passe alors pour entrer localement… et au cas ou j’ai aussi un manche pioche à portée de main…

votre avatar

tazvld a dit:


Il me semble, mais je ne sais pas si c’est le cas en théorie sur Docker (en pratique, il y a surement des failles), l’un des principes de la conteneurisation, c’est d’isoler l’exécution du container du reste du système. Il pourrait se passer ce qu’il veut dans le container, son interaction avec le système hôte est limitée.


L’isolation fournie pas les containers c’est pour augmenter la robustesse de la conception (“Low Coupling, High Cohesion”) et pas augmenter la cyber-résilience.



Oui l’interaction est limitée… Mais pas au point de garantir la sécurité globale du système si un container a été compromis.

votre avatar

(quote:2157520:127.0.0.1)
Oui l’interaction est limitée… Mais pas au point de garantir la sécurité globale du système si un container a été compromis.


Un exemple :
https://threatpost.com/azurescape-kubernetes-attack-container-cloud-compromise/169319/

votre avatar

max6 a dit:


quand même, “la faille doit être exploité localement”


En couplant ça par exemple avec un electron pas mis à jour suite à la faille webp, ça peut-être plus facile que tu ne le penses…



La plupart des attaques avec exfiltration de données est par exploitation locale, même sur des postes protégés…

votre avatar

Elle est sortie quand la Debian 13 ? :fumer



Je suis encore sur la 11 ! :D:

votre avatar

Je suis aussi curieux de savoir. J’ai loupé l’info. Pour une fois que ça traine pas, on aurait pu nous mettre au courant…

votre avatar
votre avatar

hello quelqu’un sais si les nas synology sont impactés ?

votre avatar

misocard a dit:


Je crois que c’est la version testing


C’est bien ça, actuellement Debian 13 est la “testing”, la 12 la “stable”, la 11 la “oldstable” et la 10 “oldoldstable”, et sid la rolling release à utiliser si on aime les trucs tout pétés…



https://wiki.debian.org/DebianReleases

votre avatar

bilbonsacquet a dit:


(…) et sid la rolling release à utiliser si on aime les trucs tout pétés…


Ça fait 23 ans que je tourne en sid, c’est vraiment très très rarement tout pété.

votre avatar

“Elle doit cependant être exploitée localement.”
C’est donc une faille importante, logique. :transpi:

votre avatar

Burn2 a dit:


Sinon pour ceux qui se posent la question pour suse/opensuse: https://www.suse.com/security/cve/CVE-2023-4911.html



En gros Suse/opensuse non concerné. Tumbleweed c’est corrigé glibc >= 2.38-4.1


:merci:

votre avatar

J’espère que ça rappellera aux personnes qui fantasment sur la sécurité “by design” de Linux que c’est juste un fantasme et que celle-ci n’est jamais absolue.

votre avatar

J’avoue que sur ce coup, j’ai du mal à me sentir menacé.

votre avatar

Ce n’est pas une question de se sentir menacé ou non par cette faille précise, mais d’être conscient que tout système est faillible et que sa sécurité IT ne peut reposer sur une croyance comme on peut malheureusement trop souvent le lire ou l’entendre.

votre avatar

Pour rappeler ça, je pense qu’il serait opportun de choisir une faille réellement dangereuse.

votre avatar

C’est un fantasme ça, du moment qu’un OS est connecté sur un réseau, il a des failles exploitables. Il n’y a aucun design qui permette d’avoir 0 faille, si ce n’est d’avoir un système totalement isolé…



Sachant qu’en plus, on a rarement des OS dans aucune applications dessus, que ce soit du service ou autre, qui rajoute leur énorme lot de failles, c’est clairement de l’ignorance que de se penser intouchable parce qu’on est sur Linux :D



Après il faut toujours que l’exploitation de la faille soit rentable, donc, c’est la qu’on fait une analyse de risque :p (27001 si tu nous regarde…)

votre avatar

Ah ben c’est un heureux hasard, parce que d’habitude je n’installe jamais des versions bêta :transpi: des distributions, ben là hier j’me suis dit, dans ma toute petite tête : qu’est-ce que tu as à perdre après tout ? en effet, vu que je ne peux pas utiliser Linux pour des travaux “sérieux” (NB : pour moi, “sérieux” veut toujours dire : Musique ! Vu que c’est toute ma vie…)



Il se trouve que depuis une semaine, en parallèle de Kubuntu 23.04, je teste aussi Fedora 38 - et pas plus tard qu’hier, j’ai donc tenté le coup de passer à la 39 bêta - oui c’est plus fort que moi - en suivant très exactement, à la lettre de la virgule près, le doigt sur la couture du pantalon, ce mode d’emploi… et résultat, ça marche super-bien ! :yes: Aucun bug majeur à rapporter ! (*)



Après lecture attentive de cet article, je me dis que j’ai bien fait ! Et après vérification, je peux vous dire que glibc a bien été updatée à la version 2.38 - 7.fc39 et que la faille a été déjà patchée, en voici la preuve : voir ICI et surtout ICI.




(*) …A part, mais je ne sais pas si c’est lié au patch, lorsque je tente de lancer manuellement l’install d’un jeu, j’ai cette erreur :




execve: no such file or directory


Sur un deuxième jeu (manque de bol, j’en ai que deux pour tester, tout ce qui me reste d’un “Humble Bundle” acheté il y a des années et égaré… :roll: ), c’est : “execvp” à la place de “execve”. Est-il possible que ce soit une des conséquences du patch qui comble la faille CVE-2023-4911 ? …Ou c’est moi ? :transpi:

votre avatar

La faille donne accès au root; mais si il est désactivé est-ce que la faille est exploitable ?
Simple question, mon os est à jour.

votre avatar

eglyn a dit:


Sachant qu’en plus, on a rarement des OS dans aucune applications dessus, que ce soit du service ou autre, qui rajoute leur énorme lot de failles, c’est clairement de l’ignorance que de se penser intouchable parce qu’on est sur Linux :D


Absolument. Mais on peut quand même le lire régulièrement. :craint:

votre avatar

micktrs a dit:


La faille donne accès au root; mais si il est désactivé est-ce que la faille est exploitable ?


Oui, puisque la faille utilise un binaire qui a le bit suid root. Si ton compte root est désactivé, c’est que tu ne l’utilise qu’au travers de sudo, qui est justement un bon exemple de binaire suid root.




Simple question, mon os est à jour.


Si ton système est à jour, alors tu as la correction, donc ça ne craint plus rien.

votre avatar

(quote:2157649:DantonQ-Robespierre)
… (*) …A part, mais je ne sais pas si c’est lié au patch, lorsque je tente de lancer manuellement l’install d’un jeu, j’ai cette erreur :



Sur un deuxième jeu (manque de bol, j’en ai que deux pour tester, tout ce qui me reste d’un “Humble Bundle” acheté il y a des années et égaré… :roll: ), c’est : “execvp” à la place de “execve”. Est-il possible que ce soit une des conséquences du patch qui comble la faille CVE-2023-4911 ? …Ou c’est moi ? :transpi:


Aucun rapport. La faille est un buffer overflow dans le parsing des options de réglages de la libc qui sont passées par une variable d’environnement. Le patch est juste un blindage du parsing, sans aucun changement fonctionnel. Là, ton erreur c’est un binaire qui cherche à charger un autre binaire, et ne le trouve pas.

votre avatar

TNZfr a dit:


La capacité à ne pas vouloir comprendre et à tout prendre de travers m’épate toujours.


Dit-il.




En partant du prérequis de base que l’utilisateur effectue les mises à jour au fur et à mesure des publications, l’élément à surveiller est la vitesse de publication des correctifs. Et avant la dite publication, la base de signature antivirus est sensée protéger à minima le système. Et dans certains cas, le correctif est publié avant les mises à jour des bases antivirus.


Parler d’antivirus, une technologie des années 90, pour parler des protections actuelles, c’est beau.




Sauf que :




  • les utilisateurs sont paresseux sur les mises à jour

  • les OS proprios publient de manière très tardive (un patch de sécurité ne leur rapporte pas d’argent : 1 mois pour le DirtyPipe dans le WSL)


C’est faux, on te l’a déjà expliqué, notamment ici : nextinpact.com Next INpactEn effet, cette “capacité à ne pas vouloir comprendre et à tout prendre de travers m’épate toujours.”.





  • les bases antivirus sont mises à jour de manière réactive en fonction des exploitations de failles découvertes (pour les moteurs heuristiques, il leur faut du code exemple et le mettre dans la base de signature et la diffuser, ce qui peut prendre quelques jours)


ça fait bien longtemps que ça ne marche plus comme ça …




Donc oui, il n’y a pas de système infaillible, mais il y a moyen en faisant attention d’être à minima exposé.


Bravo, c’est la conclusion des formations régulières en sécurité à destination des collaborateurs.




et il a (encore) fallu tout un paragraphe pour démonter une bêtise écrite en une phrase


En effet, tellement de bêtises, il faudrait se mettre un peu -beaucoup- à jour, et arrêter de répandre ces croyances à la moindre occasion.

votre avatar

On va zapper le monceau de bullshit, juste pour essayer de comprendre l’intérêt du lien que tu viens de donner !?
On parle de failles sur les OS, un ransomware peut s’attaquer à une machine saine juste en passant par la faille sociale. Quel rapport avec les trous logiciels ?



Concernant les mises à jour, il convient, avec la complexité actuelle des logiciels, de reprendre les fondamentaux (encore faut il les connaître et savoir les manipuler) et de se poser les bonnes questions. Les palettes de procédures d’exploitation teintées de conservatisme morbide et les outils tout-en-un qui font papa-maman « pour-ton-bien » ne sont pas des solutions acceptables aujourd’hui.
Il y a 2 postures possibles :




  • soit tu fais entièrement confiance à ton fournisseur et tu appliques les recommandations de ce dernier sans réfléchir (et y’en a beaucoup dans ce cas) … tu admets au final que tu ne contrôles rien, au mieux tu passes pour le 1er de la classe : « j’ai tout bien fait comme on m’a dit ! »

  • soit tu es actif, et tu choisis les outils adaptés au contexte ; de plus tu mets à jour tes procédures d’exploitation voire tu les re-conçois pour une efficacité maximale (bref, tu es pragmatique)
    La différence entre ces 2 postures est une différence d’objectif : une est orientée « comment », l’autre est orientée « pour quoi ».



Tu peux me créditer de troll, de machine à bullshit, tout ce que tu veux … mais ça fait pas mal d’années que je fais de la sécu / veille techno / développement / architecture pour connaître les technologies et les habitudes utilisateur et devoir jongler avec les capacités / limitations des uns et des autres au quotidien. Par expérience, les approches pragmatiques sont, malheureusement, les seules qui fonctionnent sur le long terme.

votre avatar

(reply:2157718:alex.d.) Merci beaucoup pour ton retour, ça n’a donc aucun rapport avec la choucroute…


J’essaie de savoir ce que font exactement ces deux binaires (d’après les forums que j’ai consulté, ces deux exécutables sont bien présents sur Ubuntu, mais, il semblerait, pas sur Fedora…



Pas évident de comprendre tous ça pour un ignorant comme moi, mais, d’après ces deux vénérables pages de manuel, il apparaît que ces deux programmes, inclus dans certains packages de glibc, soient utilisés par les devs… pour exécuter des exécutables, tout en leur passant des arguments divers et variés.



Je suppose que ça doit bien servir pour des tests, mais il semblerait que Fedora ne les ait pas inclus, peut-être pour des raisons de sécurité ? Enfin voilà, pardon pour ce HS, mais mon ch’ti cerveau ne cesse de poser en permanence des dizaines de milliers de questions, dont je n’ai absolument pas la réponse…

votre avatar

(reply:2157750:DantonQ-Robespierre)


Non, execve et execvp ne sont pas des binaires (qui manqueraient chez toi), ce sont les fonctions de chargement du binaire suivant. Mais quel était le binaire cherché ? On ne le sait pas avec le message que tu as posté.

votre avatar

C’est très simple, j’ai retrouvé deux très vieux jeux - les seuls que j’ai pour Linux - que j’ai essayé d’installer. Lorsque je lance leur binaire d’installation (j’ai vérifié leurs droits, ils sont bien exécutables avec les droits : r-w-x pour l’utilisateur), le message d’erreur indiqué plus haut s’affiche :




execvp: no such file or directory


ou encore :




execve: no such file or directory


Comme j’ai appris que ces deux “exec” sont livrés avec certaines versions de Glibc, j’ai fait le rapprochement avec le sujet de l’article.



J’ai cherché sur la totalité du disque ou j’ai installé Fedora, et effectivement, il semblerait qu’ils n’existent pas… ou plus ?

votre avatar

(reply:2157762:DantonQ-Robespierre)


Reprenons : dans tes messages, le “execve:” ou “execvp:” ne veulent pas dire que ces fichiers n’ont pas été trouvés. Ils veulent dire que ces fonctions n’ont pas trouvé un certain fichier (on ne sait pas lequel). Ce message est affiché par execve ou execvp.
Tu peux les chercher tant que tu veux sur ton disque, ce sont des fonctions de la libc, et ta libc les contient, garanti à 100%.
Donc tout ce qu’on peut en conclure, c’est que ton binaire a chercher à en exécuter un autre, mais on ne sait pas lequel. On pourrait avoir plus d’infos à coup de strace, mais je n’ai pas l’impression que tu sois en mesure de comprendre le résultat d’un strace.

votre avatar

(reply:2157767:alex.d.) Alors lorsque j’ai tapé “strace –help”, le terminal (konsole) m’a proposé immédiatement de l’installer, ce qui est fait.


Voici le résultat de la commande : “sudo strace “/-/-/-/-/Capsized/capsized-12212015-bin” -v :
(Remplace les tirets par des noms de dossiers - Note : la balise “< code >” ne marche pas ici, donc il est possible que ça ne restitue pas bien le résultat)



execve(“/-/-/-/-/-/capsized-12212015-bin”, [“/-/-/-/-/Cap”…, “-v”], 0x7ffc8a1d3198 / 19 vars /) = -1 ENOENT (Aucun fichier ou dossier de ce type)
strace: exec: Aucun fichier ou dossier de ce type
+++ exited with 1 +++



Bon là je suppose qu’il me manque une case… euh un ou plusieurs paramètre(s) pour que la commande strace soit vraiment utile…

votre avatar

(reply:2157772:DantonQ-Robespierre)


Ça veut dire que le “/-/-/-/-/-/capsized-12212015-bin” (celui de la ligne execve) n’a pas été trouvé.

votre avatar

(reply:2157774:alex.d.) …et pourtant ce fichier existe, je l’ai sous les yeux, c’est exactement le fichier d’install que j’essaie de lancer…


Il me semble qu’en fait, lorsque je le lance, ce prog, nommé “capsized-xxx.bin” (un vieux jeu) se met à la recherche d’un autre fichier, d’un dossier ou d’une commande qu’il ne trouve pas, ce qui donne le résultat décrit plus haut : il affiche l’erreur “no such file or directory”.



Cette erreur est donc émise par l’exécutable “capsized-xxx” lui-même. Mais bon, t’embête pas, je vais essayer de comprendre comment fonctionne strace (merci de me l’avoir indiqué au passage !) afin de déterminer quelle est la véritable erreur.



C’est juste la première fois que j’essaie d’installer manuellement - je veux dire, sans passer par le gestionnaire de packages officiel de la distri, ni par aucune autre béquille - un programme externe à la distri en question, dans ce cas il s’agit d’un installeur Linux générique qui est censé fonctionner quelque soit la distri choisie.



Je retiens donc de notre conversation que execv* n’est pas un exécutable, mais un ensemble de commandes en language C, provenant de la librairie (Gnu ou pas) libc incluse dans la plupart des distris.



…et je te remercie vraiment pour toutes ces infos, exactement le genre d’infos que je recherche tous les jours, avec gourmandise… :yaisse: :yaisse: :yaisse:

votre avatar

Winderly a dit:


“Elle doit cependant être exploitée localement.” C’est donc une faille importante, logique. :transpi:



Winderly a dit:


J’avoue que sur ce coup, j’ai du mal à me sentir menacé.


Une faille locale, sauf cas particulier, j’ai du mal à voir également.
Il faut avoir un serveur public au minimum pour que ce soit un souci.

votre avatar

Donc si j’ai bien compris, pour l’exploiter il faut:




  • qu’un process lance un autre dont l’exécutable a l’attribut «suid» (exécute toi avec le compte du proprio du fichier) comme sudo ou mount

  • que le process fils soit lancé avec la variable d’environnement GLIBC_TUNABLES avec une valeur malicieuse.
    Sans regarder plus en détail, si on a un shell et un exemple de valeur ça semble trivial à exploiter. J’imagine qu’un autre scénario est d’exécuter un programme ou script que l’on suppose sûr). De manière distante (ex: service web), il faudrait que l’attaquant trouve un moyen d’assigner la variable et d’exécuter un programme suid.

Looney Tunables : une faille dans la bibliothèque C de GNU donne accès au root sous Linux

Fermer