← Derniers articles
💻 computer science

One (Thread) Can Keep a (PRNG) Secret, but not Two

Cet article présente la première attaque cryptanalytique exploitant une condition de concurrence dans le générateur de nombres pseudo-aléatoires (PRNG) de l'identifiant de fragmentation IPv6 du noyau XNU pour prédire les numéros de séquence et permettre l'usurpation de trafic TCP et UDP hors réseau, une vulnérabilité désormais corrigée par Apple sous la référence CVE-2024-27823.

Auteurs originaux : Ehood Porat, Amit Klein, Benny Pinkas

Publié 2026-06-03
📖 5 min de lecture🧠 Analyse approfondie

Auteurs originaux : Ehood Porat, Amit Klein, Benny Pinkas

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

Imaginez que vous envoyez une grande lettre importante à un ami. Comme la lettre est trop volumineuse pour une seule enveloppe, la poste (le réseau) la découpe en morceaux plus petits, ou fragments. Pour s'assurer que les morceaux soient remis dans le bon ordre, chaque morceau reçoit un numéro de ticket unique (appelé ID de fragment).

Le document que vous avez consulté décrit une manière ingénieuse dont un pirate peut deviner ces numéros de tickets à l'avance, ce qui lui permet de remplacer un morceau de votre lettre par un faux sans que vous ou votre ami ne vous en aperceviez.

Voici la décomposition de l'attaque, expliquée simplement :

1. La machine à tickets secrète (le PRNG)

Les ordinateurs d'Apple (macOS et iOS) utilisent une machine à « tickets » spéciale à l'intérieur de leur cerveau (le noyau/kernel) pour générer ces numéros de tickets aléatoires. La machine est censée être imprévisible, comme un lancer de dés. Si les nombres sont réellement aléatoires, personne ne peut deviner le prochain ticket.

Cependant, les chercheurs ont découvert une faille dans le fonctionnement de cette machine lorsqu'elle est très sollicitée.

2. Le problème du « Deux personnes, une machine » (La Race Condition)

Imaginez un guichet de tickets très fréquenté où deux personnes (deux threads de l'ordinateur) tentent de saisir un ticket à la milliseconde exacte près.

  • Normalement : La machine donne un ticket à la Personne A, puis un ticket différent à la Personne B.
  • Le bug : Comme la machine n'est pas « thread-safe » (elle ne possède pas de verrou pour empêcher les gens de saisir des tickets en même temps), les deux personnes pourraient saisir le même numéro de départ. Elles exécutent toutes deux le calcul, mais parce qu'elles ont commencé avec le même nombre et ont suivi des étapes légèrement différentes, elles produisent un motif étrange.

Le motif : Les chercheurs ont découvert que si vous déclenchez cette « course » (race), la machine produit une séquence spécifique de nombres qui ressemble à ceci : A, B, C, B.
Remarquez que B apparaît deux fois, séparé par C. Ce « B-C-B » est la preuve irréfutable. Cela indique à l'attaquant : « Hé ! La machine vient de subir une race condition ! Je peux maintenant voir comment les engrenages internes de la machine tournent. »

3. Craquer le code (Cryptanalyse)

Une fois que l'attaquant voit suffisamment de motifs « B-C-B », il peut faire de l'ingénierie inverse sur la machine.

  • Considérez la machine comme un cadran de combinaison. Le motif « B-C-B » donne à l'attaquant un indice sur la position actuelle des disques à l'intérieur du cadran.
  • En collectant suffisamment de ces indices, l'attaquant peut découvrir l'état interne complet de la machine.
  • Une fois qu'il connaît l'état interne, il peut prédire exactement quels seront les prochains numéros de tickets.

4. L'échange (L'Attaque)

Maintenant que l'attaquant peut prédire les numéros de tickets, il peut effectuer un tour de passe-passe de type « homme du milieu » (man-in-the-middle), mais sans être réellement au milieu.

  • Le scénario : Vous envoyez un gros fichier (comme une sauvegarde de votre code) vers un serveur. Le fichier est divisé en morceaux.
  • La protection : Le premier morceau du fichier contient votre mot de passe et votre signature (authentification). Le serveur vérifie ce premier morceau pour s'assurer que c'est bien vous.
  • L'astuce : L'attaquant attend que le premier morceau arrive. Ensuite, il utilise sa prédiction pour deviner le numéro de ticket du deuxième morceau. Il envoie rapidement un deuxième morceau de synthèse contenant un message malveillant (comme un virus ou un fichier modifié) qui possède le bon numéro de ticket.
  • Le résultat : Le serveur reçoit le premier morceau authentique (avec le mot de passe valide) et le deuxième morceau factice (avec le virus). Il les assemble, pense que tout est en ordre, et enregistre le fichier infecté. L'attaquant a contourné la vérification de sécurité car celle-ci n'a eu lieu que sur le premier morceau.

Exemples concrets de l'article

Les chercheurs ont testé cela sur deux éléments spécifiques :

  1. NFS (Network File System) : Ils ont montré comment un attaquant pourrait modifier un fichier en cours de sauvegarde vers un serveur. Par exemple, ils pourraient injecter un « cheval de Troie » dans un fichier de code informatique standard. Lorsqu'un développeur compilera plus tard ce code, le virus s'exécutera.
  2. HTTP (Navigation Web) : Ils ont montré comment un attaquant pourrait modifier une requête web (comme une connexion ou l'envoi d'un formulaire) pendant qu'elle voyage sur le réseau.

Pourquoi c'est important

  • C'est nouveau : C'est la première fois que quelqu'un utilise une « race condition » (un bug de synchronisation) pour briser un générateur de nombres aléatoires. Habituellement, les race conditions provoquent des plantages ; ici, elles ont été utilisées pour voler des secrets.
  • C'est concret : L'attaque fonctionne sur de vrais appareils Apple (puces M1, M2, Mac Intel) tournant sur diverses versions de macOS et iOS.
  • Le correctif : Apple a déjà corrigé cela. Ils lui ont attribué l'identifiant CVE-2024-27823. Le correctif consiste à rendre la machine à tickets « thread-safe » afin que deux personnes ne puissent pas saisir le numéro de départ au même moment.

En résumé : L'article montre que si le générateur de nombres aléatoires d'un ordinateur est perturbé par deux événements se produisant simultanément, un pirate peut utiliser cette confusion pour prédire l'avenir, échanger des parties de vos données et faire passer des logiciels malveillants en douce malgré vos contrôles de sécurité.

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →