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.

"Finché il Wi-Fi pubblico ha l'isolamento dei client (isolamento AP), sei al sicuro perché non puoi comunicare con altri dispositivi" — questo ho creduto a lungo. Ma scavando, ho scoperto che questa ipotesi era più fragile di quanto pensassi. L'isolamento dei client non è garantito su ogni rete Wi-Fi, e anche dove lo è, ho scoperto che può essere aggirato con una tecnica chiamata "AirSnitch", segnalata dal SANS Institute. Eseguire io stesso dns-sd e lsof è stata la prima volta che ho davvero capito quante informazioni il mio Mac trasmettesse in chiaro tramite Bonjour (mDNS).

La conclusione a cui sono arrivato è stata semplice: esistono solo due contromisure reali: "ridurre la superficie esposta" e partire dal presupposto che "una persona non cambierà manualmente le impostazioni ogni volta che cambia la rete". Quasi nessuno ricontrolla le proprie impostazioni ogni volta che arriva in un bar (nemmeno io). Ho quindi pensato che servisse un meccanismo in grado di distinguere automaticamente le reti affidabili dalle altre e di ridurre silenziosamente la superficie esposta su quelle sconosciute: trasformare questo in un'app macOS automatizzata è stato l'inizio di RoamSwitch.

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

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

Proseguendo dall'indagine sul Wi-Fi pubblico, mi sono chiesto "e i server di sviluppo?" e ho approfondito. Presumevo vagamente che "i server di sviluppo ascoltano solo su localhost, quindi sono sicuri dall'esterno" — ma anche questo si è rivelato variare enormemente a seconda del framework, con alcune impostazioni predefinite controintuitive.

next dev si collega a 0.0.0.0 se non viene specificato un hostname, e python -m http.server espone allo stesso modo tutte le interfacce per impostazione predefinita. Vite è relativamente ragionevole, con localhost come predefinito, ma chiunque avrà probabilmente aggiunto --host per testare su un telefono reale, ed esiste proprio la CVE-2023-34092 (un bug di path traversal, CVSS 7.5) che colpisce quel caso. L'opzione -p di Docker arriva persino a pubblicare su 0.0.0.0 aggirando le impostazioni del firewall dell'host.

Alla fine, anche questo ha portato alla stessa conclusione. Anziché contare su una persona che ricordi di chiudere tutto ogni volta, un meccanismo che blocca automaticamente l'accesso esterno nell'istante in cui ci si connette a una rete non attendibile è più realistico. In pratica, questo è diventato uno dei casi d'uso più segnalati di RoamSwitch: controllare passivamente le porte aperte per segnalarne il rischio, bloccando al contempo l'accesso dalla LAN esterna tramite il filtro dei pacchetti del kernel sulle reti non registrate.

Profilo

Lafine Systems Design / Sviluppatore indipendente

Lafine Systems Design / Sviluppatore indipendente

La base tecnica del controllo del firewall di RoamSwitch (pf/socketfilterfw), del rilevamento dello spoofing ARP e della sicura separazione dei privilegi tramite un helper privilegiato (XPC) si fonda sull'esperienza pratica come ingegnere di sistema presso un'azienda IT estera e un grande gruppo elettronico, oltre che sulle conoscenze di fondamenti di OS/rete, automazione operativa, gestione degli incidenti e sicurezza acquisite gestendo un servizio ASP indipendente per enti pubblici, università e istituti di ricerca. Le aree di interesse includono Linux a basso livello, difesa di rete, machine learning, infrastrutture dati ad alte prestazioni e progettazione di sistemi. Attualmente lavora come sviluppatore indipendente, impegnato anche nell'ambito IA/machine learning, mentre sviluppa e mantiene RoamSwitch, un'app che automatizza la sicurezza di rete del Mac. I risultati vengono pubblicati come articoli tecnici su Zenn.

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.