1 points par GN⁺ 2025-03-21 | 1 commentaires | Partager sur WhatsApp

Fuite de mots de passe (et bien plus encore !) sur macOS

Introduction

Cet article explique la vulnérabilité CVE-2024-54471 incluse dans les mises à jour de sécurité d’Apple. Cette vulnérabilité a été corrigée dans macOS Sequoia 15.1, macOS Sonoma 14.7.1 et macOS Ventura 13.7.1. Si vous utilisez un appareil macOS, il est recommandé de le mettre à jour vers la version la plus récente.

Qu’est-ce que le noyau ?

Dans un système d’exploitation, le code qui communique avec le matériel et fournit aux applications un modèle de multitâche est appelé le noyau. Le noyau de macOS est XNU, un noyau hybride qui inclut des variantes du noyau BSD et du noyau Mach.

Histoire de Mach

Le noyau Mach est profondément lié aux guerres Unix des années 1980 et 1990. Mach a commencé comme un projet de recherche sur les systèmes d’exploitation à l’université Carnegie Mellon, a été utilisé dans le système d’exploitation NeXTSTEP, qui a fini par devenir la base de macOS.

Pourquoi Mach ?

Mach a été développé pour réduire la complexité de la conception et de l’utilisation des systèmes Unix. Mach se compose de quatre abstractions fondamentales, qui sont encore utilisées dans le macOS moderne.

Architecture de Mach

Quatre abstractions

  • Tâche : environnement dans lequel les threads peuvent s’exécuter, et unité de base de l’allocation des ressources.
  • Thread : unité de base de l’utilisation du CPU, fonctionnant avec son propre compteur ordinal au sein d’une tâche.
  • Port : canal de communication pour les messages, protégé par le noyau.
  • Message : ensemble d’objets de données utilisé pour la communication entre threads.

Tâches, ports et droits sur les ports

Les ports n’existent que dans l’espace noyau et sont exposés à l’espace utilisateur sous forme de droits sur les ports. Plusieurs tâches peuvent disposer du droit d’envoi vers un port, mais une seule tâche peut en détenir le droit de réception.

Structure d’un message

Chaque message Mach se compose d’un en-tête, de descripteurs optionnels, d’une charge utile arbitraire et d’un trailer ajouté par le noyau.

Comment obtenir des droits d’envoi

macOS dispose d’un serveur bootstrap, qui détient les droits de réception sur les ports pour lesquels toutes les tâches possèdent des droits d’envoi. Un client peut demander au serveur bootstrap des droits d’envoi pour un service Mach portant un nom spécifique.

Mach Interface Generator (MIG)

Introduction

MIG est un outil qui génère une interface fonctionnelle pour l’envoi et la réception de messages Mach. Il fournit une interface de style RPC basée sur les messages, ce qui améliore la sûreté mémoire.

Détails techniques

MIG est un wrapper autour des messages Mach ; chaque fonction est appelée une routine, et un ensemble de routines est appelé un sous-système. Le sous-système est indexé dans le champ d’identifiant du message.

Vulnérabilité des serveurs MIG

Sécurité des serveurs MIG

Si un serveur MIG ne vérifie pas l’expéditeur des messages, toute tâche disposant d’un droit d’envoi peut appeler les routines du serveur.

Trouver des serveurs MIG

On peut utiliser l’outil CLI ipsw pour rechercher les binaires qui utilisent le symbole NDR_record. Cela est utile pour trouver des serveurs et des clients MIG.

Vulnérabilité de NetAuthAgent

Présentation de NetAuthAgent

NetAuthAgent est un daemon qui gère les identifiants des serveurs de fichiers sur macOS. Avant la correction de cette vulnérabilité, il les fournissait lorsqu’on demandait les identifiants d’un serveur.

Fonctionnement de NetAuthAgent

NetAuthAgent utilise le Trousseau d’accès de macOS pour stocker les identifiants. Le trousseau d’accès est un gestionnaire centralisé de secrets, et chaque entrée possède sa propre liste de contrôle d’accès.

Serveur MIG de NetAuthAgent

NetAuthAgent expose un serveur MIG enregistré auprès du serveur bootstrap sous le nom com.apple.netauth.user.gui. Ce serveur fournit des routines permettant de lire, créer et écraser des identifiants.

Impact de la vulnérabilité

Exposition des jetons d’API iCloud

Cette vulnérabilité peut exposer des jetons d’API iCloud, permettant à un attaquant d’exfiltrer des informations utilisateur ou de suivre la localisation d’autres appareils.

Ce qu’Apple aurait dû faire

Cet article inclut une discussion sur les mesures qu’Apple aurait dû prendre pour corriger cette vulnérabilité.

1 commentaires

 
GN⁺ 2025-03-21
Commentaire Hacker News
  • Article bien rédigé. Ça me rappelle un incident zero-day qu’Apple a essayé de minimiser dans une certaine mesure. C’était l’affaire où il était possible de contourner la connexion root en « essayant deux fois avec un mot de passe vide ». C’était vers 2017 ou 2018

    • Si l’on saisissait un nom d’utilisateur administrateur et qu’on tentait de se connecter avec un mot de passe vide, un avertissement indiquait d’abord que le mot de passe était incorrect. Si l’on ignorait l’avertissement et qu’on cliquait une deuxième fois sur le bouton de connexion, on était connecté en tant que cet utilisateur
    • Le problème a été corrigé peu après sa diffusion sur les réseaux sociaux. Ça reste une grosse bourde
    • Il semble qu’il y ait encore des problèmes dans le mécanisme d’authentification du Mac. Le fait que le système de ports soit mentionné est intéressant. C’est un aspect peu connu du noyau Mach
  • « ACLs don’t » : <a href="https://waterken.sourceforge.net/aclsdont/current.pdf" rel="nofollow">https://waterken.sourceforge.net/aclsdont/current.pdf</a>;

  • Si l’on expose un mécanisme permettant à un processus de relayer des requêtes Keychain pour un autre processus, cela peut affaiblir la sécurité de tout le système

    • Cela ressemble à un cas de confused deputy problem : <a href="https://en.wikipedia.org/wiki/Confused_deputy_problem" rel="nofollow">https://en.wikipedia.org/wiki/Confused_deputy_problem</a>;
    • Une conception fondée sur les capacités devrait pouvoir empêcher ce type de problème de manière systématique
  • L’article a fait l’objet d’une petite correction

    • La vérification des autorisations ne se trouve pas dans la couche Mach du noyau
    • <a href="https://github.com/nmggithub/wts/commit/2bdce1c0c76c7adc360e17a6a42ee547462b99d3" rel="nofollow">https://github.com/nmggithub/wts/…;
    • C’était un changement d’un seul mot pour corriger une erreur factuelle sur le fonctionnement de XNU
  • Ça a pris 8 heures, mais ce post n’est désormais plus dans le top 5 de la première page (il est actuellement #27, toujours en première page mais en bas). Merci pour tous les commentaires

  • Je me demande si l’auteur fournit réellement le code PoC. J’aimerais tester les mesures d’atténuation. J’ai vu un exemple de code, mais il semble incomplet

    • Je me demande quels sont concrètement les risques
  • Article très intéressant. Je ne savais pas qu’il y avait autant d’histoire derrière la création de Mach et du noyau Darwin

  • En ce moment, Mach donne l’impression d’être une source fiable de bugs sur macOS. Je sais qu’Apple fait beaucoup d’efforts pour tout verrouiller, mais je me demande s’il existe une voie pour s’éloigner complètement de Mach

  • [mort]