web-dev-qa-db-fra.com

Quel est l'impact possible du bug «Dirty COW» de dirtyc0w a.k.a.

J'ai entendu parler de Dirty COW mais je n'ai pas trouvé d'écriture décente sur la portée du bug. Il semble que l'exploit puisse écraser tout fichier non inscriptible, ce qui me fait deviner que la racine locale est possible via la substitution de programmes SUID. Est-ce correct? Que savons-nous d'autre sur Dirty COW? Est-il possible de l'exploiter à distance? Cela affecte-t-il Android?

69
d33tah

Il ne peut pas être exploité à distance sans une autre vulnérabilité. Vous devez déjà être en mesure d'exécuter des commandes sur le système.

Un exemple classique serait un shell Web. Supposons que le serveur exécute une application Web qui présente une vulnérabilité vous permettant de télécharger un shell Web ou d'exécuter d'autres commandes système. Ces commandes seront généralement exécutées en tant qu'utilisateur à faibles privilèges, parfois appelé www-data ou similaire.

Avec cet exploit, vous pourriez écraser le fichier /etc/passwd pour donner www-data l'UID 0. Maintenant www-data a des privilèges root.

Cependant, j'ai essayé plusieurs choses et modifié /etc/passwd n'a pas fonctionné sur mon système. Vous pouvez définir l'UID d'un utilisateur sur 0, mais vous devrez alors vous reconnecter, ce qui n'est pas vraiment une option si vous ne disposez que d'un shell Web. Le meilleur exploit armé que j'ai vu jusqu'à présent écrase /usr/bin/passwd, le binaire utilisé pour changer le mot de passe d'un utilisateur et dont le bit SUID est défini, avec un shellcode qui exécute /bin/bash. Certaines limites de l'exploit semblent être: vous ne pouvez écraser que les octets existants, sans rien ajouter à un fichier. Je n'ai pas non plus pu écrire plus de 4 Ko exactement dans un fichier.

Quant à l'affectation d'Android, j'ai recherché dans Android 4.4 git repo la fonction en question (follow_page_pte) et je n'ai reçu aucun résultat, je veux donc dire "non", mais ne me citez pas là-dessus.

Edit: Android est affecté - voir cette preuve de concept .

55
Volker

La vulnérabilité de la vache sale, est une vulnérabilité d'élévation de privilèges dans les versions du noyau Linux 2.6.22 et plus haut; il existe depuis 2007 et a été corrigé le 18 octobre 2016.

Quel est l'impact possible du bug dirtyc0w?

Un utilisateur local non privilégié pourrait utiliser cette faille pour accéder en écriture à des mappages de mémoire autrement en lecture seule et ainsi augmenter ses privilèges sur le système.

Cette faille permet à un attaquant disposant d'un compte système local de modifier les fichiers binaires sur disque, en contournant les mécanismes d'autorisation standard qui empêcheraient la modification sans un ensemble d'autorisations approprié.

Est-il possible de l'exploiter à distance?

il n'est pas directement exploitable à distance; vous avez d'abord besoin d'une autre faille pour vous donner un accès à distance au système, comme indiqué @ IMSoP dans son commentaire,

il est évalué comme un bogue important :

Impact important

Cette note est attribuée aux failles qui peuvent facilement compromettre la confidentialité, l'intégrité ou la disponibilité des ressources. Ce sont les types de vulnérabilités qui permettent aux utilisateurs locaux d'obtenir des privilèges, aux utilisateurs distants non authentifiés de visualiser les ressources qui devraient autrement être protégées par l'authentification, aux utilisateurs distants authentifiés d'exécuter du code arbitraire ou aux utilisateurs distants de provoquer un déni de service.

Cela affecte-t-il Android?

Oui, car Android utilise le noyau Linux.

Suis-je affecté?

Si vous avez un appareil exécutant un noyau Linux supérieur à 2.6.22, il y a de fortes chances que vous soyez vulnérable. Il en va de même pour toutes les versions de Android qu'elles proviennent de Samsung, Google, Cyanogen, MIUI ou d'autres fournisseurs, car elles n'ont pas encore publié de mises à jour de sécurité.

Afin d'exploiter cette vulnérabilité, l'attaquant doit exécuter du code sur le périphérique affecté, ce qui dans le cas d'Android peut être effectué via le Android Debug Bridge (ADB) sur USB ou en installant une application qui utilise l'exploit.

Mise à jour

Un chercheur de sécurité décrit sur ce blog comment exploiter la faille à distance

Les exploits peuvent être utilisés contre des fournisseurs d'hébergement Web qui fournissent un accès Shell, de sorte qu'un client peut attaquer d'autres clients ou même des administrateurs de services. Les exploits par escalade de privilèges peuvent également être combinés avec des attaques ciblant d'autres vulnérabilités. Une faiblesse d'injection SQL dans un site Web, par exemple, permet souvent aux attaquants d'exécuter du code malveillant uniquement en tant qu'utilisateur non fiable. Combinées à un exploit d'escalade, cependant, de telles attaques peuvent souvent atteindre un statut racine très convoité.

Des informations utiles peuvent être trouvées ici :

  1. Comment déterminer si votre système est vulnérable?
  2. Quelle est la liste des distributions Linux affectées?
  3. Comment je le répare?
28
GAD3R

CVE-2016-5195 est un soi-disant exploit d'élévation de privilèges. Il vous permet d'élever le niveau de privilège d'un utilisateur Linux normal à root. Mais les exploits d'escalade de privilèges sont généralement des exploits locaux (ce qui signifie qu'ils s'exécutent localement sur une boîte), ce qui signifie que vous devez déjà être connecté au système d'exploitation.

L'exploit public que je vérifiais permet d'écrire des fichiers appartenant à root qui sont en lecture seule ou pas du tout accessibles aux utilisateurs non root. Cela vous permet de remplacer les fichiers administratifs. Vous pouvez en tirer parti pour devenir root. Par exemple. vous pouvez ajouter une ligne

 hack :: 0: 0: ,:/home/kai:/bin/bash 

à /etc/passwd. Cela ajouterait un utilisateur root sans mot de passe à la boîte.

12
kaidentity

Au moins, cela affecte Android 5.0.1 (version du noyau 3.10.54+). Je viens d'essayer ce code sur un appareil utilisant Termux et éditer un fichier appartenant à root fonctionne parfaitement. J'aime ça, car il n'y a pas de root disponible pour cet appareil.

D'un autre côté, cela me surprend, car Android tilise SELinux et je pensais que SELinux empêcherait d'écrire dans /proc/self/mem.

En fait, je viens d'essayer d'écrire dans un fichier appartenant à un utilisateur appelé sdcard, qui possède tous les fichiers sur la carte SD. Termux lui-même n'est (normalement) pas autorisé à écrire sur la carte SD. Lorsque j'essaye dirtyc0w sur un tel fichier, l'appareil se bloque et redémarre automatiquement après quelques secondes. Même adb logcat ne produit rien pendant ce blocage. Je ne sais pas ce qui se passe là-bas.

7
sigalor

À quel point est-ce effrayant?

En principe, une escalade de privilèges est assez effrayante car elle rend plus ou moins tout contrôle d'accès vide de sens. En pratique, il est à espérer que cela importe peu. Vous devez d'abord avoir un accès utilisateur limité.

Pour les serveurs, cela signifiera que les systèmes de serveurs moins bien entretenus qui sont quelque peu exploitables maintenant seront facilement rootables. Ce n'est pas comme si c'était le premier exploit d'escalade de privilèges de l'histoire.
Pour les systèmes bien entretenus, l'impact devrait être proche de zéro (ils n'auraient pas dû être exploités jusqu'à présent et devraient être mis à jour maintenant).

Pour tous les téléphones Android avant la version 7.0, cela signifie malheureusement qu'il existe un exploit qui pourrait permettre à une application malveillante de prendre le contrôle du téléphone. C'est une idée extrêmement effrayante, mais elle ne semble pas s'est produit jusqu'à présent, ou il y aurait de la panique, du chaos et des assassinats partout sur la planète. Les mises à jour automatiques élimineront rapidement ce problème, et en attendant, n'installez pas de nouvelles applications (les applications déjà présentes sur votre téléphone pour de nombreuses mois évidemment pas Détournez votre téléphone, donc ils sont probablement inoffensifs) ... problème résolu.
Il existe maintenant encore une autre façon de débrider votre téléphone (jusqu'à la prochaine mise à jour du système, au moins).

Cela signifie aussi évidemment qu'une personne ayant un accès physique à votre ordinateur et un compte d'utilisateur peut rooter votre système ... mais elle pourrait aussi bien prendre votre ordinateur et l'emporter, ou voler le disque dur, ou utiliser Firewire/Thunderbolt qui sont fondamentalement accès direct à la mémoire par câble, démarrage à partir d'un CD-ROM ou ... 200 autres choses, donc je ne pense pas que ce soit un gros problème dans l'ensemble. C'est juste une autre chose que quelqu'un peut faire.

Plus important

Étant donné qu'il s'agit du deuxième incident de longue date et de grande envergure (après CVE-2008-0166), un problème de sécurité sans doute sérieux a été créé par un responsable au nom d'un "que dois-je faire?" question, j'espère que le plus grand impact que cela aura rouvrira une discussion sur le processus d'ingénierie.

Le plus gros problème de cette vulnérabilité est, à mon avis, qu'elle a été identifiée et corrigée en 2005 (alors qu'il s'agissait simplement d'un problème théorique avec une faible probabilité de se produire), mais qu'elle est ensuite revenue car elle a causé un problème sur certaines séries d'ordinateurs centraux IBM au début des années 1990 dont peu de gens ont entendu parler. Ce qui, franchement, 99% de tous les utilisateurs de Linux s'en moquent moins, et qui aurait pu être fait par un correctif/correctif dépendant du système pour seulement s/390. Mais cela ne s'est pas produit et le problème a disparu dans l'oubli jusqu'à 11 ans plus tard.

Ceci est très similaire à l'introduction de 2008-0166 où quelqu'un a édité du code (qui fonctionnait correctement) sans en comprendre les implications, uniquement parce que Valgrind a affiché un avertissement.

Peut-être que cela aidera à sensibiliser davantage les responsables à la compréhension des implications exactes d'un changement de code pour la grande majorité des utilisateurs, et une évaluation globale plus critique (avec examen par les pairs?) Des changements de code peut évoluer. J'espère que c'est le cas.

6
Damon

The Guardian semble dire que c'est un OUI, mais il semble que cela dépend de la variante de Android en question:

Cela vaut également pour Android: le système d'exploitation mobile est affecté. Alors que les appareils haut de gamme Android, tels que le Galaxy S7 et Pixel, reçoivent régulièrement des mises à jour de sécurité, la grande majorité des appareils Android vendus) en reçoivent peu, voire aucun. , mises à jour post-vente.

Google a refusé de commenter, mais a confirmé que Android est l'une des distributions Linux affectées. La société a publié un avis de sécurité des partenaires pour alerter Android partenaires, l'un des les étapes à ces partenaires, puis en émettant un patch.

3
katrix

Le bogue permet à un attaquant qui peut exécuter du code arbitraire d'écrire dans une mémoire en "lecture seule". Les caches Linux utilisaient souvent des fichiers en mémoire morte. Comme vous l'avez deviné, cela vous permet de faire des choses comme changer le contenu d'un fichier racine setuid pour exécuter du code arbitraire, comme un Shell, en tant que root.

Le bogue en soi n'est pas exploitable à distance car il nécessite que l'attaquant exécute un exécutable spécifique créé par l'attaquant. Généralement, lorsque nous utilisons les mots "exploitables à distance", il n'est pas nécessaire d'exécuter du code arbitraire.

Cependant, il existe des situations où un attaquant peut déjà exécuter du code arbitraire par conception qui n'est pas aussi évident que l'accès ssh. Cela peut être à l'origine d'une certaine confusion, car il n'est pas toujours évident qu'un attaquant dispose de privilèges d'exécution de code. Potentiellement, les environnements de construction automatisés partagés peuvent être vulnérables à ce type d'exploitation, car ils permettent souvent au développeur d'exécuter du code arbitraire. Un attaquant dans ce scénario pourrait potentiellement obtenir des privilèges root.

Je ne me sens pas qualifié pour répondre si ce bogue est exploitable sous Android. S'il est exploitable sur Android la portée serait très probablement limitée au propriétaire du téléphone pouvant "rooter" l'appareil, plutôt qu'à un attaquant distant obtenant un quelconque contrôle sur le téléphone.

3
Steve Sether