Si dans un premier le temps le buzz était alimenté par les "99%", il est ensuite un peu retombé car la faille ne semblait destinée qu'au cache-cache. Saurik a dévoilé il y a quelques jours comment chainer MasterKey aux outils de développement d'Android pour cette fois-ci passer root. Du coup, doit-on avoir peur de cette faille ?
Si vous avez du contenu professionnel sensible sur votre smartphone, il est temps de l'effacer. Si vous avez encore des smartphones sous scellés, il est temps de dumper les bases sqlite !
MasterKey avec des mots simples
Une application Android est un fichier dont le nom se termine par .apk, il s'agit en fait d'un fichier "archive" ZIP classique. Pour vérifier que l'application est bien celle du développeur, chaque fichier est signé. Ce qui donne grosso modo :- 0 | fichier0.ext | signaturefichier0
- 1 | fichier1.ext | signaturefichier1
- 2 | fichier2.ext | signaturefichier2
- ...
- n | fichiern.ext | signaturefichiern
- 0 | fichier0.ext | signaturefichier0
- 1 | fichier1.ext | signaturefichier1
- 2 | fichier2.ext | signaturefichier2
- 3 | fichier2.ext | signaturefichier2
... - n+1 | fichiern.ext | signaturefichiern
MasterKey dans les mains de Saurik
Pour essayer l'automatisation de l'exploit voici les liens vers la version et la version Windows. Comme vous pouvez le voir sur la capture d'écran, l'exploit fonctionne bien avec Mac OS X et un Galaxy Nexus en rom stock :La séquence exécutée par l'exploit est la suivante (ou ici):
- récupérer un application "intéressante" (se sera souvent Settings.apk)
- utiliser MasterKey pour cacher un AndroidManifest.xml personnalisé (flag android:debuggable)
- installer l'APK avec l'AndroidManifest.xml personnalisée
- lancer l'application à travers le debugger
- poser un arrêt sur android.os.MessageQueue.next()
- passer une commande en argument à java.lang.Runtime.getRuntime().exec() (avec privilèges)
$ echo ro.kernel.qemu=1 >/data/local.propAprès le reboot, "adb root" vous ouvre la voie pour le root permanent (lien vers un "su"):
$ adb shell mount -o remount,rw /system $ adb push su /system/xbin $ adb shell chmod 6755 /system/xbin/su $ adb shell rm /data/local.prop $ adb rebootLe root n'est qu'accessoire dans cette histoire. Si votre niveau vous le permet, prenez le temps de lire tout le raisonnement de Saurik. Très instructif.
Alors, on patche ou pas cette faille ?
Vous avez plusieurs méthodes pour patcher la faille MasterKey et ses cousines. La première est de passer à CyanogenMod. Moins radical mais tout autant efficace pour cette faille : ReKey.Bien entendu ces deux méthodes nécessitent d'être root, mais ce n'est plus un problème dans notre cas.
Pour ma part je ne patche pas car je trouve très pratique dans mon utilisation d'Android de pouvoir réutiliser la signature du développeur depuis une rom stock.
L'exploitation de MasterKey façon Saurik nécessite un accès physique à mon terminal… qui de toutes façons est synonyme de compromission imminente.
Juste pour éviter une mauvaise blague par un collègue, chiffrez votre terminal, effacez la partition recovery et reverrouillez le bootloader.
Et si vous avez activé ADB, utilisez mon ADB-Lock (la sécurité par clef RSA peut être neutralisée…).
source : Saurik
Aucun commentaire:
Enregistrer un commentaire