Pourquoi j'ai créé une application qui protège automatiquement la frontière réseau de votre Mac
Le récit de la façon dont Tetsuharu Fujiki, développeur indépendant (Lafine Systems Design), a lui-même enquêté sur les risques d'exposition du Wi-Fi public et des serveurs de développement.
Tout a commencé par une question anodine sur le Wi-Fi d'un fast-food
Un jour, alors que je travaillais sur un Wi-Fi public, je me suis soudain demandé : « À quoi ressemble mon Mac, sur ce Wi-Fi, pour la personne à la table d'à côté ? » — et j'ai commencé à creuser.
« Tant que le Wi-Fi public dispose de l'isolation des clients (isolation AP), on est en sécurité puisqu'on ne peut pas communiquer avec les autres appareils » — c'est ce que j'ai longtemps cru. Mais en creusant, j'ai découvert que cette hypothèse était bien plus fragile que je ne le pensais. L'isolation des clients n'est pas garantie sur tous les réseaux Wi-Fi, et même là où elle l'est, j'ai appris qu'elle pouvait être contournée par une technique appelée « AirSnitch », rapportée par le SANS Institute. Ce n'est qu'en exécutant moi-même dns-sd et lsof que j'ai vraiment réalisé à quel point mon Mac diffusait d'informations en clair via Bonjour (mDNS).
La conclusion à laquelle je suis arrivé était simple : il n'existe que deux contre-mesures réelles — « réduire la surface exposée » et partir du principe qu'« un humain ne changera pas manuellement les réglages à chaque changement de réseau ». Presque personne ne revérifie ses réglages à chaque arrivée dans un café (moi non plus). J'ai donc pensé qu'il fallait un mécanisme distinguant automatiquement les réseaux de confiance des autres, et réduisant discrètement la surface exposée sur les réseaux inconnus — et c'est en intégrant cela dans une application macOS automatisée que RoamSwitch est né.
Les serveurs de développement souffraient en fait du même problème
Dans la foulée de mon enquête sur le Wi-Fi public, je me suis demandé « et qu'en est-il des serveurs de développement ? » et j'ai creusé. Je supposais vaguement que « les serveurs de développement n'écoutent que sur localhost, donc ils sont sûrs depuis l'extérieur » — mais cela aussi s'est révélé varier énormément selon le framework, avec des valeurs par défaut parfois contre-intuitives.
next dev se lie à 0.0.0.0 si aucun nom d'hôte n'est spécifié, et python -m http.server expose de même toutes les interfaces par défaut. Vite est relativement raisonnable, avec localhost par défaut — mais tout le monde a sans doute déjà ajouté --host pour tester sur un vrai téléphone, et CVE-2023-34092 (une faille de traversée de chemin, CVSS 7,5) existe justement pour ce cas précis. L'option -p de Docker va jusqu'à publier sur 0.0.0.0 en contournant même les réglages du pare-feu de l'hôte.
Au final, cela a mené à la même conclusion. Plutôt que de compter sur un humain qui se souvient de tout fermer, un mécanisme qui bloque automatiquement l'accès externe dès la connexion à un réseau non fiable est plus réaliste. C'est d'ailleurs devenu l'un des cas d'usage les plus fréquemment rapportés de RoamSwitch en pratique — un audit passif des ports ouverts pour signaler le risque, tout en bloquant l'accès depuis le réseau local externe via le filtre de paquets du noyau sur les réseaux non enregistrés.
Lafine Systems Design / Développeur indépendant
Le socle technique du contrôle du pare-feu de RoamSwitch (pf/socketfilterfw), de la détection d'usurpation ARP et de la séparation sécurisée des privilèges via un assistant privilégié (XPC) s'appuie sur une expérience pratique en tant qu'ingénieur systèmes au sein d'une entreprise informatique étrangère et d'un grand groupe électronique, ainsi que sur des connaissances en fondamentaux OS/réseau, automatisation opérationnelle, gestion des incidents et sécurité, acquises en exploitant un service ASP indépendant pour des administrations, universités et instituts de recherche. Les domaines d'intérêt incluent Linux bas niveau, la défense réseau, l'apprentissage automatique, les infrastructures de données haute performance et la conception de systèmes. Actuellement développeur indépendant, également investi dans le domaine de l'IA/apprentissage automatique, tout en développant et maintenant RoamSwitch, une application qui automatise la sécurité réseau des Mac. Les découvertes sont publiées sous forme d'articles techniques sur Zenn.
Publié sous une forme vérifiable
- RoamSwitchKit — SDK open source sous licence MIT (GitHub)
- roamswitch-mcp — code source du serveur MCP et de la logique de détection (GitHub, MIT)
- Livre blanc sécurité de RoamSwitch (toutes les sections publiques)
- Trafic sortant Zero Telemetry mesuré avec tcpdump + attribution par processus (script reproductible, PASS)
- Journal des modifications (GitHub, publié en continu)
- Recherches publiées en articles techniques sur Zenn
- Notes sur l'édition solo d'un produit de sécurité sur note (JP)
- Articles et essais en anglais sur dev.to
Pour les mentions légales obligatoires telles que le nom de l'exploitant, l'adresse et les modes de paiement, consultez la mention légale au titre de la loi sur les transactions commerciales spécifiques.