Quand des noms d’hôtes internes fuitent vers le cloud
(rachelbythebay.com)- Découverte d’un cas où l’interface web d’un NAS domestique envoie un nom d’hôte réservé à l’usage interne vers un service externe
- Le script de rapport d’erreurs sentry.io inclus dans l’interface web du NAS transmet ce nom d’hôte interne vers l’extérieur avec la pile d’appels
- Un comportement étrange a été observé : sentry.io tente en retour une connexion TLS vers ce nom d’hôte, mais n’envoie jamais de véritable requête
- Le fait d’avoir configuré à l’avance un DNS wildcard a permis de détecter la fuite, avec un risque grave d’exposition d’informations si des noms d’hôtes sensibles sont utilisés
- Ce mécanisme présente un problème de sécurité potentiel : il pourrait être détourné pour provoquer un scan DNS de n’importe quel hôte
Installation du NAS et configuration du nom d’hôte interne
- Achat d’un NAS, installation des disques et connexion au réseau domestique, avec une exploitation en mode HTTPS
- Installation d’un certificat TLS wildcard pour un sous-espace d’un domaine sans signification particulière sur l’Internet public (ex. :
*.nothing-special.whatever.example.com) - Ajout dans le fichier
/etc/hostsd’une entrée locale uniquement comme172.16.12.34 nas.nothing-special.whatever.example.comafin d’y accéder depuis le navigateur
Découverte d’un accès inattendu depuis l’extérieur
- Quelques jours après l’installation du NAS, des requêtes provenant de l’extérieur (« outside world ») ont commencé à arriver pour ce même nom d’hôte
- Ce nom d’hôte est un nom entièrement réservé à l’usage interne, présent uniquement dans le fichier
/etc/hostsdu portable - La fuite a pu être détectée parce qu’une entrée DNS wildcard pointant vers une machine contrôlée par l’auteur avait été configurée à l’avance pour tout
*.nothing-special.whatever.example.com - À chaque chargement du NAS, un hôte GCP tentait de se connecter en présentant ce nom d’hôte interne comme SNI
Cause de la fuite : rapport d’erreurs sentry.io
- L’interface web du NAS inclut une fonction de phone home, dont une partie consiste à envoyer des piles d’appels à sentry.io
- Lors du callback du navigateur vers sentry.io, le nom d’hôte utilisé pour l’équipement de stockage interne est également transmis
- Il a été confirmé que sentry.io initie en retour une connexion TLS vers ce nom d’hôte, sans jamais envoyer de véritable requête HTTP
Implications de sécurité et réponse
- Si le nom d’hôte contient des informations sensibles (par ex.
mycorp-and-othercorp-planned-merger-storage), il existe un risque de fuite d’informations grave - Ce mécanisme de rapport Sentry pourrait être utilisé pour déclencher un scan DNS vers un hôte externe arbitraire (la méthode précise est laissée au lecteur)
- Comme mesure de réponse, Little Snitch a été utilisé pour bloquer l’ensemble de ce domaine pour toutes les applications
1 commentaires
Commentaires Hacker News
Les gens semblent mal comprendre le problème. Ce n’est pas une question de logs CT, mais de certificat wildcard
Sentry collectait des traces côté client, en extrayait le nom d’hôte ayant envoyé la requête, puis tentait de l’interroger à nouveau avant d’être bloqué
Un nom d’hôte n’est fondamentalement pas une information privée
Il est exposé à l’extérieur par divers canaux, comme les requêtes DNS ou les certificats TLS
Si l’on veut dissimuler un service privé, mieux vaut mettre le secret dans le chemin d’URL plutôt que dans le nom d’hôte
Par exemple,
fileservice.example.com/my-hidden-service-007-abc123/n’est transmis qu’en HTTPS, ce qui réduit fortement l’expositionJe me demandais si « clown GCP Host » était un terme technique. En fait, l’auteur utilisait cette expression pour tourner le cloud en dérision
Le cœur du problème est que l’interface web du NAS envoyait des logs à Sentry avec des noms d’hôte internes inclus
Dans un cas comme celui-ci, je remplacerais probablement le système par un OS open source de confiance, ou je bloquerais les appels vers Sentry avec un filtrage DNS comme PiHole
Quelqu’un a expliqué qu’il utilisait un DNS local et un proxy TLS pour bloquer totalement le trafic sortant
C’est pour ce genre de cas que je considère uBlock Origin comme le minimum en matière de sécurité web
Le fait que la plupart des pages web chargent une avalanche de scripts tiers qui font fuiter des données est un problème beaucoup trop grave
Ce n’est pas une solution de fond, mais c’est le mieux que nous puissions faire immédiatement
Pour éviter ce genre de problème, il vaut mieux placer un reverse proxy Nginx en frontal et injecter des en-têtes CSP
Cela n’empêchera pas le NAS d’envoyer lui-même des requêtes vers l’extérieur, mais cela peut empêcher le navigateur de les envoyer à sa place
Par exemple, des requêtes d’avatar Steam (
https://avatars.steamstatic.com/HASH_medium.jpg) peuvent aussi être bloquées par une politique CSPOn peut n’ouvrir que certaines destinations si nécessaire. On peut aussi ajouter Referrer-Policy: no-referrer pour éviter que le nom d’hôte n’apparaisse dans des logs externes
J’ai acheté un NAS Synology et je l’ai regretté plusieurs fois
En dehors des logiciels de la communauté, il n’y a presque rien qu’on puisse vraiment faire avec
Mettre en place SSL avec Let's Encrypt est compliqué, et comme les chemins ne sont pas standards, il est difficile de trouver où se situe la configuration
Entre l’ancienne version de rsync, le manque d’outils de base et d’autres frustrations, j’aurais mieux fait de choisir un NAS sous Linux ou BSD
J’ai récemment configuré Sentry, et ce système a une fonction qui tente de configurer automatiquement la supervision de disponibilité
Lorsqu’il reconnaît un hôte, il lui envoie périodiquement des ping, puis, après quelques jours de réponses stables, affiche une notification du type : « Voulez-vous configurer une supervision de disponibilité pour cet hôte ? »
Personnellement, je bloque tout le domaine lié à Sentry
Ce n’est pas une solution générale, mais dans mon environnement, c’est ce qu’il y a de mieux
On voit souvent des serveurs de résolution inverse essayer de résoudre même des adresses de réseau interne (ULA, RFC1918)
En combinant ces données avec d’autres informations, on peut déduire l’état interne d’un réseau
Quelqu’un a même dit qu’« en collectant sur le darknet, il lui était arrivé de capter de l’audio UDP »
J’ai déjà enquêté sur un phénomène similaire chez Heroku
Lorsqu’on crée une nouvelle application, un sous-domaine aléatoire est attribué, mais même avant toute requête DNS, des requêtes de scanners de vulnérabilités arrivent déjà
Après avoir contacté Heroku, on m’a expliqué que c’était parce que l’URL de la nouvelle application était publiée dans les logs de transparence des certificats (CT)
Un lien vers le fonctionnement de Certificate Transparency a aussi été partagé