Le 24 octobre 2026, la chercheuse Erica Windisch (Cyberdione Labs) a publié « Tailworm », un audit de sécurité de Tailscale et de headscale qui recense onze vulnérabilités. Le cœur du rapport concerne Tailscale SSH : un utilisateur autorisé à se connecter, même avec un compte ordinaire, pouvait obtenir les privilèges root sur le serveur cible en abusant du transfert de sockets Unix. Enchaînées, ces failles ont permis en laboratoire une propagation automatique de machine en machine, en moins d’une seconde par rebond. Le rapport ayant été rendu public environ deux heures après sa transmission à l’éditeur, Tailscale a dû livrer les correctifs dans l’urgence : ils sont disponibles depuis la version 1.104.4.
- Onze constats, dont plusieurs jugés élevés par la chercheuse, ont été identifiés sur Tailscale 1.104.2 et headscale 0.29.5 ; trois d’entre eux permettent une élévation vers root via Tailscale SSH.
- Le transfert de sockets Unix (
ssh -L/ssh -R) s’exécutait avec les droits root du démontailscaled, et non avec ceux de l’utilisateur authentifié. - Prérequis : contrôler déjà un appareil autorisé du tailnet et bénéficier d’une règle SSH qui autorise le transfert. Un attaquant non authentifié ne peut pas exploiter ces failles.
- Correctif : Tailscale v1.104.4, accompagné de quatre bulletins (TS-2026-014 à TS-2026-017). Certains constats (headscale, conn25, Funnel) restaient ouverts selon le rapport au 28 octobre.
Ce qui s’est passé
Tailscale est un réseau privé maillé fondé sur WireGuard, largement utilisé pour l’accès à distance aux serveurs et aux environnements d’administration. Sa fonction Tailscale SSH remplace l’authentification SSH classique par l’identité de l’appareil et les règles d’accès définies dans le fichier de politique du tailnet. headscale est une implémentation open source et auto-hébergeable du serveur de contrôle.
Selon la chronologie publiée par Tailscale, des inquiétudes concernant Tailscale SSH ont circulé sur les réseaux sociaux le vendredi 23 octobre, et l’éditeur a commencé à enquêter. Il a reçu le rapport le samedi 24 octobre au matin ; la chercheuse l’a publié environ deux heures plus tard, avant toute correction. Cette divulgation non coordonnée a suscité des critiques, la chercheuse estimant qu’une sensibilisation rapide accélérerait la remédiation.
Les équipes de Tailscale ont travaillé sur les correctifs pendant le week-end. Le 26 octobre, l’éditeur a publié un premier point d’étape et ses bulletins de sécurité. La version 1.104.4 a été étiquetée le 27 octobre, et un article de synthèse a suivi le 28 octobre. La chercheuse salue d’ailleurs une réponse « rapide et substantielle » de l’éditeur.
Analyse technique
Une élévation vers root par le transfert de sockets
Les constats 1 à 3 du rapport forment le scénario le plus grave. Le transfert de sockets Unix demandé par un client SSH était exécuté par le processus tailscaled, qui tourne en root. La liste des chemins autorisés (répertoire personnel, /tmp, /run/user) était vérifiée de manière purement lexicale, si bien qu’une course de type TOCTOU par renommage permettait de la contourner.
D’après le rapport, un utilisateur SSH ordinaire pouvait ainsi :
- exécuter du code en root en atteignant le socket Docker appartenant à root ;
- remplacer le socket de contrôle de Tailscale et capturer une clé d’enrôlement (authkey) ;
- supprimer ou modifier les permissions de fichiers appartenant à root ;
- joindre en root le bus privé de systemd, et en tirer un shell root.
La chercheuse rappelle qu’OpenSSH abandonne ses privilèges avant de gérer le transfert, et que Dropbear a corrigé la même classe de défaut (CVE-2025-14282) dans sa version 2025.89. Tailscale résume le problème ainsi : une session authentifiée pouvait réaliser des opérations dépassant les privilèges de l’utilisateur local configuré, y compris via le transfert SSH.
Le « ver » : une propagation bornée par la politique d’accès
Le rapport décrit une chaîne complète : maintenir l’écoute sur le socket, intercepter le trafic de l’API locale, capturer une authkey, puis enrôler un nœud malveillant sous l’identité de la victime. Cette chaîne a été démontrée de bout en bout sur un tailnet où la fonction de verrouillage (Tailnet Lock) était désactivée. En laboratoire, la propagation automatique vers chaque serveur accessible selon la politique s’est faite en moins d’une seconde par rebond, sans identifiants utilisateur ni interaction.
Tailscale conteste le terme de ver autoréplicant : il s’agit, selon l’éditeur, d’un mouvement latéral limité aux connexions que la politique autorise. Les deux lectures convergent sur un point : l’étendue des dégâts dépend directement de la largeur des règles SSH. La chercheuse note que des autorisations par paire d’appareils ont stoppé la propagation, et que des identifiants d’appareil liés au matériel (TPM, Secure Enclave) empêchaient le vol d’identité.
Les autres constats
| Bulletin / constat | Composant | Description | Statut |
|---|---|---|---|
| TS-2026-014 (constats 1–3) | Tailscale SSH | Transfert de sockets Unix exécuté en root, accès à des sockets réservés à root | Corrigé en 1.104.4 |
| TS-2026-015 (constat 5) | Tailscale SSH / gliderssh | Épuisement mémoire de tailscaled par une session authentifiée (déni de service) | Corrigé en 1.104.4 |
| TS-2026-016 (constats 7–8) | Serve | Des backends Unix pouvaient atteindre des sockets privilégiés, dont l’API locale de tailscaled | Corrigé en 1.104.4 |
| TS-2026-017 (constat 11) | Serve (HTTP/2) | Course permettant à des capacités d’un point de montage de s’appliquer à un autre | Corrigé en 1.104.4 |
| Constat 4 | conn25 (connecteurs d’applications) | Choix de destinations arbitraires, y compris services de métadonnées cloud et Kubernetes | Fonction non publiée ; correctif partiel selon le rapport |
| Constat 6 | headscale, client DERP | Consommation mémoire non bornée | Client corrigé ; headscale en attente selon le rapport |
| Constats 9–10 | Funnel, Serve | Contrôle d’habilitation Funnel ; option TS_SERVE_ALLOW_ALL_INTERFACES | Considérés par Tailscale comme conformes à la conception |
Qui est concerné ?
Sont exposées en priorité les organisations qui utilisent Tailscale SSH avec des règles autorisant le transfert local ou distant, en particulier lorsque ces règles sont larges (accès accordé à une identité ou à un tag entier, comptes cibles privilégiés). Les déploiements qui utilisent OpenSSH classique au-dessus de Tailscale ne sont pas concernés par la chaîne SSH. Les environnements auto-hébergés sous headscale 0.29.5 méritent une attention particulière : selon le rapport, le transfert ne peut pas y être désactivé par la politique.
Pourquoi c’est important
Les solutions d’accès de type « zero trust » concentrent l’autorisation sur l’identité de l’appareil. C’est une force, mais aussi un point de défaillance unique : un poste compromis par hameçonnage, une application web vulnérable ou un paquet logiciel malveillant suffit à hériter de toutes les autorisations de cet appareil. Si ces autorisations incluent un accès SSH à de nombreux serveurs, une élévation locale se transforme en compromission de flotte.
L’épisode rappelle aussi qu’un outil d’accès réseau est un composant critique de la chaîne d’administration, qui doit être inventorié, mis à jour et surveillé comme un VPN ou un bastion.
Lecture MITRE ATT&CK
Ni l’éditeur ni la chercheuse ne fournissent de correspondance ATT&CK. Le tableau ci-dessous est une lecture indicative de Defensy, établie à partir du scénario décrit en laboratoire.
| Technique | Comportement décrit |
|---|---|
| T1021.004 — Remote Services: SSH | Connexion via Tailscale SSH depuis un appareil autorisé compromis |
| T1068 — Exploitation for Privilege Escalation | Transfert de sockets exécuté en root, puis shell root via Docker ou systemd |
| T1210 — Exploitation of Remote Services | Propagation automatisée vers les serveurs autorisés par la politique |
| T1499 — Endpoint Denial of Service | Épuisement mémoire de tailscaled et de headscale |
Recommandations
- ImmédiatMettre à jour vers Tailscale 1.104.4 ou ultérieure
Priorisez les serveurs qui exposent Tailscale SSH, puis l’ensemble des nœuds. Vérifiez la version réellement déployée sur chaque appareil, y compris les conteneurs et images figées.
- ImmédiatDésactiver le transfert SSH là où il n’est pas nécessaire
Dans le fichier de politique, désactivez le transfert local et distant pour les règles qui n’en ont pas besoin. Sur un nœud non encore mis à jour, le bulletin TS-2026-014 indique de définir
TS_SSH_DISABLE_FORWARDING=1dans l’environnement du servicetailscaledpuis de redémarrer le service. - ImmédiatTraiter chaque autorisation SSH comme un accès root sous headscale
Sur headscale 0.29.5, restreignez drastiquement les règles SSH, ou basculez temporairement vers OpenSSH classique au-dessus du tunnel jusqu’à correction.
- Court termeResserrer la politique d’accès SSH
Remplacez les règles accordées à une identité ou à un tag entier par des autorisations par paire source/destination, évitez les comptes cibles privilégiés et envisagez le mode « check » pour les systèmes sensibles, en gardant à l’esprit qu’il ne contrôle que l’établissement de la session, pas le transfert.
- Court termeDurcir l’identité des nœuds
Activez Tailnet Lock, l’expiration des clés de nœud sur les serveurs et, lorsque c’est possible, un stockage d’état lié au matériel. Faites tourner les authkeys accessibles depuis des hôtes potentiellement exposés.
- Moyen termeSurveiller hors de l’hôte
Centralisez dans votre SIEM les journaux du plan de contrôle (ajout de nœuds, changements de politique) et la télémétrie des serveurs (création de sockets, accès à
docker.sock, shells inattendus). En cas de compromission, supprimez l’appareil côté plan de contrôle : une réinstallation ne révoque pas des clés copiées.
Cette affaire illustre une réalité souvent sous-estimée : l’outil d’accès distant fait partie de la surface d’attaque. Des règles trop larges transforment une compromission locale en mouvement latéral à l’échelle d’un parc, en quelques secondes.
Nos équipes Audit & Offensive Security évaluent vos politiques d’accès et simulent ces scénarios de mouvement latéral. Notre SOC, Détection & Réponse surveille les signaux d’élévation de privilèges et d’enrôlement d’appareils suspects.
- Tailscale SSH: Findings and FixesTailscale — Mike Shaver — 28 octobre 2026
- Security Bulletins (TS-2026-014 à TS-2026-017)Tailscale — 26 octobre 2026
- Tailworm — Security assessment of Tailscale v1.104.2 and headscale v0.29.5Cyberdione Labs — Erica Windisch — mis à jour le 27 octobre 2026
- Tailscale Rushes Patches After Uncoordinated Disclosure of Tailworm FlawsSecurityWeek — Eduard Kovacs — 27 octobre 2026
- MITRE ATT&CK® — Enterprise MatrixMITRE Corporation
