Developpez.com

Le Club des Développeurs et IT Pro

Une vulnérabilité permettant des élévations de privilèges sur Linux indétectée pendant 9 ans

« la plus grande jamais répertoriée » selon un chercheur

Le 2016-10-21 18:29:31, par Stéphane le calme, Chroniqueur Actualités
Une situation de compétition a été trouvée dans la façon dont la mémoire du noyau du sous-système Linux géré la rupture de la copie sur écriture (COW) de mappings de mémoire en lecture seule. Pour rappel, une situation de compétition fait référence à un dysfonctionnement dû à un bogue, qui fait que dans un même logiciel deux automatismes qui travaillent simultanément donnent des résultats différents suivant l'automatisme qui termine avant l'autre.

Répertoriée comme étant CVE-2016-5195, cette faille critique est passée inaperçue pendant neuf ans et permet d’obtenir une élévation de privilèges. Des experts en sécurité, qui ont découvert un code d’attaque indiquant que la vulnérabilité a été largement exploitée, recommandent aux utilisateurs d’installer le correctif aussi vite que possible.

Dan Rosenberg, un chercheur senior pour le compte d’Azimuth Security, a estimé « qu’il s’agit la probablement de la plus grande élévation de privilèges jamais répertoriée sur Linux ». « La nature de la vulnérabilité se prête à une exploitation extrêmement fiable. Cette vulnérabilité est présente depuis neuf ans, ce qui est une très longue période de temps ».

La faille a été colmatée cette semaine par les responsables du noyau Linux. Les distributeurs downstream préparent une mise à jour qui embarque ce correctif. À ce propos, Linus Torvald a déclaré hier : « il s’agit là d’un ancien bogue que j’ai moi-même tenté une fois (mal) de corriger il y a 11 ans dans le commit 4ceb5db9757a ("Fix get_user_pages() race for write access" mais ça n’a pas été fait à cause du problème s390 soulevé par le commit f33ea7f404e5 ("fix get_user_pages bug". Entre temps, le problème s390 a été corrigé depuis un moment déjà et nous pouvons corriger ce problème en vérifiant convenablement l’octet pte_dirty() (et le faire mieux) ».

Les vulnérabilités qui permettent une élévation des privilèges sont dangereuses parce qu’elles peuvent servir par exemple contre les hébergeurs web et permettre au pirate d’attaquer ses clients, voire même leurs propres services. Combinés avec d’autres attaques, ces exploits peuvent permettre de faire encore plus de dégât.

La découverte des attaques exploitant ces vulnérabilités est le fait de Phil Oester, un développeur Linux. Il explique que « n’importe quel utilisateur peut passer accéder à la racine en moins de 5 secondes d’après mes tests. La vulnérabilité est plus facile à exploiter avec un accès local à un système tel que les comptes shell. Même si cela fonctionne, elle est moins évidente à exploiter lorsqu’il faut passer par une vulnérabilité serveur web / application qui permet à l'attaquant de faire un upload de fichier sur le système touché et l’exécuter » .

Oester a trouvé un exploit en analysant le trafic de ses serveurs web : « l'exploit en particulier qui a été téléchargé sur mon système a été compilé avec GCC 4.8.5 released 20150623, bien que cela ne devrait pas impliquer que la vulnérabilité n’était pas disponible avant cette date compte tenu de sa longévité. Quant à savoir qui est ciblé, toute personne exécutant Linux sur un serveur Web est vulnérable ».

Source : Linus Torvalds, RedHat, Canonical, Phil Oester
  Discussion forum
11 commentaires
  • yann2
    Membre expérimenté
    Envoyé par Stéphane le calme 
    [B][SIZE=4]
    Une situation de compétition a été trouvée dans la façon dont la mémoire du noyau du sous-système Linux géré la rupture de la copie sur écriture (COW) de mappings de mémoire en lecture seule.


    Voilà ce qui se passe quand on traduit sans même essayer de comprendre....
  • BufferBob
    Expert éminent
    Envoyé par CaptainDangeax
    C'est léger comme faille. Pour être exploitée, elle nécessite d'avoir déjà un compte sur la machine concernée, avec la possibilité de compiler et d'exécuter.
    pas vraiment non, elle nécessite d'avoir un shell uniquement, lequel shell s'acquiert en général par le biais d'une autre vulnérabilité, on peut alors uploader sur la machine un binaire compilé pour l'occasion, en static, et pour l'architecture concernée
    le propos de celle-ci est de gagner des privilèges root/administrateur, c'est un vrai problème d'autant plus qu'elle est facilement reproductible, exploitable et stable

    Dans cette situation, on peut aussi faire appel à John the ripper pour cracker le mot de passe root, hein ?
    ben non, si tu es en user TOTO t'auras du mal à cracker quoique ce soit, le hash du mot de passe root est en général dans un fichier /etc/shadow qui n'est lisible que par root, mauvais exemple donc
  • Max Lothaire
    Membre confirmé
    J'aime bien les jeux de mots employés pour nommer ces failles

    Sinon, j'ai essayé de regarder le code de l’exploit donné en exemple : https://github.com/dirtycow/dirtycow.github.io/wiki/PoCs, mais pas moyen de charger github.
  • Aeson
    Nouveau Candidat au Club
    mais pas moyen de charger github.
    un petit DDOS : https://www.hackread.com/ddos-attack...suffer-outage/

    Sinon concernant la faille de 9 ans qui n'a pas ete trouvée dévoilée par la communautée... ca va encore partir en troll ce post...
  • FatAgnus
    Membre chevronné
    Envoyé par Max Lothaire
    Sinon, j'ai essayé de regarder le code de l’exploit donné en exemple : https://github.com/dirtycow/dirtycow.github.io/wiki/PoCs, mais pas moyen de charger github.
    Code :
    1
    2
    3
    wget https://gist.githubusercontent.com/scumjr/17d91f20f73157c722ba2aea702985d2/raw/a37178567ca7b816a5c6f891080770feca5c74d7/dirtycow-mem.c
    gcc -Wall -o dirtycow-mem dirtycow-mem.c -ldl -lpthread
    ./dirtycow-mem
    Sur mon Ubuntu 16.04 (Linux 4.4.0-43) ça passe bien sous l'utilisateur root, mais mon système gèle au bout de quelques secondes, qui m'a obligé à le redémarrer électriquement.
  • Aeson
    Nouveau Candidat au Club
    Je dis ca je dis rien... http://www.developpez.net/forums/d16...s/#post8775401

    Rendre un soft OpenSource a mit down internet au US...
  • marsupial
    Expert éminent
    Envoyé par Aeson
    un petit DDOS : https://www.hackread.com/ddos-attack...suffer-outage/

    Sinon concernant la faille de 9 ans qui n'a pas ete trouvée dévoilée par la communautée... ca va encore partir en troll ce post...

    //

    Rendre un soft OpenSource a mit down internet au US...
    C'est celui qui dit qu'y est comme on dit dans les cours de maternelle.

    Pour la faille en elle même, je suis pour le minimaliste afin d'optimiser les ressources exploitées à condition de ne pas rogner sur la sécurité.
  • Squisqui
    En attente de confirmation mail
    Envoyé par marsupial
    Pour la faille en elle même, je suis pour le minimaliste afin d'optimiser les ressources exploitées à condition de ne pas rogner sur la sécurité.
    C'est un idéal plutôt difficile à atteindre. OpenBSD ne rogne jamais sur la sécurité, mais ça fait de lui un OS lent. Au risque de surprendre les experts en sécurité, il faut savoir faire des choix entre sécurité et performance. Par exemple, il est inutile d'avoir un système en béton armé si c'est pour le trouer en installant Xorg.
    La vision de Linus Torvald consiste à tout mélanger et considérer les failles comme de simples bogues. En même temps, les bogues finissent toujours par être détourné un jour ou l'autre pour attaquer un système alors ça revient à peu près au même.
  • CaptainDangeax
    Membre expérimenté
    C'est léger comme faille. Pour être exploitée, elle nécessite d'avoir déjà un compte sur la machine concernée, avec la possibilité de compiler et d'exécuter. Dans cette situation, on peut aussi faire appel à John the ripper pour cracker le mot de passe root, hein ? La sécurité informatique commence par l'accès au bâtiment, la suite étant de savoir à qui et comment on file un accès.
  • marsupial
    Expert éminent
    Préconisations :

    * bannir les langages de scripts web ==> html5
    * utiliser un add-on bloquant les scripts ==> de préférence en web assembly
    * compartimenter les apps type sandbox/container
    * géolocalisation à l'authentification
    * stop consommer les ressources avec des applis useless ( surcouche logicielle constructeur )
    * merci de coder vos apps en C/C++/Objective-C optimisé intelligemment
    * recoder en normes françaises au pire, au mieux une spécifique pour les cas "urgents"

    edit : * merci de toujours penser hack

    Valable tout smartphone grand public.

    Ou pas. Surtout.

    A 7 milliards et quelques de smartphones dans le monde dont l'accès admin se protège par une séquence... je relève les copies l'été prochain.