forcedentry
Produits et Services PRODUITS & SERVICES

Des produits Apple vulnérables à l’attaque zero-day FORCEDENTRY : installez les correctifs dès maintenant !

Vous savez ce que nous allons vous dire, alors nous allons vous le dire tout de suite.

Vous savez ce que nous allons vous dire, alors nous allons vous le dire tout de suite.

Patchez rapidement, patchez souvent.

The Citizen Lab, le groupe activiste canadien axé sur la protection de la vie privée et la cybersécurité vient d’annoncer une faille de sécurité zero-day dans les systèmes d’exploitation iPhone, iPad et Macintosh d’Apple.

Il a donné à l’attaque le surnom FORCEDENTRY, pour des raisons assez évidentes, bien que sa désignation officielle soit CVE-2021-30860.

Citizen Lab a attribué cette vulnérabilité, et le code qui l’exploite, à la société controversée de surveillance d’équipements appelée NSO Group, déjà bien connue pour sa prétendue gamme de produits spyware nommée Pegasus.

Selon Citizen Lab, cet exploit s’appuie sur des fichiers PDF piégés et a été détecté sur le terrain lorsqu’un activiste saoudien a remis son téléphone pour analyse afin de vérifier la présence éventuelle d’un spyware sur l’appareil en question.

Le rapport de Citizen Lab coïncide avec le bulletin de sécurité d’Apple HT21807, qui attribue à Citizen Lab le signalement de cette faille zero-day, et déclare simplement :

Le traitement d’un PDF construit de manière malveillante peut conduire à l’exécution de code arbitraire. Apple a connaissance d’un rapport selon lequel ce problème pourrait avoir été activement exploité. […] Un dépassement d’entier a été résolu avec une validation d’entrée améliorée.

Bien que Citizen Lab affirme spécifiquement que le téléphone qu’il a examiné a été infecté via une communication iMessage, le bulletin d’Apple décrit ce bug au niveau de la gestion des PDF comme étant présent dans le composant système Core Graphics, impliquant ainsi que la vulnérabilité ne se limite pas à l’application iMessage.

Le problème des entiers

Les dépassements d’entier se produisent lorsqu’un calcul arithmétique ne correspond pas à la précision numérique allouée, entraînant souvent ultérieurement une sorte de débordement de mémoire tampon.

Les ordinateurs utilisent généralement un nombre fixe de bits, généralement 16, 32 ou 64, pour faire des calculs arithmétiques sur des entiers (des nombres entiers tels que 1, 42 et 2021), de sorte que certaines combinaisons d’entrées produiront des sorties qui ne rentreront pas dans l’espace disponible.

Il s’agit du même type de bug que le tristement célèbre bug de l’an 2000 (Y2K Bug), où les programmes qui utilisaient deux chiffres pour stocker l’année auraient calculé l’année suivante ainsi : 1999 comme 99+1 = 100, en utilisant cette sorte de “raccourci” au lieu d’effectuer le calcul complet suivant : 1999+1 = 2000.

Bien sûr, avec seulement deux chiffres pour stocker la réponse, le résultat aurait alors perdu le premier chiffre indiquant la “centaine” en revenant à 00, faisant ainsi reculer l’heure et la date aux douze coups de minuit d’un siècle au lieu d’avancer d’une seconde.

Dans le code de gestion de la mémoire, les boucles numériques de ce type peuvent facilement entraîner l’écriture de paquets de données dans des blocs mémoire au niveau desquels ils ne rentreront tout simplement pas.

Par exemple, un programme qui s’appuie sur des nombres à 16 bits pour stocker la largeur et la hauteur d’une image vous permettrait en théorie de spécifier des images jusqu’à 65535 pixels de large sur 65535 pixels de haut (0xFFFF en hexadécimal, soit une valeur de 16 bits comme suit 111...111 en binaire).

À première vue, le résultat vous donnerait une image bien plus grande que vos véritables besoins.

Mais si le programmeur a oublié de spécifier un nombre de 32 bits pour le nombre de pixels nécessaires (largeur × hauteur), et par habitude a attribué un autre entier de 16 bits pour le résultat, dans ce cas même une image par exemple de 1000 × 1000 pixels poserait alors de sérieux problèmes.

Le produit de 1000×1000 devrait vous donner comme résultat 1 000 000 pixels, ou 0xF4240 en hexadécimal, mais ce nombre nécessite 20 bits pour être stocké en entier, soit 5 chiffres hexadécimaux, à cause du dépassement d’entier (en effet lorsque vous multipliez deux nombres à N chiffres, le résultat peut contenir jusqu’à 2N chiffres).

Si cette réponse est transformée en un entier de 16 bits, le 0xF au début du nombre est supprimé, ne laissant que quatre chiffres hexadécimaux (16 bits), de sorte que la “taille de l’image” calculée basculerait à partir de 0x4240 en hexadécimal, comme un vieux un compteur de vitesse qui aurait dépassé les 99 999 kilomètres et recommencerait donc à zéro.

Au final vous obtenez une réponse incorrecte vous donnant 16 960 au lieu de 1 000 000.

Si le logiciel alloue ensuite aveuglément seulement 16 960 octets d’espace de stockage, après avoir mal calculé et en considérant tout de même le résultat comme représentant la “taille correcte” d’une image de 1000 × 1000 pixels, alors un débordement de tampon massif et catastrophique se produirait dès que l’image serait copiée dans le tampon sous-dimensionné.

Deux bugs corrigés

Curieusement, Apple a également corrigé un autre bug présent sur le terrain en même temps, et dénommé CVE-2021-30858.

Cette deuxième faille zero-day a été trouvée dans le logiciel de rendu Web d’Apple, WebKit, qui constitue le cœur du navigateur Safari intégré sur tous les systèmes d’exploitation Apple.

En fait, tous les programmes iPhone et iPad de l’App Store (des jeux et utilitaires les plus basiques aux navigateurs Web les plus puissants) capables de restituer et d’afficher du contenu HTML sont contraints par Apple d’utiliser WebKit.

Même les navigateurs tels que Edge et Firefox, qui utilisent généralement les logiciels de rendu Web Chromium et Gecko respectivement, doivent utiliser à la place WebKit, de sorte que les bugs de sécurité WebKit peuvent avoir des conséquences à plus grande échelle sur les iPhones et les iPads.

Le bug CVE-2021-30858 est une vulnérabilité de type use-after-free, où un programme informe la mémoire du système d’exploitation qu’il n’a plus besoin de celle-ci, et qu’elle peut donc être utilisée ailleurs…

… mais en réalité elle continue de l’utiliser par inadvertance, écrasant ainsi toutes les nouvelles données qui y ont été stockées à d’autres fins.

Ce type de bug entraîne presque toujours des plantages d’application et donne parfois aux attaquants la possibilité de créer des exploits pleinement fonctionnels de type RCE (exécution de code à distance), ce qui est à priori le cas ici.

Nous ne savons pas si les deux bugs dans notre cas sont liés, le rapport de Citizen Labs ne mentionne que CVE-2021-30860, et la faille WebKit CVE-2021-30858 semble être attribuée uniquement à “un chercheur anonyme”.

Quoi faire ?

Avec deux bugs apparemment indépendants et observables sur le terrain en même temps, et avec peu d’indications jusqu’à présent sur les éléments devant être surveillés dans les fichiers PDF ou les pages Web piégés, il n’y a pas grand-chose que vous puissiez faire…

… à part patcher rapidement, patcher souvent.

Les correctifs actuels [2021-09-14T00:01Z] sont documentés dans les derniers bulletins de sécurité d’Apple comme suit :

  • HT212804 : macOS Big Sur 11.6, correction des deux bugs.
  • HT212808 : Safari 14.1.2 pour Catalina et Mojave, correction du bug WebKit uniquement.
  • HT212804 : macOS Big Sur 11.6, correction des deux bugs.
  • HT212805 : 2021-005 Catalina, correction du bug PDF uniquement.
  • HT212806 : watchOS 7.6.2, correction du bug PDF uniquement.
  • HT212807 : iOS 14.8 et iPadOS 14.8, correction des deux bugs.
  • HT212808 : Safari 14.1.2 pour Catalina et Mojave, correction du bug WebKit uniquement.

Ainsi sur macOS Catalina, vous aurez actuellement besoin de deux correctifs, un pour le système d’exploitation lui-même et un autre pour WebKit/Safari.

Pour vérifier les mises à jour (et les récupérer automatiquement si elles n’ont pas encore été téléchargées automatiquement), procédez comme suit :

  • Sur un iPad ou un iPhone. Allez sur Réglages > Général > Mise à jour logicielle. Si vous utilisez iOS 14, vous devez vous procurer la version 14.8.
  • Sur un ordinateur portable MacBook ou un Mac de bureau. Allez dans menu Apple > Préférences Système > Mise à jour de logiciels. Si vous utilisez macOS Big Sur 11, vous devez vous procurer la version 11.6.

Selon nous, le bug Citizen Lab affectetous les iPhones avec des versions iOS antérieures à 14.8“, ce qui, à priori, inclut iOS 12, toujours officiellement pris en charge par Apple.

Cependant, nous ne trouvons aucun bulletin de sécurité récent mentionnant iOS 12, signifiant ainsi que les téléphones plus anciens peuvent être vulnérables mais pas encore corrigés.

Le bulletin HT212803, qui apparait immédiatement avant cet ensemble de correctifs zero-day, traite le problème peu surprenant et récemment soulevé selon lequel la fixation d’un iPhone au niveau d’une puissante moto ou à d’un VTT utilisé lors de sorties tout-terrain intenses pourrait provoquer des vibrations inappropriées susceptibles d’endommager les composants techniques de haute précision au niveau de l’objectif du téléphone. Le bulletin HT212809, à savoir le suivant après cette série de correctifs, n’existe pas encore [2021-09-14T00:01Z].

Pour les utilisateurs d’iPhones plus anciens, tout ce que nous pouvons vous suggérer pour le moment c’est de redoubler de prudence lorsque vous recevrez des fichiers PDF d’une personne en particulier ou bien quand vous les téléchargerez depuis des sites Web spécifiques.

En particulier, ne vous laissez pas influencer simplement parce que le document qui vous tente est apparemment lié à votre propre travail ou à vos hobbies.

Les cybercriminels peuvent facilement découvrir vos centres d’intérêt, aussi bien au niveau professionnel que personnel, en parcourant tout simplement votre description de poste ou en consultant vos publications sur les réseaux sociaux.

En cas de doute, abstenez-vous !

Billet inspiré de Apple products vulnerable to FORCEDENTRY zero-day attack – patch now!, sur Sophos nakedsecurity.