Ton Mac a été patché par XProtect à ton insu, c'est pour ton bien

Le 11 mai 2026, 170 paquets npm de l'écosystème TanStack sont vérolés en six minutes. Le lendemain, Apple pousse une signature XProtect sur ton Mac sans te le dire. Voici comment vérifier.

Ton Mac a été patché par XProtect à ton insu, c'est pour ton bien

Introduction

Pendant que tu dormais, le 11 mai en début de soirée, 170 paquets logiciels que la moitié du web utilise sont devenus malveillants en six minutes. Le lendemain, Apple a poussé une signature XProtect sur ton Mac, sans rien te dire.

Les deux événements sont liés, probablement. Cependant, tu ne le sauras jamais vraiment. L’épisode a un nom, TanStack. Le mécanisme qui a peut-être réagi sur ton Mac s’appelle XProtect. Tu n’as rien vu passer, moi non plus. Apple s’en assure.

Bienvenue dans le système de défense silencieux de ton Mac.


L’incident TanStack en 30 secondes

Le 11 mai 2026 au soir, l’écosystème TanStack, un kit d’outils JavaScript ultra-populaire utilisé par des millions de développeurs (dont ceux d’OpenAI, Netflix, Shopify), se fait piéger. En six minutes, 170 paquets sortent en version vérolée. Le plus visible, react-router, est téléchargé 12 millions de fois par semaine. Autant dire : une partie significative du web qui se met à jour cette semaine récupère du code piégé sans le savoir.

Le malware s’appelle Mini Shai-Hulud, variante du worm npm qui sévit depuis 2024. Sa cible, c’est ce qui traîne sur le Mac du développeur : mots de passe, clés d’accès cloud, jetons GitHub, fichiers de session. Sur macOS, il s’installe en planque dans un coin du système qui le relance à chaque ouverture de session. Discret, propre, professionnel.

Le détail qui inquiète vraiment, c’est le vecteur. L’attaquant n’a pas volé de mot de passe, ni exploité de faille dans le code. Il a juste soumis une fausse contribution au projet open source TanStack, en exploitant une configuration imprudente du système d’automatisation.

Toute contribution était exécutée avec les vrais droits de publication officiels. Une contribution piégée (pull request) a suffi pour récupérer le jeton de signature et publier 170 paquets sous l’identité légitime du projet. Du côté de npm, tout paraissait normal, signé, vérifié. Tamponné par TanStack lui-même.

OpenAI a été touché par ricochet, via une de ses dépendances. Officiellement, aucune preuve de compromission de produits ou de données utilisateur. Mais la boîte a quand même rotaté toutes ses clés de signature applicative sur macOS, iOS, Windows, Android, et republie l’intégralité de ses apps sous nouveaux certificats.

Inutile de te dire que tu ne fais pas ça quand tout va bien.

Apple a réagi le lendemain. Sans communiqué, sans notification, sans onglet dans Réglages. Une signature XProtect a été poussée silencieusement. Les Macs l’ont récupérée au fil des heures, chacun son tour, sans prévenir personne.


XProtect, l’antivirus muet d’Apple

XProtect, c’est l’antivirus intégré de macOS. Il est là depuis Snow Leopard, et la plupart des utilisateurs ignorent jusqu’à son existence. C’est voulu.

Le système fonctionne en deux briques. La première, c’est le moteur de signatures : un fichier que macOS consulte avant d’exécuter une app téléchargée pour vérifier qu’elle ne correspond pas à un malware connu. La deuxième, c’est XProtect Remediator — XPR —, un scanner qui tourne en tâche de fond et inspecte ton disque à la recherche de menaces déjà installées. Quand il en trouve une, il la neutralise.

Les signatures sont poussées par Apple via CloudKit, le même tuyau silencieux qui synchronise tes photos iCloud et ton trousseau. Quand un malware significatif émerge, Apple compile une signature, la signe, la dépose sur CloudKit. Ton Mac la récupère au prochain check, généralement dans les 24 à 72 heures.

Pas de notification. Pas de redémarrage. Pas de message “votre Mac a été mis à jour”. Apple a fait un choix éditorial assumé, ne pas affoler l’utilisateur. Le revers, c’est que tu n’as aucun moyen de savoir, à l’œil nu, si tu es bien patché pour l’incident récent.

C’est là que ça devient intéressant.


Le push 5344, le 12 mai, lendemain de TanStack

La version XProtect publiée le 12 mai 2026 s’appelle 5344. La précédente, 5342, datait du 5 mai. Concordance temporelle parfaite avec TanStack, à J+1.

Sauf qu’Apple ne documente jamais publiquement le contenu d’une signature XProtect. Howard Oakley, qui décortique chaque release sur eclecticlight.co, observe sur 5344 « quelques ajustements sur des familles de malware connues ». Pas de signature nommée TanStack ou Shai-Hulud. Rien qui dise officiellement « ceci est la réponse à l’incident d’hier ».

Coïncidence ou réaction ciblée ? Apple ne dit rien. C’est précisément ce flou qui justifie qu’on regarde dedans.


Vérifier en 30 secondes que ton Mac est patché

Sur macOS 15 Sequoia et macOS 26 Tahoe, Apple a déplacé XProtect dans un nouvel emplacement et fournit une commande native. C’est la voie recommandée. Sur macOS 14 Sonoma et antérieurs, l’ancien emplacement reste valide. Je donne les deux.

1. La version des signatures XProtect

Sur Sequoia et Tahoe, la commande de référence :

sudo xprotect version

Tu obtiens un numéro du genre 5344 ou 5347. C’est la base de signatures. Plus c’est haut, plus c’est récent.

Sur Sonoma et antérieurs :

defaults read /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Info CFBundleShortVersionString

L’ancien chemin existe encore sur Sequoia et Tahoe, mais ce n’est plus celui que macOS consulte en premier. Tu peux le lire et tomber sur une version périmée pendant que sudo xprotect version te donne la vraie. C’est exactement le genre de piège qui fait croire à un Mac à la traîne alors qu’il est à jour.

2. La version de XProtect Remediator

defaults read /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/Info CFBundleShortVersionString

Tu obtiens un numéro du genre 157. C’est le scanner lui-même, mis à jour beaucoup moins souvent que les signatures.

3. L’historique d’installation

system_profiler SPInstallHistoryDataType | grep -A 2 -i xprotect

Tu vois toutes les versions XProtect installées avec leurs dates. Pratique pour vérifier que tu n’as pas un Mac coincé sur une vieille base parce que CloudKit a un problème.

Pour comparer ta version à ce qu’Apple publie en temps réel, le tracker public d’Howard Oakley, eclecticlight.co, maintient la liste à jour. Oakley est un ingénieur britannique qui décortique macOS depuis quinze ans, c’est la référence sur le sujet.

Et si ton Mac traîne, tu forces le check :

sudo xprotect update

Sur Sonoma et antérieurs, l’ancienne commande sudo softwareupdate --background-critical reste opérationnelle.

Au moment où je publie, la dernière version est 5344, le 12 mai 2026. Si ton Mac affiche moins, ton canal CloudKit traîne.


Le revers souverain

XProtect, c’est une boîte noire signée Cupertino. Tu ne sais pas quelles signatures sont poussées, tu ne sais pas quelle télémétrie remonte au passage, tu ne sais pas qui décide qu’un binaire est malveillant. Apple décide, Apple pousse, ta machine exécute.

Le mécanisme est utile, très utile même. Bloquer des malwares connus avant qu’ils s’exécutent, c’est la base d’une défense moderne, et le faire sans te solliciter évitera que tu le désactives le jour où t’es fin énervé par cette rognutudju!! de pop-up (cherche pas, si t’as moins de 50 berges, t’as pas la ref).

Les trois commandes ci-dessus te donnent un droit de regard minimal sur ce que ton OS fait sans te demander. C’est un petit pas vers la souveraineté, pas reprendre le contrôle, juste savoir.

La différence entre un utilisateur passif et un utilisateur souverain n’est pas que dans les outils utilisés. Elle est aussi dans les questions qu’il se pose. Quelle version j’ai. Quand a-t-elle été poussée. Qu’est-ce qu’elle contient.

Apple répond aux deux premières en trois lignes Terminal. Sur la troisième, elle se tait. C’est Howard Oakley qui décortique le contenu après coup et publie les diffs sur eclecticlight.co. Tu ne sauras jamais en direct ce qu’Apple a estampillé malveillant cette nuit.

Tous les mois, je vérifie tout de même les versions XProtect sur mes Macs. Rien d’héroïque, juste une habitude. Le jour où le canal CloudKit déconne, j’aurai un point de référence.

À lire : Les paramètres macOS à changer immédiatement


En résumé

XProtect est utile, silencieux, et hors de ton contrôle. Le sujet est de savoir qu’il existe, de connaître les trois commandes qui te disent où tu en es, et de comprendre que dans la chaîne d’approvisionnement JavaScript de 2026, comme dans d’autres chaînes de compromission, c’est lui qui colmate les fuites.

Lance les trois commandes. Note tes numéros. Compare-les à eclecticlight.co de temps en temps. Ça prend trente secondes, et ça te permet de savoir si tu es bien patché et à jour.

À lire : Lockdown Mode face à Coruña, le toolkit d’espionnage gouvernemental

Des termes techniques ? Consulte le glossaire.