Por qué creé una app que protege automáticamente el perímetro de red de tu Mac
El relato de cómo Tetsuharu Fujiki, desarrollador independiente (Lafine Systems Design), investigó por sí mismo los riesgos de exposición del Wi-Fi público y los servidores de desarrollo.
Todo empezó con una pregunta casual sobre el Wi-Fi de un restaurante de comida rápida
Un día, trabajando en un Wi-Fi público, me pregunté de repente: «¿Cómo se ve mi Mac, en este Wi-Fi, para la persona de la mesa de al lado?» y empecé a investigar.
«Incluso en un Wi-Fi público, si el aislamiento de clientes (aislamiento AP) está activo, no se puede comunicar con otros dispositivos, así que es seguro.» Lo creí durante mucho tiempo, pero al investigarlo, esa premisa resultó más frágil de lo que pensaba. El aislamiento de clientes no está activado en todas las redes Wi-Fi. Incluso donde lo está, puede eludirse con una técnica llamada «AirSnitch», descrita por el SANS Institute. Tampoco fui consciente de cuánta información anuncia mi Mac en texto plano por Bonjour (mDNS) hasta que ejecuté yo mismo dns-sd y lsof.
La conclusión era simple. Hay dos medidas: reducir la superficie expuesta y partir de que nadie cambia los ajustes a mano cada vez que cambia la red. Casi nadie revisa su configuración cada vez que llega a una cafetería (yo tampoco). Por eso creé una app de macOS que distingue automáticamente las redes de confianza del resto y reduce automáticamente la superficie expuesta en las redes desconocidas. Así empezó RoamSwitch.
Resultó que los servidores de desarrollo tenían el mismo problema
Al investigar el Wi-Fi público, también me pregunté qué pasaba con los servidores de desarrollo y profundicé. Suponía vagamente que «un servidor de desarrollo solo mira a localhost, así que es seguro desde fuera», pero en realidad varía según el framework y algunos valores predeterminados son contraintuitivos.
next dev se enlaza a 0.0.0.0 si no se especifica hostname. python -m http.server también escucha por defecto en todas las interfaces. Vite usa localhost por defecto, pero todo el mundo ha añadido alguna vez --host para probar en un móvil real. Existe incluso CVE-2023-34092 (path traversal, CVSS 7.5), que apunta justo a eso. Con -p de Docker, un puerto puede incluso publicarse en 0.0.0.0 saltándose la configuración del cortafuegos del host.
Esto llevó a la misma conclusión. En lugar de depender de que cada persona se acuerde de cerrar los puertos cada vez, es más realista bloquear automáticamente el acceso desde fuera en el momento de conectarse a una red no confiable. De hecho, es uno de los usos de RoamSwitch que más se reportan. Audita pasivamente los puertos abiertos e informa del riesgo, y en las redes no registradas bloquea el acceso desde la LAN externa con el filtro de paquetes del kernel.
Lafine Systems Design / Desarrollador independiente
El control del cortafuegos (pf/socketfilterfw), la detección de suplantación ARP y el ayudante con privilegios (XPC) de RoamSwitch se basan en experiencia práctica. Trabajé como SE en una empresa de TI extranjera y en un gran grupo fabricante de electrónica y, tras independizarme, ofrecí servicios ASP a organismos públicos, universidades e institutos de investigación. Ahora desarrollo «RoamSwitch» por mi cuenta y escribo en Zenn lo que investigo.
Publicado de forma verificable
- RoamSwitchKit (SDK de código abierto con licencia MIT, GitHub)
- roamswitch-mcp (código fuente del servidor MCP y de la lógica de detección, GitHub, MIT)
- Documento técnico de seguridad de RoamSwitch (todas las secciones públicas)
- Medición del tráfico saliente de Zero Telemetry (a la versión 1.4.7. tcpdump más atribución a procesos, PASS con un script reproducible. La versión actual se volverá a medir)
- Registro de cambios (GitHub, publicado de forma continua)
- Investigaciones publicadas como artículos técnicos en Zenn
- Notas sobre gestionar un producto de seguridad en solitario en note (JP)
- Artículos y ensayos en inglés en dev.to
Para las divulgaciones legalmente exigidas, como el nombre del operador, la dirección y los métodos de pago, consulta la divulgación conforme a la Ley de Transacciones Comerciales Específicas.