L’article met en lumière une vulnérabilité critique identifiée dans macOS Sequoia 15.5, référencée sous le code CVE-2025-31250.

Cette faille permettait à une application malveillante de manipuler les demandes de consentement de macOS, en faisant apparaître un prompt comme provenant d’une application différente de celle qui recevrait effectivement le consentement de l’utilisateur. Cela était possible en envoyant des messages XPC spécialement conçus au daemon tccd, qui gère le système de permissions TCC d’Apple.

Contrairement aux méthodes de spoofing précédentes, cette vulnérabilité ne nécessitait pas la création d’une fausse application ni l’altération de raccourcis Dock, rendant l’exploitation plus simple et potentiellement plus dangereuse.

🔍 Contexte

La vulnérabilité CVE-2025-31250, révélée par Noah Gregory et corrigée le 12 mai 2025 dans macOS Sequoia 15.5, permettait à une application malveillante de présenter une fenêtre de demande de permission TCC (accès micro, caméra, automatisation…) en usurpant une autre application – et de recevoir elle-même les droits accordés.

❗ Les versions macOS Ventura 13.7.6 et Sonoma 14.7.6 ne sont pas corrigées au moment de la publication, malgré leur sortie simultanée.


⚠️ En quoi consiste la faille ?

Cette faille réside dans la manière dont le système TCC (Transparency, Consent, and Control) gère les requêtes de permission via le daemon tccd.

Elle permettait :

  • À App A d’afficher une fenêtre de permission semblant venir de App B,
  • Tout en faisant en sorte que les droits soient accordés à App C (qui peut être la même que A).

La faille reposait sur un mauvais contrôle dans la fonction interne TCCAccessRequestIndirect, accessible via des messages XPC malformés envoyés à tccd.


💡 Scénario d’attaque réaliste

  1. Une app malveillante attend que l’utilisateur ouvre une app connue (ex. FaceTime).
  2. Elle déclenche alors une fausse demande de permission (ex. accès caméra) qui semble venir de FaceTime.
  3. L’utilisateur clique sur “Autoriser”, pensant que c’est FaceTime qui le demande.
  4. L’app malveillante obtient en réalité l’accès caméra.

🔐 Détail technique

  • Le champ target_path servait à déterminer l’app affichée dans la pop-up.
  • Le champ target_identifier définissait l’app recevant les droits.
  • Le champ indirect_object (utilisé notamment pour Apple Events) pouvait être une chaîne vide.
  • Un PoC en Swift permettait de spoof ces champs dans un message XPC vers tccd.

📎 Le système TCC stocke les permissions dans une base SQLite (TCC.db) par utilisateur.


💣 Potentiel de contournement

Cette vulnérabilité, combinée à d’autres attaques connues, permet :

  • D’obtenir des droits TCC critiques (micro, caméra, automatisation…) par tromperie visuelle.
  • De faciliter des attaques en chaîne, comme le changement du répertoire personnel ($HOME) pour injecter une fausse base TCC.db.

🛠️ Correctif d’Apple

  • Le patch, intégré uniquement dans macOS Sequoia 15.5, rejette silencieusement les messages XPC malformés.
  • Il corrige aussi la possibilité d’utiliser une chaîne vide comme indirect_object.
  • Apple n’a pas communiqué les détails précis du correctif, mais les tests montrent qu’il est efficace.

🧩 Historique de divulgation

Date Événement
2024-05-02 Signalement initial à Apple
2024-05 → 2025-03 Échanges et relances réguliers
2025-05-12 Publication du correctif et reconnaissance du chercheur

🧰 Recommandations

  • 📥 Mettez à jour vers macOS Sequoia 15.5 dès que possible.
  • 🚫 Évitez de cliquer sur des pop-ups système inattendues.
  • 🔎 Surveillez les accès sensibles via tccutil ou un EDR avancé.
  • 🧩 Utilisez Endpoint Security pour tracer les modifications dans TCC.db.

🕵️‍♂️ Nom de la faille

TCC, Who?


📚 Références


🔗 Source originale : https://wts.dev/posts/tcc-who/

🖴 Archive : https://web.archive.org/web/20250513050848/https://wts.dev/posts/tcc-who/