OSX : Dylib hijacking (whitepaper)

Le whitepaper de la présentation qui a eu lieu à la CanSecWest est finalement disponible sur le site de VirusBulletin (pdf).

EDIT:

Le white-paper montre deux cas d’attaques sur les binaires OSX.

Dans le premier cas un binaire peut avoir un lien optionnel (weak) pour le chargement d’une librairie (on peut imaginer que ce soit utilisé par un système de plugin). L’avantage de ce cas là c’est que potentiellement aucune librairie n’est présente au path indiqué dans le header du binaire OSX (format MachO) laissant ainsi à l’attaquant la possibilité de placer sa librairie malicieuse.

Le second cas se base sur les @rpath. Un binaire peut indiquer qu’il a besoin d’une librairie dont il ne connait pas exactement le path. Dans ce cas là le header contiendra des paths du type @rpath/chemin/vers/lib.dylib. Le binaire aura aussi une liste de ces rpath possibles indiquée dans son header.
Le loader OSX va donc substituer la chaine « @rpath/ » dans le chemin exporté par chaque valeur de la liste jusqu’à trouver un chemin où la librairie est présente.
Si aucune librairie n’est présente dans le (ou les) premier paths calculés alors ça laisse à l’attaquent la possibilité de placer une librairie qui sera prioritaire par rapport à celle légitime.

La création d’une librairie malicieuse fonctionnelle requiert quelques particularités qui peuvent être définies depuis XCode.
Sur Github, Synhack fournit un script Python facilitant la génération d’une dylib malicieuse fonctionnelle pour peut que l’on dispose d’un squelette de dylib.

Il fournit aussi un script Python permettant de scanner le système à la recherche de programmes vulnérables à ces attaques.
Et c’est la grande question qu’on attendait : est-ce que ça touche beaucoup de programmes ? La réponse est oui, la technique devrait par conséquent attirer de nombreux auteurs de malwares.

L’autre question est à quoi peut servir cette attaque ?
Principalement ça permettra à des malwares de se rendre persistant tout en étant discret. Comme si sous Windows un malware se faisait charger par un programme légitime sans avoir à créer la moindre clé en registre.
Ensuite l’auteur indique que l’attaque peut être utilisé contre l’outil interne Gatekeeper d’OSX qui demande à l’utilisateur une validation pour lancer un exécutable si celui-ci ne provient pas du AppStore. Dès lors un malware ayant obtenu un accès sur un système pourrait exploiter cela pour installer d’autres malwares… De quoi intéresser les botherders.

Est-ce que ça permet d’entrer dans un système OSX ou de faire une escalade de privilège ?
Vraisemblablement non, il faudrait en plus que les PATHs où l’on peut placer la dylib malicieuse soient peu protégés (mauvaises permissions), ce qui n’est pas discuté dans le whitepaper. Mais peut-être que des cas particuliers seront découverts.

Pour le moment il semble qu’Apple ne souhaite pas corriger le problème.