IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Sparkle Updater, un framework populaire d'automatisation de mise à jour,
Compromet la sécurité d'OS X

Le , par Stéphane le calme

43PARTAGES

4  0 
Le framework Sparkle Updater est un framework open source populaire de mise à jour d'applications Mac qui revendique une utilisation par des milliers d'applications à l'instar de CSS  Edit, Coda, Miro, Pixelmator, SequelPro, Tunnelblick, VLC ou encore Adium (l'alternative à Pidgin sur Mac). Les développeurs s'en servent pour automatiser le processus de mise à jour de leur application afin que les utilisateurs n'aient pas à se préoccuper de savoir si leur application est la dernière en date disponible.

La mise en place de Sparkle Updater implique l'implémentation d'un composant côté client à l'intérieur de son application, une tâche relativement simple pour la plupart des développeurs d'applications Mac App, mais également la mise en place d'un serveur Sparkle  Updater, appelé serveur AppCast.

Il faut noter qu'AppCast est un protocole qui ressemble à la diffusion de flux RSS dans la mesure où il diffuse les notifications de mise à jour et les notes de version dès lors que les développeurs ont rendu disponible une nouvelle version. Toutes ces données sont envoyées via des messages XML.

Un utilisateur d'une application qui se sert de Sparkle peut choisir de rechercher manuellement des mises à jour via le menu proposé par l'application, ou alors laisser l'application s'en charger automatiquement à des intervalles de temps régulier.

Le chercheur en sécurité Radoslaw Karpowicz a découvert que ces informations de mise à jour sont envoyées en HTTP : « récemment, je faisais des recherches connexes à différentes stratégies de mise à jour et j'ai testé quelques applications tournant sur Mac OS X. Ce petit weekend de recherche m'a permis de découvrir qu'il y a plusieurs applications non sécurisées. J'ai découvert qu'il y a des vulnérabilités qui permettent à un attaquant de prendre le contrôle d'un autre ordinateur sur le même réseau (via MITM). J'ai effectué mes tests sur OS X 10.10 (Yosemite) et 10.11 (El Capitan) avec la dernière version du logiciel, bien que cela devrait fonctionner avec des versions plus anciennes ».

Il a précisé que « la vulnérabilité ne réside pas dans la signature du code elle-même. Elle existe à cause de la fonctionnalité fournie par la vue Webkit qui permet l'exécution de Java et la capacité de modifier du trafic HTPP non chiffré (réponse XML) ».

Il a découvert deux vulnérabilités : la première est en relation avec la configuration par défaut (HTTP) qui n'est pas sécurisée et peut conduire à des attaques de types MITM ou d'exécution de code à distance, la seconde est le risque de parser file://, ftp:// et d'autres protocoles dans le composant WebView. C'est une faille de sécurité côté serveur qui pourrait permettre le remplacement de fichiers XML et permet donc de viser toutes les personnes utilisant l'application. Il précise que c'est possible même sans connaître la clé privée DSA, sans modifier le binaire de l'application côté serveur et sur HTTPS.

Dans son expérience pour prouver le concept, le chercheur s'est servi du composant Webview pour exécuter des instructions contenues dans le fichier XML. Il a été en mesure de tirer parti de ce point d'entrée pour déclencher l'exécution des instructions. En fonction des compétences de l'attaquant et sa capacité à lier les exploits Mac OS X, il est théoriquement possible que le système soit entièrement compromis.


Le développeur a également été en mesure de forcer le système local à allouer plus de mémoire que nécessaire au processus de mise à jour, créant ainsi un état de quasi-attaque par déni de service. Il a également lancé une attaque XXE (XML External Entity) qui a conduit à la divulgation des fichiers locaux.

« OS X ne recherche pas de signature ou de certificat et ne valide pas une application téléchargée sur internet », a-t-il expliqué, rajoutant par la même occasion que les bogues qu'il a découverts peuvent être utilisés pour contourner GateKeeper, le service de sécurité d'OS X.

Le chercheur a contacté les développeurs du framework Sparkle Updater qui ont publié une version 0.13.1 pour corriger ce problème. Le chercheur a alors publié des instructions sur la façon de tester une application Mac et voir si elle est vulnérable à cette faille Sparkle et à une attaque de type MITM.

Dans le trafic réseau, une requête Sparkle Updater ressemble à ceci (cas de VLC) :

Code : Sélectionner tout
1
2
3
4
5
6
7
GET /vlc/sparkle/vlc-intel64.xml HTTP/1.1
Host: update.videolan.org
Accept: */*
Accept-Language: en-us
Connection: keep-alive
Accept-Encoding: gzip, deflate
User-Agent: VLC/2.2.1 Sparkle/a425c42
Et voici à quoi ressemble la réponse :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle"  xmlns:dc="http://purl.org/dc/elements/1.1/">
   <channel>
      <title>VLC Changelog</title>
      <link>http://update.videolan.org/vlc/sparkle/vlc.xml</link>
      <description>Most recent changes with links to updates.</description>
      <language>en</language>
      [...]
Dans la requête il y a un entête générique User-agent avec la valeur VLC/2.2.1 Sparkle/a425c42 qui vous donne le nom du logiciel ainsi que sa version actuelle. Des informations suffisantes pour vous permettre de conclure que l'application se sert de Sparkle Updater, le trafic n'est pas chiffré (HTTP au lieu de HTTPS), il est donc vulnérable. Il est également possible de le voir dans la réponse depuis la chaîne de caractères xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle".

Source : blog Radoslaw Karpowicz, blog Radoslaw Karpowicz (instructions pour savoir si une application est vulnérable)

Voir aussi :

Safari : un bogue lié à la fonction de suggestions fait planter le navigateur, un bogue rencontré aussi bien sur OS X que sur iOS

Ransom32 : le premier ransomware JavaScript, il est capable de s'exécuter sur Windows, Linux et Mac OS X

Une erreur dans cette actualité ? Signalez-nous-la !