Nuke pour Darwin

Nous avions découvert en décembre 2014 une vulnérabilité très intéressante dans le noyau Darwin, une partie open source que l’on retrouve dans deux systèmes d’exploitation d’Apple : OS X et iOS. Par conséquent, OS X 10.10 et iOS 8 sont également exposés. Cette vulnérabilité est liée au traitement d’un paquet IP qui possède une taille spécifique et des options IP non valides. Elle permet à des attaquants à distance de provoquer le déni de service d’un périphérique tournant sous OS X 10.10 ou iOS 8. Il suffit aux attaquants d’envoyer à la victime un seul paquet réseau incorrect pour provoquer le plantage du système qu’elle utilise.

Plantage d’OS X 10.10 après le traitement d’un paquet réseau non valide

Lors de l’analyse de cette vulnérabilité, nous avons découvert que les périphériques suivants, dotés de processeurs 64 bits et tournant sous iOS 8, étaient concernés par cette menace :

  • iPhone 5s et les modèles ultérieurs
  • iPad Air et les modèles ultérieurs
  • iPad mini 2 et les modèles ultérieurs

Afin de mieux comprendre la nature de ce bogue, examinons le contenu d’un vidage sur incident :

Arborescence des appels de procédure du noyau

Cette arborescence montre qu’un problème est survenu dans la fonction icmp_error() et que celle-ci invoque la fonction panic. Cette fonction tente de créer un nouveau message d’erreur ICMP et de l’envoyer à nouveau. Cette capture d’écran montre que la fonction icmp_error a été invoquée après l’analyse des options du paquet. Le problème trouve son origine dans ce morceau de code :

La cause du problème

Lorsque les conditions énoncées dans le code sont remplies, la fonction panic est engagée et le système s’arrête en mode d’urgence. Cette opération se déroule car les structures de noyau interne ont été modifiées et la nouvelle taille de tampon ne suffit pas pour stocker le paquet ICMP nouvellement créé. Pour provoquer ce comportement, le paquet IP doit répondre aux critères suivants :

  • La taille de l’en-tête IP doit être de 60 octets.
  • La taille de la charge utile IP doit être de 65 octets minimum.
  • Les options IP doivent présenter des erreurs (taille non valide des options, classe, etc.)

Exemple d’un paquet provoquant un plantage

A première vue, on ne voit pas comment ce bogue pourrait être exploité efficacement. Ceci étant dit, un vrai professionnel peut l’exploiter sans difficultés pour casser le périphérique d’un utilisateur, voire pour mettre un réseau d’entreprise hors service. En général, ce genre de paquet incorrect est transmis par des routeurs ou des pare-feu. Nous avons toutefois découverts plusieurs combinaisons d’options IP incorrectes qui peuvent passer par des routeurs Internet.

Cette vulnérabilité a été éliminée dans OS X 10.10.3 et iOS 8.3. De plus, les utilisateurs des solutions de Kaspersky Lab sont protégés contre cette vulnérabilité dans OS X 10.10 grâce à la fonction de prévention des attaques réseau. A partir de Kaspersky Internet Security for Mac 15.0, cette menace est détectée sous le nom DoS.OSX.Yosemite.ICMP.Error.exploit.

Posts similaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *