Sécurité : iOS a pris une grosse avance sur Android

La redaction |
C'est du moins la conclusion que l'on peut légitimement tirer de l'atelier consacré au sujet qu'ont animé Charlie Miller et Dino Dai Zovi à l'occasion de la conférence RSA qui se déroulait la semaine dernière à San Francisco. Pour faire court, simple et efficace : il faut au moins quatre à cinq "exploits" logiciels pour réussir à installer un rootkit persistant sur iOS contre seulement deux, voire même un seul de très belle facture, pour Android. Non seulement iOS a considérablement progressé depuis son lancement initial en 2007, mais il s'offre aujourd'hui le luxe d'intégrer des dispositifs de sécurité rares.

photo

Indice du succès d'iOS et de son importance dans l'écosystème informatique actuel, l'atelier de Charlie Miller et de Dino Dai Zovi sur la sécurité du système d'exploitation embarqué d'Apple a fait salle comble. La queue pour entrer dans la salle capable d'accueillir environ 350 personnes, sur le mode « premier arrivé, premier servi », sans réservation, s'étendait sur plusieurs dizaines de mètres dans les travées du vaste centre de conférence de la ville, le Moscone Center. Dino Dai Zovi n'a pu s'empêcher de le relever : l'an passé, son atelier consacré à iOS n'avait attiré qu'une dizaine de personnes, dont deux journalistes…

L'objet de l'atelier de cette année ? Ce qu'il faut pour installer un rootkit persistant sur un terminal iOS, c'est-à-dire un logiciel disposant des privilèges les plus élevés sur le système de fichiers interne au terminal et qui continue de fonctionner même après redémarrage de l'appareil. Pourquoi est-ce intéressant ? Notamment parce que cela correspond ni plus ni moins à un jailbreak dit untethered.

Les co-auteurs du Manuel du pirate d'iOS, qui doit sortir au mois d'avril aux États-Unis, ont détaillé, lors de leur atelier, les dispositifs de sécurité dont dispose désormais iOS. L'inventaire est impressionnant, tout autant que l'évolution. Pour Charlie Miller, le système d'exploitation mobile d'Apple est clairement de plus en plus sécurisé : il y a encore quelques années, il aurait pu prendre le contrôle d'un iPhone… « en dormant », ironise-t-il en revenant sur ses exploits passés. Mais aujourd'hui, l'histoire est bien différente.

skitched

Que faut-il donc pour installer, sur un iPhone par exemple, un rootkit persistant ? Le point de départ, c'est l'injection de données malicieuses visant à exploiter une vulnérabilité permettant de corrompre la mémoire et d'exécuter du code logiciel dont l'exécution est théoriquement interdite par les mécanismes de protection d'iOS. On contourne ainsi le contrôle de signature du code. Toutefois, le code exécuté reste bloqué dans le « bac à sable » et ne peut donc accéder qu'à des ressources limitées. Il faut alors sortir du bac à sable pour réussir à exploiter une vulnérabilité afin d'accéder à des niveaux de privilèges plus élevés. Ceci fait, il faut exploiter une nouvelle vulnérabilité d'accès au noyau pour en exploiter… une vulnérabilité.

Charlie Miller l'explique, presque admiratif : « même lorsque vous exécutez un processus en tant que root (le niveau le plus élevé de privilèges, NDLR), vous n'avez pas accès au noyau ! C'est pour ainsi dire unique à iOS. » Ce n'est qu'une fois arrivé à utiliser une vulnérabilité du noyau qu'il devient possible de procéder à jailbreak temporaire — qu'il faudra encore réussir à pérenniser.

Alors, certes, en termes de sécurité, il est possible de commencer à dérober des données avant ce stade, et même dès que l'on est capable d'exécuter du code en contournant le contrôle de signature du code. Mais cela est limité à ce qui est accessible directement depuis le bac à sable, et cela représente « de moins en moins de choses. » Pour pérenniser le jailbreak, un autre exploit est nécessaire, qui doit permettre « de s'immiscer dans le noyau au démarrage », explique Miller. Bref, pour lui, il faut compter un minimum de quatre à cinq exploits pour réussir un jailbreak ne disparaissant pas au redémarrage — « c'est beaucoup plus facile sur Android », ajoute-t-il.

skitched

L'architecture de sécurité d'iOS s'apparente pour lui à un système de défense en profondeur. Tout d'abord, le système d'exploitation a été dépouillé de nombreuses choses, réduisant d'autant la surface d'attaque : « pas de Flash, pas de Java… même MobileSafari n'est pas capable de présenter certains types de fichiers. » Certains PDF ne sont pas supportés par iOS, ou plutôt certaines de leurs fonctions : « il y a plus de 200 moyens de faire planter le rendu PDF sur OS X. Sur iOS, seulement 7 % de ces cas fonctionnent. […] Il y a moins de code à attaquer, donc moins de bugs. » Et puis iOS fait l'impasse sur pas mal d'outils « utiles » aux hackers, comme le shell.

La plupart des processus « s'exécutent avec l'utilisateur mobile et non pas root », le premier devant se contenter de droits restreints. Plus fort encore : « certaines applications ont des permissions spécifiques, définies dans un profil de provisioning signé par Apple. Ce n'est pas parfait, mais c'est comme ça. » En clair : certains éléments logiciels d'iOS vérifient, au moment d'être sollicités par une application, que celle-ci a bien le droit de les solliciter. Ainsi, « bien que deux processus fonctionnent avec l'utilisateur mobile, tous les deux n'auront pas le droit de faire les mêmes choses. »

De plus, iOS intègre des types de contrôle de la signature du code : un premier au lancement et un second… durant l'exécution - quelque chose « d'assez unique », relève Miller. Le but ? Permettre à Apple de s'assurer que les applications exécutées sont bien celles qui ont été approuvées, et qu'elles n'ont pas été modifiées en cours de route par un téléchargement, voulu par l'éditeur ou malicieux. L'inventaire continue : pas de mémoire exécutable, ce qui signifie que « l'on ne peut pas injecter du code dans la mémoire et le faire tourner. » Petite subtilité : MobileSafari dispose d'un privilège exclusif, celui de pouvoir signer dynamiquement du code, indispensable à la compilation JavaScript à la volée.

Et il faut encore compter la randomisation de l'allocation de la mémoire, très étendue puisqu'elle concerne le code exécutable, les librairies, la pile, etc. Et puis vient le sandboxing, l'emprisonnement du code le plus vulnérable (ou compromis) potentiellement — celui des applications — dans des bacs à sable où ils ne peuvent accéder qu'à peu de choses. Les applications n'ont grosso modo accès qu'à leur dossier, qui doit contenir leur cache, leurs fichiers temporaires, leurs préférences, etc.

skitched

Au final, pour Charlie Miller et Dino Dai Zovi, face à ces mesures de protection, les « développeurs de jailbreak sont très intelligents. » Comex ? « Sans aucun doute, il vient du futur […] il est la preuve vivante de l'existence de la machine à voyager dans le temps. » Leur estime pour les auteurs de jailbreak est telle qu'ils s'interrogent sur les raisons qui les ont poussés à lancer, en 2010, la version 2 du site jailbreakme.com : « c'était trois à six mois de boulot. Ils étaient bien conscients que ce serait patché en deux semaines. Je ne pensais pas qu'ils ouvriraient le site. »

Si, du point de vue de la sécurité des utilisateurs d'iPhone, les efforts considérables d'Apple peuvent paraître positifs, les deux spécialistes n'en sont pas moins critiques. Pour eux, de nombreux gains de sécurité d'iOS sont d'abord « les effets secondaires de la volonté de contrôle d'Apple […] C'est un peu comme lorsque l'on vit dans un État policier, il y a moins de criminalité, mais ce n'est qu'un effet secondaire. »
avatar XiliX | 
[quote=yoa]@Nicolas L'article indique que deux fois moins de failles doivent être exploitées sur Android donc vous en concluez que c'est deux fois plus facile. J'aimerai bien comprendre votre savant calcul.[/quote] C'est là où tu as fait une erreur d'interprétation de l'article. Tu parles en nombre de failles, or l'article parle en nombre [b]d'étapes[/b] d'exploitation des failles. Quand il faut quatre étapes pour pouvoir installer un rootkit stable sous iOS et deux (voire une seule) étapes pour installer un rootkit stable sous Android, on peut déduire que c'est deux (voire quatre) fois plus facile non ?
avatar Anonyme (non vérifié) | 
Super petit article bravo.
avatar Hindifarai | 
[quote=XiliX] C'est là où tu as fait une erreur d'interprétation de l'article. Tu parles en nombre de failles, or l'article parle en nombre d'étapes d'exploitation des failles. Quand il faut quatre étapes pour pouvoir installer un rootkit stable sous iOS et deux (voire une seule) étapes pour installer un rootkit stable sous Android, on peut déduire que c'est deux (voire quatre) fois plus facile non ? [/quote] Non. Il n'est nulle part mention de la difficulté des étapes à passer sur android. De plus Charlie Miller et Dino Dai Zov sont des spécialistes en sécurité applicatives mac. Ce ne sont pas les mêmes sommités lorsqu'il s'agit de failles applicatives android ou GNU/Linux. RMS est la référence sur le sujet des noyaux GNU et ça n'est pas pour autant que vous aller l'écouter et boire ses paroles quand il chante les louanges de ces derniers. Un minimum d'objectivité est parfois nécessaire, mais c'est là le travail du journaliste...normalement.
avatar Marc-Alouettes | 
@Hindifarai : "Il n'est nulle part mention de la difficulté des étapes à passer sur Android." Si tu relis bien, il en est, au contraire, largement question. (d'ou le titre de l'article) Ex1 : iOS fait l'impasse sur pas mal d'outils « utiles » aux hackers, comme le shell (présent sur Androïd) Ex2: « même lorsque vous exécutez un processus en tant que root (le niveau le plus élevé de privilèges, NDLR), vous n'avez pas accès au noyau ! C'est pour ainsi dire unique à iOS. »
avatar Hindifarai | 
@ Marc-Alouettes Ce que vous citez n'exprime en rien la possible difficulté des étapes. Ca laisse entrevoir les différences de moyens mis à disposition et donc les chemins différents, mais ça ne parle pas de difficulté. Un overflow peut être extrêmement simple et ne nécessitera pas un shell. Le sain graal désigné en l'utilisateur root n'est qu'un des moyens pour arriver à de mauvaises fins mais n'est pas une nécessité.
avatar BenUp | 
@cowboy funcky [06/03/2012 22:36] via MacG Mobile @BenUp : C'est débile... Gogole à la main sur la plupart des recherches faites sur internet... Alors que Apple propose un écosystème qui n'empêche aucunement d'echanger avec les autres... En quoi Apple serait plus nuisible que Gogole ? C'est plus ce dernier qui se rapproche de Big Brother... Quand a la discussion sur le titre... Relis l'article c'est Charles qui le dit ! ----------------- Oui mais Android ou Chrome eux sont opensource loin d'être le cas des solutions Apple. Entre un contrôle à vue et un monde 100% fermé, je choisi de loin Google qui ne se cache pas au final.
avatar Philactere | 
@BeePotato : No problemo, j'apprécie qu'on puisse revenir à une discussion courtoise :-) Je parlais d'un "petit éclairage" étant bien conscient que si iOS est blindé à la base il sera bien évidement plus difficile de pirater un iDevice. En fait je voulais porter la discussion sur l'importance hiérarchique des éléments à protéger dans un OS. Je me souviens de discussions plus anciennes où certains informaticiens avaient à cœur de protéger l'integrité du système pour éviter rootkits et autres troyens permettant d'organiser des attaques DDOS, relais de spam et autres joyeusetés, ce qui est tout à fait légitime. Mais par ailleurs certains semblaient aussi se soucier nettement moins de l'intégrité des données de l'utilisateur sur des postes perso. En lisant cet article, et particulièrement la phrase sur le vol des données perso "faciles" alors qu'il faut 4exploits de taille pour installer un rootkit, ce vilain goût de déjà vu m'est revenu en bouche, comme si on s'appliquait à rendre inviolable le système pour lui-même mais pas pour la protection des données. Je sais je grossis volontairement le trait et en protégeant le système on fini par protéger également les données, mais l'ordre des priorités n'est peut être pas toujours la même entre certains administrateurs et les utilisateurs lambdas, c'était l'objet de mon interpellation. Sur ce mes meilleures salutations :-)
avatar jacjac | 
Bon article et bons commentaires

Pages

CONNEXION UTILISATEUR