Chi sviluppa

Perché ho creato un'app che protegge automaticamente il confine di rete del tuo Mac

Il racconto di come lo sviluppatore indipendente Tetsuharu Fujiki (Lafine Systems Design) abbia indagato di persona sui rischi di esposizione del Wi-Fi pubblico e dei server di sviluppo.

Tutto è iniziato con una domanda casuale sul Wi-Fi di un fast food

Tutto è iniziato con una domanda casuale sul Wi-Fi di un fast food

Un giorno, lavorando su un Wi-Fi pubblico, mi sono improvvisamente chiesto: "Come appare il mio Mac, su questo Wi-Fi, alla persona al tavolo accanto?" — e ho iniziato a indagare.

«Anche su un Wi-Fi pubblico, se l'isolamento dei client (isolamento AP) è attivo, non si può comunicare con gli altri dispositivi, quindi è sicuro.» L'ho creduto a lungo, ma indagando ho scoperto che quel presupposto era più fragile del previsto. L'isolamento dei client non è attivo su tutti i Wi-Fi. Anche dove lo è, può essere aggirato con una tecnica chiamata «AirSnitch», segnalata dal SANS Institute. Anche quante informazioni il mio Mac annunci in chiaro tramite Bonjour (mDNS) l'ho capito davvero solo eseguendo di persona dns-sd e lsof.

La conclusione era semplice. Le contromisure sono due: ridurre la superficie esposta e partire dal presupposto che nessuno cambi le impostazioni a mano a ogni cambio di rete. Quasi nessuno rivede le impostazioni ogni volta che arriva in un bar (nemmeno io). Così ho creato un'app per macOS che distingue automaticamente le reti attendibili dalle altre e riduce automaticamente la superficie esposta nelle reti sconosciute. È l'origine di RoamSwitch.

Anche i server di sviluppo, si è scoperto, avevano lo stesso problema

Anche i server di sviluppo, si è scoperto, avevano lo stesso problema

Mentre indagavo sui Wi-Fi pubblici, mi sono chiesto anche come stessero le cose con i server di sviluppo e ho approfondito. Pensavo vagamente che «un server di sviluppo ascolti solo su localhost, quindi sia sicuro dall'esterno», ma in realtà dipende dal framework e alcuni valori predefiniti sono controintuitivi.

next dev si lega a 0.0.0.0 se non si specifica hostname. Anche python -m http.server ascolta per impostazione predefinita su tutte le interfacce. Vite usa localhost per impostazione predefinita, ma chiunque ha aggiunto --host per provare su uno smartphone reale. Esiste anche CVE-2023-34092 (path traversal, CVSS 7.5), che prende di mira proprio questo. Con -p di Docker, una porta può persino essere pubblicata su 0.0.0.0 aggirando le impostazioni del firewall dell'host.

Anche qui si è arrivati alla stessa conclusione. Invece di contare sul fatto che ci si ricordi ogni volta di chiudere le porte, è più realistico bloccare automaticamente l'accesso dall'esterno nel momento in cui ci si collega a una rete non attendibile. In effetti è uno degli usi di RoamSwitch più segnalati. Esegue un audit passivo delle porte aperte e segnala il rischio, e nelle reti non registrate blocca l'accesso dalla LAN esterna con il filtro di pacchetti del kernel.

Profilo

Lafine Systems Design / Sviluppatore indipendente

Lafine Systems Design / Sviluppatore indipendente

Il controllo del firewall (pf/socketfilterfw), il rilevamento dello spoofing ARP e l'helper privilegiato (XPC) di RoamSwitch si basano sull'esperienza sul campo. Ho lavorato come SE in un'azienda IT estera e in un grande gruppo produttore di elettronica e, dopo essermi messo in proprio, ho fornito servizi ASP a enti pubblici, università e istituti di ricerca. Oggi sviluppo «RoamSwitch» da solo e scrivo su Zenn ciò che scopro.

Pubblicato in forma verificabile

📝 Leggi articoli tecnici su Zenn Supporto e Richieste

Per le informazioni obbligatorie per legge, come nome del gestore, indirizzo e metodi di pagamento, consulta la dichiarazione ai sensi della legge sulle transazioni commerciali specifiche.