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 !

Un chercheur découvre une faille permettant une élévation de privilèges dans OS X 10.10
Et propose un correctif

Le , par Stéphane le calme

0PARTAGES

1  0 
Stefan Esser, chercheur allemand pour le compte de l’entreprise d’audit de sécurité SektionEins, a révélé la présence d’une vulnérabilité permettant une élévation de privilèges dans OS X, qui affecte les dernières moutures, notamment Yosemite.

La vulnérabilité est liée à la variable d’environnement DYLD_PRINT_TO_FILE qui est en rapport avec l’éditeur de liens dynamiques dydl. Le paramétrage de cette variable d’environnement indique à dydl où conserver les messages d’erreur.

« Quand les garanties habituelles qui sont nécessaires lors de l’ajout d’un support pour de nouvelles variables d’environnement ont été ajoutées à cette variable, l’éditeur dynamique de lien n’a pas été utilisé. Par conséquent, il est possible d’utiliser cette fonctionnalité même avec des binaires SUID racine. C’est dangereux parce que cela permet d’ouvrir et de créer des fichiers arbitraires appartenant à l’utilisateur racine n’importe où dans le système de fichiers. En outre, le fichier de journalisation ouvert n’est jamais fermé et par conséquent son descripteur de fichier fait l’objet d’une fuite dans les processus engendrés par les binaires SUID. Ce qui signifie que les processus enfants des processus SUID racine peuvent écrire dans des fichiers arbitraires appartenant à l’utilisateur racine n’importe où dans le fichier système. Ce qui facilite une élévation des privilèges dans OS X 10.10.x ».

« Quand Apple a changé le code de l’éditeur de liens dynamiques pour OS X 10.10 afin qu’il prenne en charge la nouvelle variable d’environnement DYLD_PRINT_TO_FILE, ils ont ajouté le code suivant directement dans la fonction _main de dydl. Comme vous pouvez le constater, la valeur de la variable d’environnement est directement utilisée comme nom de fichier pour le fichier de journalisation ouvert ou créé ».

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
const char* loggingPath = _simple_getenv(envp, "DYLD_PRINT_TO_FILE");
if ( loggingPath != NULL ) {
        int fd = open(loggingPath, O_WRONLY | O_CREAT | O_APPEND, 0644);
        if ( fd != -1 ) {
                sLogfile = fd;
                sLogToFile = true;
        }
        else {
                dyld::log("dyld: could not open DYLD_PRINT_TO_FILE='%s', errno=%d\n", loggingPath, errno);
        }
}
Il explique que normalement, pour des raisons de sécurité, l’éditeur de liens dynamiques devrait rejeter toutes les variables d’environnement qui lui sont transmises dans le cas où l’accès aux fichiers est restreint. Un processus automatiquement géré lorsque de nouvelles variables d’environnement sont ajoutées à la fonction processDyldEnvironmentVariable(). Curieusement, lorsqu’il s’agit de la variable d’environnement DYLD_PRINT_TO_FILE, elle se trouve directement ajoutée à la fonction _main de dydl.

Il a remarqué qu’Apple a corrigé cette vulnérabilité dans la bêta d’OS X 10.11 en enlevant tout simplement le code de cette nouvelle variable d’environnement de la fonction processDyldEnvironmentVariable(), ce qui a pour conséquence de protéger cette mouture. « Ceci pourrait cependant être le résultat d’un épurement du code et non la résultante d’une action de sécurité. Toutefois, s’il s’agit là du résultat d’un correctif de sécurité, alors Apple a une fois de plus montré combien il ne supporte pas ses versions courantes dès lors qu’une nouvelle bêta est en développement ».

Le chercheur en sécurité a publié une PoC (Proof of Concept) pour illustrer ses propos, donnant même une instruction à exécuter en ligne de commande pour tester si votre système est vulnérable à cette attaque.

Que le constructeur d’iPhone soit au courant de la faille et prépare un correctif ou non, le chercheur a pris les devants et publié sur GitHub le code source d’une extension noyau qui implémente des mesures de protection sous le nom SUIDGuard.

SUIDGuard (GitHub)

Source : SektionEins

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

Avatar de sinasquax
Membre régulier https://www.developpez.com
Le 24/07/2015 à 14:30
Intéressant cette découverte, mais après il viendra encore se plaindre qu'on ne le laisse pas déjeuner en paix.
0  0 
Avatar de polaroid62
Membre habitué https://www.developpez.com
Le 24/07/2015 à 17:21
Combien de temps mettra t - il avant d'en découvrir une nouvelle ?
0  0