Une importante faille 0-day dans Chrome pour Android

Une importante faille 0-day dans Chrome pour Android

Mieux vaut utiliser autre chose pour l'instant

Avatar de l'auteur
Vincent Hermann

Publié dans

Société numérique

16/11/2015 4 minutes
53

Une importante faille 0-day dans Chrome pour Android

Lors de l’évènement MobilePwn2Own de la conférence PacSec qui se tenait à Tokyo, un chercheur a réussi à prendre le contrôle d’un appareil sous Android 6.0 en exploitant une unique faille. Le découvreur a indiqué que la brèche, qui s’appuie sur JavaScript, peut facilement être exploitée sur tout type d’appareil.

En fin de semaine dernière avait lieu la conférence PacSec à Tokyo. À cette occasion, des chercheurs étaient réunis pour l’évènement MobilePwn2Own qui, comme pour Pwn2Own, a pour but de chercher et exploiter des failles pour faire la démonstration d’une prise de contrôle d’appareil. La différence avec l’édition « classique » est évidemment qu’il concerne ici les plateformes mobiles. Et malheureusement pour Android, une importante faille dans Chrome permet d’exécuter du code arbitraire à distance.

Une faille 0-day dans la machine virtuelle JavaScript

Guang Gong, chercheur en sécurité pour la société Quihoo 360, a particulièrement marqué les esprits en prenant le contrôle d’un Nexus 6 de Google, équipé du dernier Android 6.0 alias Marshmallow. Il a pu installer à distance une application choisie arbitrairement (en l’occurrence BMX Bike), donc sans toucher à l’appareil. Pour ce faire, il s’est servi d’une faille résidant dans Chrome, plus particulièrement dans son moteur Javascript.

Comme l’indique à The Register l’organisateur de la conférence PacSec, Dragos Ruiu, la démonstration réalisée par Gong était remarquable : « Le plus impressionnant avec cette exploitation est qu’elle se réalise d’une traite. La plupart des gens aujourd’hui doivent exploiter plusieurs failles de sécurité pour obtenir un accès avec privilège et charger des applications sans interactions ». Toujours selon le responsable, la faille peut très facilement être adaptée pour tous les appareils Android où une version récente de Chrome (la dernière est vulnérable) est installée.

Le fait que la vulnérabilité réside dans le moteur JavaScript rend la faille évidemment très facile à exploiter. Il suffit de leurrer l’utilisateur et de l’amener à cliquer sur un lien menant vers un site malveillant. De là, la brèche va permettre de déclencher des actions à distance, jusqu’à l’installation d’une application sans que l’utilisateur ait son mot à dire. La faille permet également d’obtenir les droits root, ce qui permet à l’application d’être aussi malveillante qu’elle le souhaite,

On ne sait cependant pas exactement comment le chercheur s’y prend car s’il a fait la démonstration de sa technique, les détails n’ont pas été publiés et sont réservés aux organisateurs du concours, ainsi qu’à Google bien sûr.

Utiliser un autre navigateur en attendant que Chrome soit mis à jour

Un ingénieur de la firme de Mountain View était sur place, et on peut donc espérer qu’un correctif sera développé rapidement. Même si la faille est critique et particulièrement sérieuse, sa dangerosité reste moindre que celle de Stagefright. Dans les deux cas, les conséquences peuvent être catastrophiques, mais on parle ici d’une faille résidant dans un élément qui peut facilement être mis à jour, puisqu’il appartient à une application dépendant de la boutique Google Play.

En attendant, la solution la plus simple est d’utiliser un autre navigateur. Contrairement à une plateforme comme iOS, les butineurs peuvent embarquer leurs propres moteurs JavaScript et de rendu. Il est donc possible par exemple d’installer Firefox et de ne plus faire appel à la machine virtuelle JavaScript V8 livrée avec Chrome (et en fait souvent préinstallée sur les appareils Android). Cette recommandation est valable pour toutes les versions d’Android dès lors que Chrome est présent.

Écrit par Vincent Hermann

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Une faille 0-day dans la machine virtuelle JavaScript

Utiliser un autre navigateur en attendant que Chrome soit mis à jour

Commentaires (53)


Être root via un simple lien ?

<img data-src=" />


Chrome, le nouvel IE6 : compatible avec lui-même, gruyère de sécurité, omniprésent, hégémonique.

C’est là qu’on voit que les navigateurs sont créés par des humains : les mêmes fautes sont répétées à conditions de départ identiques. Une autre preuve que l’entropie s’applique au développement de logiciels.


Chrome tourne avec quel utilisateur sous android <img data-src=" /> permettre une élévation de privilège c’est pas du tout normal/possible… sauf s’il tourne avec des droits élevés.


Depuis qu’il a de très gros freezes chez moi, je ne l’utilise plus.

Mais j’avoue bel exploit du chercheur.


Tu sembles oublier pourquoi Chrome a été créé…. tout comme IE a été créé….

Historiquement, IE a été conçu pour prendre la main sur Internet après le raté MSN. Chrome, c’est la même chose pour enfermer et forcer à faire transiter toutes les données de navigation par un outil Google et mieux les collecter !



Ceci explique cela….


ouuh, c’est le genre d’infos a faire tourner auprès des fans de Chrome réfractaire de Firefox ça <img data-src=" />








0xFlame a écrit :



ouuh, c’est le genre d’infos a faire tourner auprès des fans de Chrome réfractaire de Firefox ça <img data-src=" />







J’ai beau utiliser Firefox sous Android, il y a quand même des bugs génants: les pages qui ne se chargent pas quand Firefox n’est pas en avant-plan, parfois obliger de “fermer” l’application qui ne charge plus rien, les pages qui se rechargent si tu passes firefox en arrière plan et que tu reviens dessus ensuite… bref, pas parfais encore.



Je suis passé récemment à Firefox (avec Duckduckgo en moteur de recherche) et je ne le regrette pas :)


de toutes façons, utiliser java…





En plus, je suppose que le hacker qui utiliserait la faille aurait accès à tout si je comprend bien, y compris les informations biométriques?


j’ai jamais dit que Firefox étais parfait, j’ai juste dit que y’a moyen d’embêter quelques fanas, ça aurait été Firefox, j’aurais dit la même chose au profit de Chrome, oui j’aime bien embêter les gens qui sacralise un logiciel ou un constructeur au détriment d’un autre.


JS pas java…


Oui c’est ça.

&nbsp;


C’est tout à fait possible.&nbsp;

C’est même ce que cherche à faire la plupart des attaques.

Le but est de trouver le service défaillant qui utilise lui des privilèges élevés pour fonctionner (gestion de la mémoire, driver quelconque etc …) et d’insérer l’exploit dedans.

&nbsp;

&nbsp;


javascript n’est pas java, aucun rapport.

&nbsp;


<img data-src=" />








jimmy_36 a écrit :



C’est tout à fait possible. 

C’est même ce que cherche à faire la plupart des attaques.

Le but est de trouver le service défaillant qui utilise lui des privilèges élevés pour fonctionner (gestion de la mémoire, driver quelconque etc …) et d’insérer l’exploit dedans.







Je veux bien, mais là ils ont l’air de dire que la faille est dans le moteur JS (et pas Stagefright par exemple, appelé depuis JS). J’aimerai bien savoir quel est le service ou bibliothèque qui tourne en élevé et n’est pas sécurisée dans ce cas là…









geekounet85 a écrit :



JS pas java…









jimmy_36 a écrit :



javascript n’est pas java, aucun rapport.

&nbsp;







Vi. Mais ça ne répond pas à ma question?



mouais, aux royaumes des aveugles les borgnes sont rois et font peur facilement.



et j’éviterais de reprendre des articles du ‘Register’ avant d’en savoir plus…


si tu es root, tu as accès à tout. tout.








coket a écrit :



de toutes façons, utiliser java…





En plus, je suppose que le hacker qui utiliserait la faille aurait accès à tout si je comprend bien, y compris les informations biométriques?







Quand tu es root tu as accès à tout oui, par contre pour la biométrie ce n’est pas évident (stockage / chiffrement)



si la clé de chiffrement est sur le tel, elle est accessible et donc exploitable. si c’est un mot de passe, ça peut être protégé, même de root.








geekounet85 a écrit :



si la clé de chiffrement est sur le tel, elle est accessible et donc exploitable. si c’est un mot de passe, ça peut être protégé, même de root.



Si le stockage est asymétrique, ce qui est présent dans l’appareil ne sert à rien, même si il venait à être accessible.



La sécurité, c’est compliqué ;p









CryoGen a écrit :



Quand tu es root tu as accès à tout oui, par contre pour la biométrie ce n’est pas évident (stockage / chiffrement)









geekounet85 a écrit :



si tu es root, tu as accès à tout. tout.







Merci&nbsp;<img data-src=" />



J’espère que ça calmera la vague actuelle qui veut qu’on foute des capteurs partout. Si la mode ne change pas, ces gens là ont déjà pas mal d’informations pour pouvoir profiter des nos prochains devices, voire plus (niveau contrôles entreprises, documents numériques, etc…).



On change de mot de passe quand on veut; pas d’empreinte papillaire, ni d’iris.



Non juste exécuter n’importe qu’elle soft avec l’utilisateur qui a lancé chrome (ce qui suffit à prendre le contrôle du système).




La faille permet également d’obtenir les droits root, ce qui permet à l’application d’être aussi malveillante qu’elle le souhaite,





Entre installer une application, et lui faire obtenir les droits root il y a une différence, mais là boom <img data-src=" />


De ce que j’en ai compris. C’est la ou iOS est mieux foutu. Les deux technos sont basé sur la “trustzone” d’ARM, mais Apple a pris soin de modifier son implémentation (appelé “Secure Enclave”) pour que cette partie de la mémoire soit uniquement accessible en write/request, et pas en read. Grace à un co-processeur dédié.



Coté Android, ils utilisent l’implémentation classique d’ARM (trustzone), et je n’ai rien trouvé indiquant qu’il était impossible de relire la mémoire.



Plus particulièrement, si j’ai bien compris, la trustzone est une facon de dédier temporairement un core en y mettant un “micro firmware” qui permet de write/request une zone mémoire sécurisé. Mais je pense qu’il serait possible, bien que complexe, d’y pousser un autre firmware permettant la lecture de cette zone sécurisé.



Si certain on des informations plus poussées, je suis à l’écoute.





Sinon concernant la forme de l’article, je trouve l’utilisation du mot 0day à tout va un peu marketeuse. Une faille est par définition 0day avant d’être publiée, donc à part faire dans le sensationnel avec des termes technique “fashion”, ca n’apporte rien de plus que dire que “Une importante faille a été trouvé dans Chrome pour Android”.

Pour être même un peu pointilleux, une faille 0day, c’est un état, donc une fois que la faille est publiée, instantanément, elle n’est plus 0day, donc le titre devient faux. Bref…


La faille ne permet de devenir root.



C’est une fausse interprétation de nextimpact je pense.



Dans le cas contraire je veux bien la source.


Oui mais non en fait.


Moi aussi.


FirefoxOS powa ! <img data-src=" />











Ou pas. <img data-src=" />








ForceRouge a écrit :



De ce que j’en ai compris. C’est la ou iOS est mieux foutu. Les deux technos sont basé sur la “trustzone” d’ARM, mais Apple a pris soin de modifier son implémentation (appelé “Secure Enclave”) pour que cette partie de la mémoire soit uniquement accessible en write/request, et pas en read. Grace à un co-processeur dédié.





Je me bats contre les scanners d’empreinte que les gens considèrent comme suffisamment sûrs pour leur confier aveuglément toutes leurs données…



Apple à ce niveau là n’est pas mieux; ils en sont même l’initiateur; et on a vu il y a quelques temps qu’un gamin de 4 (ou 6 …) ans avait profité de la sieste du papa pour coller le doigt de ce dernier sur le scanner…



Tout ce que j’ai c’est ces recommandations :



http://www.androidpolice.com/2015/10/19/google-lays-out-requirements-for-fingerp…



MUST have all identifiable fingerprint data encrypted and cryptographically authenticated such that they cannot be acquired, read or altered outside of the Trusted Execution Environment (TEE) as documented in the implementation guidelines on the Android Open Source Project site [Resources, 96].



Ce qui semble impliquer que même en Root, les données ne sont pas accessibles.


En tout cas la faille permet d’installer une application tierce sans action utilisateur :



http://www.theregister.co.uk/2015/11/12/mobile_pwn2own/



apres si ce n’est pas la définition exacte de Root … c’est déjà une énorme faille <img data-src=" />








coket a écrit :



Apple à ce niveau là n’est pas mieux; ils en sont même l’initiateur; et on a vu il y a quelques temps qu’un gamin de 4 (ou 6 …) ans avait profité de la sieste du papa pour coller le doigt de ce dernier sur le scanner…







Pour le coup, je ne vois pas trop le rapport avec la choucroute… Récupérer les empruntes de quelqu’un qui dort, ca n’a rien à voir avec de la sécurité. Il suffit de lui coller n’importe quelle surface propre et voilà, t’as les empruntes…




Pour ma part, d’après ce que j’ai compris en lisant de la documentation sur la trustzone, c’est que le cpu est mutualisé entre l’OS et la trustzone (autrement dit, ce n’est pas un coprocesseur dédié, avec sa propre mémoire, etc…). Donc le “core” qui passe en mode secure effectue une sorte de context switch pour décharger un context lié à l’OS et charger son environement securisé. Mais du coup, ou est stocké ce context sécurisé? Jusqu’où est-il mutualisé? Est-ce que le microcode vient de l’OS? ou bien c’est harcodé dans le microprocesseur? Qui l’écrit? Si ca vient de l’OS, qu’est ce qui empèche de charger un microcode qui permet la lecture de la mémoire sécurisé?



Comme je n’ai rien trouvé indiquant que c’est vraiment indépendant, géré “hardwarement” et que même l’OS n’a pas son mot à dire, je pars du principe que ca n’est pas le cas.


Si je comprend bien le concept tu as des espaces mémoire protégés en hardware contre la lecture si le processeur n’est pas en mode “trusted”, et le code exécutable en mode trusted doit être certifié (j’imagine par jeu de certificat).



Aussi, la pire faille serait d’avoir un code certifié “malveillant” ou avec une faille qui permet d’extraire le code, et de modifier l’OS pour modifier le micro-code ?



Mais ce genre d’attaque doit être limitée grâce aux certificats, non ? <img data-src=" />



(et j’admet humblement ne pas y comprendre grand chose <img data-src=" />)








Ys0kras a écrit :



<img data-src=" />

C’est du java ! En pire !

Du java non-typé.

Et au passage, la source de tous les problèmes de compatibilité des sites entre navigateurs depuis IE6.

Les vrais développeurs ne mettent pas de JS dans leur sites.





Les bons dévs font pas des trucs tordus avec le JS et ça passe sur partout sans retouche/lag.



Non être root c’est de pouvoir exécuter du code en tant qu’utilisateur root.


En faite l’implémentation peut varier d’un fabricant à un autre suivant les possibilités offertes par le SoC.



Sur ARM cela repose en effet sur la ARM trust zone et secure boot pour le chargement de firmware.



La zone mémoire utilisé par la trust zone ne peut pas être accessible (lecture et écriture) par Linux (il y a tout de même en générale une zone partagé) de plus cette zone est chiffrée (l’ARM trust zone fonctionne avec la RAM chiffré).








millman42 a écrit :



La faille ne permet de devenir root.



C’est une fausse interprétation de nextimpact je pense.



Dans le cas contraire je veux bien la source.







Bon je suis aller voir l’article source :




  • La faille n’a pas été divulguée (d’ailleurs Google va payer le mec pour la découverte de la faille)

  • La source parle de privilège élevé permettant d’installer une application: donc plus élevé qu’un utilisateur classique mais pas forcément autant que root.



    Si ca se trouve c’est une faille liée au Play Store. On ne dit pas d’où vient l’application quand elle est rapatriée par le téléphone…



L’escalade de &nbsp;droit est un classique. Car il y a beaucoup de services qui utilisent des droits supérieurs pour s’exécuter. Il suffit de trouver lesquels on peut atteindre via la VM Javascript.

Je penche pour l’allocation mémoire c’est LE grand classique.

&nbsp;


Non aucun rapport avec java désolé.

Javascript et Java sont deux langages très très différents.

&nbsp;


Oui je sais bien, mais théoriquement ca ne devrait pas être faisable avec un moteur javascript… celà dit la news comporte peut-être une erreur concernant l’élévation de privilège (au moins root)… va falloir attendre que google corrige pour avoir surement plus de précisions.


Bien sur que si, javascript n’est plus interprété comme avant, mais tourne dans une VM maintenant.

Cette VM&nbsp;elle possède des points d’accès avec des droits privilégiés aux ressources du téléphone.

Le hacker n’a qu’a trouver la fonction qui a un soucis. C’est juste une question de temps et de méthode.

&nbsp;

&nbsp;

&nbsp;








jimmy_36 a écrit :



Bien sur que si, javascript n’est plus interprété comme avant, mais tourne dans une VM maintenant.

Cette VM elle possède des points d’accès avec des droits privilégiés aux ressources du téléphone.

Le hacker n’a qu’a trouver la fonction qui a un soucis. C’est juste une question de temps et de méthode.







Je ne vois pas pourquoi une VM javascript devrait avoir des accès privilégiés… Est-ce que Firefox a des accès privilégié ?









CryoGen a écrit :





  • La source parle de privilège élevé permettant d’installer une application: donc plus élevé qu’un utilisateur classique mais pas forcément autant que root.





    Je suis d’accord une application qui a les droits d’installations n’est pas forcément root.



    Mais par contre dire qu’elle plus de droit qu’un utilisateur classique n’a pas de sens sous Android.



    Il y a en gros deux types d’utilisateur :&nbsp; root et les autres.



    root à tous les droits, les autres peuvent avoir certain droits mais jamais autant que root.



Et pourtant si, une VM est un process qui va demander des accès privilégiés sur les ressources de l’appareil.

Regarde les droits d’accès de Chrome sur ton appareil Android.

Tout ce qu’il peut faire, est faisable en exploitant les failles.

&nbsp;








jimmy_36 a écrit :



Et pourtant si, une VM est un process qui va demander des accès privilégiés sur les ressources de l’appareil.

Regarde les droits d’accès de Chrome sur ton appareil Android.

Tout ce qu’il peut faire, est faisable en exploitant les failles.







Ca ne répond pas à ma question <img data-src=" />

Pourquoi y a t’il besoin d’accès privilégié ?



Et surtout est-ce que d’autres applications (Firefox) peuvent avoir ce genre d’arrangement avec Android ?

Non parce que si c’est aussi “simple” d’avoir des accès privilégié…



Heu Pardon?? Je ne vois vraiment pas les points de comparaisons entre IE6 et Chrome. &nbsp;IE6 ne respectait pas les standard, et chrome le fait…Quand à la sécurité, c’est justement le thème de ce genre de concours Pwn2Own, permettant au éditeurs de corriger ces failles, et Chrome “desktop” est loin d’être le plus touché d’habitude http://www.nextinpact.com/news/93550-pwn2own-tous-navigateurs-sont-encore-tombes…



Au passage, les concours Pown2Own communique habituellement plus sur les “failles” en général, et pas sur un seul navigateur (même si celle ci est quand même énorme). Dommage de ne pas avoir de news sur ce qui a été trouvé (ou pas ) &nbsp;sur les autres….(même&nbsp;Dragos&nbsp;Ruiu ne fait pas de bilan dans sa timeline).&nbsp;



&nbsp;





coket a écrit :



de toutes façons, utiliser java…





En plus, je suppose que le hacker qui utiliserait la faille aurait accès à tout si je comprend bien, y compris les informations biométriques?



Outch…confondre java et javascript??? C’est vraiment différent tu sais…(j’ai vu après qu’on t’avais déjà répondu à ta deuxième question)



&nbsp;





Soltek a écrit :



Être root via un simple lien ?

<img data-src=" />



Parce que tu crois que c’est une nouveauté? &nbsphttps://fr.wikipedia.org/wiki/JailbreakMe&nbsp;



&nbsp;



Ys0kras a écrit :



<img data-src=" />&nbsp;

C’est du java ! En pire !&nbsp;

Du java non-typé.&nbsp;

Et au passage, la source de tous les problèmes de compatibilité des sites entre navigateurs depuis IE6.&nbsp;

Les vrais développeurs ne mettent pas de JS dans leur sites.





Du java en pire? N’importe quoi, tu ne peux assurément pas comparer les deux (mis à part s’exécuter sur une VM? mais à ce niveau là, tu peux dire que n’importe quel langage interprété comme &nbsp;python=java) &nbsp;!&nbsp;

&nbsp;Les “vrais” développeur? C’est une blague? Sans être fan du langage, quand tu vois le succès de node.js….









Slaurent a écrit :



Parce que tu crois que c’est une nouveauté? &#160https://fr.wikipedia.org/wiki/JailbreakMe





Pardons mais on parlait du root d’Android là. C’est incomparable avec le jailbreak d’iOS.



Sans être spécialiste IOS, il me semblait que le jailbreak permettait d’avoir un &nbsp;accès root…je ne vois pas ce qui est incomparable….(car qui dit accès root, dis que tu peux aussi faire n’importe quoi sur l’iphone , le site aurait pu t’installer autre chose qu’un Cydia)&nbsp;

A la base, c’était juste pour te signaler qu’un lien internet permettant de changer ton niveau d’accès , c’est pas si nouveau que ça ….



https://en.wikipedia.org/wiki/IOS_jailbreaking


D’accord mais bon je ne vais pas comparer l’élévation de privilège de Windows et de Linux donc non plus d’iOS et Android.