Immich coupe la télémétrie Microsoft qu’ONNX Runtime activait en silence dans le conteneur de machine learning
Le 4 novembre 2026, Immich corrige une dépendance d’ONNX Runtime 1.29 dont la télémétrie Microsoft s’activait par défaut dans le conteneur de machine learning. Les auto-hébergeurs doivent monter en 3.3.6 ou désactiver la télémétrie par variable d’environnement.
4 novembre 2026. Immich fusionne un correctif qui désactive par défaut la télémétrie d’ONNX Runtime dans son conteneur de machine learning. 12 août 2026. Un utilisateur avait ouvert l’issue #30729 documentant qu’ONNX Runtime 1.29, publié par Microsoft, embarquait une télémétrie activée par défaut sur les builds POSIX. 4 novembre 2026. Le correctif sort dans Immich 3.3.6. Pourquoi c’est important : l’argument numéro un de l’auto-hébergement est la vie privée, et une simple dépendance transitive l’a discrètement percé.
La faille ne vient pas d’Immich, mais de sa dépendance
Le conteneur immich-machine-learning exécute des modèles d’IA pour la reconnaissance faciale, la recherche sémantique et la détection d’objets. Pour cela, il s’appuie sur ONNX Runtime, le moteur d’inférence de Microsoft. Immich déclarait sa dépendance avec une fourchette large — onnxruntime>=1.23.2,<2 — qui laissait entrer la version 1.29 sans condition supplémentaire.
Cette fourchette couvrait en réalité quatre variantes — cpu, armnn, rknn et cuda (via onnxruntime-gpu) — toutes dans la portée des wheels 1.29 concernés. Autant de points d’entrée par lesquels la télémétrie pouvait s’inviter, selon le matériel que vous hébergez.
Or ONNX Runtime 1.29 a introduit un changement discret : sur les builds natifs Linux, macOS, Android et iOS, la télémétrie est compilée et activée par défaut, sauf à compiler avec --no_telemetry ou à poser la variable ORT_DISABLE_TELEMETRY=1 avant l’initialisation. Le collecteur utilisé est le point de terminaison 1DS de Microsoft, à l’adresse https://mobile.events.data.microsoft.com/OneCollector/1.0. En clair : un conteneur auto-hébergé, censé ne rien envoyer dehors, pouvait se mettre à téléphoner vers Microsoft au premier rafraîchissement du lockfile.
Ce que la télémétrie collecte, et ce qu’elle ne collecte pas
L’issue #30729 vaut d’être lue pour sa rigueur : son auteur a décompilé les archives officielles 1.29 et confirmé la présence des marqueurs Microsoft::Applications::Events, modelGraphHash et ORT_DISABLE_TELEMETRY, absents des binaires 1.28. Le contenu est documenté dans le code source du collecteur POSIX. Les événements peuvent inclure :
- un identifiant d’appareil haché et persistant, dont l’UUID sous-jacent est stocké sous
~/.cache/Microsoft/DeveloperTools/.onnxruntime/; - la description de l’OS, l’architecture, le modèle de CPU, le nombre de cœurs et la mémoire totale ;
- les métadonnées des modèles : producteur, version, domaine, noms de graphe, hash du graphe et des poids, fournisseurs d’exécution et leurs versions ;
- des informations d’erreur épurées et des mesures agrégées de performance.
L’auteur n’a trouvé aucune preuve que les tenseurs d’entrée, les photos ou les vidéos soient transmis. Mais ce n’est pas le sujet : c’est un nouveau flux sortant d’informations pseudonymes, système, matérielles et d’usage depuis un service auto-hébergé — et il est indépendant du réglage IMMICH_TELEMETRY_INCLUDE d’Immich. Le laisser vide ne désactive rien.
Trois mois entre la détection et le correctif
Le calendrier mérite d’être souligné. L’issue a été ouverte le 12 août 2026, avec une analyse technique complète — preuves binaires à l’appui, hash des archives officielles 1.28 et 1.29 comparés, marqueurs de télémétrie relevés dans le binaire Linux et absents du contrôle 1.28. Le correctif d’Immich n’est arrivé que le 4 novembre 2026, soit près de trois mois plus tard. Pendant cette fenêtre, le risque est resté latent : le lockfile d’Immich pointait encore sur ONNX Runtime 1.26, donc les installations existantes n’envoyaient rien — mais tout rafraîchissement de dépendance pouvait faire basculer une installation sur la 1.29 télémétrique sans que l’utilisateur en soit averti. C’est la nature d’une régression de dépendance : elle dort jusqu’à ce qu’un build la réveille.
Le correctif, et ce qu’il faut faire selon votre version
Immich a réagi vite. Le 4 novembre 2026, l’issue a été fermée par le pull request #32956, et le correctif est livré dans 3.3.6. Pour une installation à jour, la montée de version suffit : la télémétrie ONNX Runtime est désormais désactivée par défaut dans l’image.
Si vous êtes en retard de quelques versions, le contournement tient en une variable d’environnement à ajouter au service machine-learning de votre docker-compose.yml, avant que Python n’importe ONNX Runtime :
immich-machine-learning:
environment:
- ORT_DISABLE_TELEMETRY=1 La variable désactive l’initialisation de l’uploader, l’émission d’événements et la persistance de l’identifiant d’appareil pour toute la durée du processus. C’est une protection de bout en bout, indépendante de la version.
Auditer ses propres conteneurs, au-delà d’Immich
L’épisode vaut leçon pour tout ce qui tourne chez vous. La télémétrie ne s’annonce pas : elle se cherche. Deux réflexes suffisent pour la détecter, sans audit lourd :
- lister les variables d’opt-out des dépendances d’inférence que vous embarquez —
ORT_DISABLE_TELEMETRYpour ONNX Runtime, mais chaque moteur a son équivalent ; - vérifier les flux DNS sortants de vos conteneurs : un appel vers
mobile.events.data.microsoft.comou tout domaine de collecte inconnu est le signal le plus fiable qu’une dépendance a changé de comportement.
Chez Immich, l’équipe a confirmé sa réactivité en livrant le correctif en 3.3.6 et en préparant 3.4.0, dont la bêta apporte enfin les étiquettes (tags) sur mobile, une fonction attendue depuis août 2024. Un projet peut à la fois introduire une régression de dépendance et la corriger vite ; ce qui compte, c’est la traçabilité du correctif et la vitesse avec laquelle l’équipe assume le problème.
Le problème dépasse Immich. ONNX Runtime est l’un des moteurs d’inférence les plus répandus du self-hosted : on le retrouve derrière la reconnaissance d’images, la synthèse vocale et la recherche sémantique de dizaines d’applications que vous hébergez. Chaque projet qui l’embarque sans poser la variable d’opt-out hérite du même défaut, silencieusement, au gré de ses propres mises à jour de dépendances. Ce n’est donc pas un bug isolé dans Immich, mais un choix par défaut de Microsoft dont la portée s’étend à tout l’écosystème — et que chaque auto-hébergeur devrait vérifier chez lui.
Verdict
Cet épisode n’est pas une vulnérabilité exploitable, et aucune donnée sensible — photo ou vidéo — n’a été transmise. C’est un rappel plus gênant : « auto-hébergé » ne veut pas dire « aucun flux sortant tiers ». Une seule dépendance transitive, mise à jour sans relecture, a suffi à rouvrir le canal qu’Immich s’était efforcé de garder fermé.
Si vous tournez sur Immich, montez en 3.3.6 sans attendre : le correctif est officiel et rétablit le comportement attendu. Si vous êtes bloqué sur une version antérieure, posez ORT_DISABLE_TELEMETRY=1 sur le conteneur de machine learning et vérifiez vos autres dépendances d’inférence — le même défaut peut exister chez n’importe quel projet qui embarque ONNX Runtime sans l’avoir audité. La leçon vaut pour tout le self-hosted : la vie privée se défend dans les dépendances, pas seulement dans le choix de l’application.