Sobre o Desenvolvedor

Porque criei uma app que protege automaticamente o perímetro de rede do seu Mac

O relato de como o programador independente Tetsuharu Fujiki (Lafine Systems Design) investigou pessoalmente os riscos de exposição do Wi-Fi público e dos servidores de desenvolvimento.

Tudo começou com uma pergunta casual sobre o Wi-Fi de um restaurante de fast-food

Tudo começou com uma pergunta casual sobre o Wi-Fi de um restaurante de fast-food

Um dia, a trabalhar numa Wi-Fi pública, perguntei-me de repente: «Como é que o meu Mac aparece, nesta Wi-Fi, para a pessoa na mesa ao lado?» — e comecei a investigar.

«Desde que o Wi-Fi público tenha isolamento de clientes (isolamento de AP), está-se seguro porque não é possível comunicar com outros dispositivos» — foi o que acreditei durante muito tempo. Mas, ao investigar, descobri que essa suposição era mais frágil do que pensava. O isolamento de clientes não está garantido em todas as redes Wi-Fi e, mesmo onde está, descobri que pode ser contornado por uma técnica chamada «AirSnitch», reportada pelo SANS Institute. Executar eu próprio o dns-sd e o lsof foi a primeira vez que percebi realmente quanta informação o meu Mac transmitia em texto simples através do Bonjour (mDNS).

A conclusão a que cheguei foi simples: só há duas contramedidas reais — «reduzir a superfície exposta» e partir do princípio de que «uma pessoa não vai mudar manualmente as definições sempre que a rede muda». Quase ninguém volta a verificar as definições sempre que chega a um café (eu também não). Por isso, pensei que era preciso um mecanismo que distinguisse automaticamente redes de confiança das restantes e reduzisse discretamente a superfície exposta em redes desconhecidas — transformar isso numa app macOS automatizada foi o início do RoamSwitch.

Os servidores de desenvolvimento, percebi, tinham o mesmo problema

Os servidores de desenvolvimento, percebi, tinham o mesmo problema

Na sequência da investigação sobre o Wi-Fi público, fiquei curioso sobre «e os servidores de desenvolvimento?» e aprofundei o assunto. Presumia vagamente que «os servidores de desenvolvimento só escutam em localhost, por isso são seguros a partir do exterior» — mas isto também se revelou muito variável consoante a framework, com alguns padrões contraintuitivos.

O next dev associa-se a 0.0.0.0 caso não seja especificado um hostname, e o python -m http.server também expõe todas as interfaces por predefinição. O Vite é comparativamente sensato, com localhost por predefinição — mas todos provavelmente já adicionaram --host para testar num telemóvel real, e existe precisamente o CVE-2023-34092 (uma falha de path traversal, CVSS 7,5) que visa esse caso. A opção -p do Docker chega a publicar em 0.0.0.0 mesmo contornando as definições da firewall do anfitrião.

No fim, isto também levou à mesma conclusão. Em vez de depender de uma pessoa que se lembre de fechar tudo, um mecanismo que bloqueia automaticamente o acesso externo no instante em que se liga a uma rede não fiável é mais realista. Na prática, este tornou-se um dos casos de uso mais reportados do RoamSwitch — auditando passivamente as portas abertas para reportar o risco, ao mesmo tempo que bloqueia o acesso a partir da LAN externa através do filtro de pacotes do kernel em redes não registadas.

Perfil

Lafine Systems Design / Programador independente

Lafine Systems Design / Programador independente

A base técnica por trás do controlo de firewall do RoamSwitch (pf/socketfilterfw), da deteção de ARP spoofing e da separação segura de privilégios através de um assistente privilegiado (XPC) assenta na experiência prática como engenheiro de sistemas numa empresa de TI estrangeira e num grande grupo eletrónico, bem como no conhecimento de fundamentos de SO/rede, automação operacional, resposta a incidentes e gestão de segurança adquirido ao gerir um serviço ASP próprio para organismos públicos, universidades e institutos de investigação. As áreas de interesse incluem Linux de baixo nível, defesa de rede, machine learning, infraestrutura de dados de alto desempenho e design de sistemas. Atualmente trabalha como programador independente, também dedicado à área de IA/machine learning, enquanto desenvolve e mantém o RoamSwitch, uma app que automatiza a segurança de rede do Mac. As descobertas são publicadas como artigos técnicos no Zenn.

Publicado de forma verificável

📝 Ler artigos técnicos no Zenn Suporte e Contactos

Para as divulgações legalmente exigidas, como o nome do operador, morada e métodos de pagamento, consulte a divulgação nos termos da Lei das Transações Comerciais Específicas.