- Nas versões beta e release candidate do macOS 14 Sonoma, o firewall PF não filtra corretamente o tráfego, impedindo que o app Mullvad VPN funcione normalmente
- Quando algumas configurações, como compartilhamento de rede local, estão ativadas, isso pode levar a vazamentos de tráfego; por isso, a Mullvad considera difícil garantir funcionalidade e segurança no macOS 14
- A Mullvad investigou o problema após o sexto beta e o reportou à Apple, mas o bug permaneceu nos betas seguintes e no release candidate
- A empresa avaliou se seria possível contornar o problema com um patch no próprio app, mas não encontrou uma solução segura; fundamentalmente, é necessária uma correção no firewall pela Apple
- Usuários que dependem da filtragem PF, ou apps relacionados, devem ter cautela ao atualizar para o macOS 14; se o bug persistir, é mais seguro permanecer no macOS 13 Ventura
Problema no firewall PF do macOS 14 Sonoma
- Durante o período beta do macOS 14 Sonoma, a Apple introduziu um bug no packet filter(PF), o firewall do macOS
- Por causa desse bug, o app Mullvad VPN não funciona, e pode ocorrer vazamento de tráfego quando determinadas configurações estão ativadas
- O compartilhamento de rede local foi citado como exemplo de configuração
- A Mullvad investigou o problema depois do lançamento do sexto beta do macOS 14 e reportou o bug à Apple
- O mesmo problema continuou presente nos betas posteriores do macOS 14 e no release candidate
- A empresa avaliou uma forma de corrigir apenas o app de VPN para manter tanto o funcionamento quanto a segurança no macOS 14, mas concluiu que, no momento, não há uma boa solução
- O impacto não se limita ao app Mullvad VPN
- As regras de firewall não são aplicadas corretamente ao tráfego de rede
- Tráfego que não deveria ser permitido pode passar
- Usuários que dependem da filtragem PF, ou apps que a utilizam em segundo plano, devem ter cautela ao atualizar para o macOS 14
- O macOS 14 Sonoma tem lançamento previsto para 26 de setembro e, se o bug permanecer, recomenda-se que usuários da Mullvad fiquem no macOS 13 Ventura até que haja uma correção
Etapas de reprodução e resultado real
- O problema pode ser reproduzido no macOS 14, e este experimento remove as regras de firewall carregadas no PF
- No Terminal, crie uma interface virtual de logging e monitore o tráfego que corresponda às regras que serão adicionadas depois
sudo ifconfig pflog1 create
sudo tcpdump -nnn -e -ttt -i pflog1
- Escreva as seguintes regras de firewall no arquivo
pfrules
pass quick log (all, to pflog1) inet from any to 127.0.0.1
block drop quick log (all, to pflog1)
- Em outro Terminal, ative o PF e carregue as regras
sudo pfctl -e
sudo pfctl -f pfrules
ping 45.83.223.209
- O resultado esperado é que o ping seja bloqueado por não corresponder à condição da única regra
pass, e que o tráfego seja registrado em pflog1 como correspondente à regra block
- Na prática, o ping sai para a internet e a resposta retorna, sem que o tráfego seja registrado em
pflog1
- Após o experimento, desative o firewall e limpe todas as regras
sudo pfctl -d
sudo pfctl -f /etc/pf.conf
1 comentários
Opiniões no Hacker News
O mesmo bug do PF também está quebrando um dos recursos de rede do OrbStack.
Quando cheguei a isolar a causa até aqui, foi difícil acreditar, mas parece que não sou o único passando por isso. Espero muito que seja corrigido antes do lançamento da versão estável.
Só consegui reportar à Apple ontem, mas parece uma regressão bem recente, provavelmente surgida por volta do beta 6.
O PF originalmente deveria ser um firewall em que se aplica a última regra correspondente, mas o macOS parece estar se comportando quase como se valesse a primeira regra correspondente. Uma regra
blockno começo sobrescreve regraspassde outros anchors mesmo semquick, o que obviamente causa problemas.Se a versão estável sair nesse estado, será inaceitável e, para mim, pessoalmente, será um motivo para abandonar o Mac OS. Se querem que ele seja usado para trabalho sério, não podem lançar um produto com uma regressão dessas.
O texto é bem conciso e útil, e gostei que inclui até passos simples para reproduzir o bug.
Gosto da Mullvad.
À parte, o macOS teve, de modo geral, muitos bugs estranhos de firewall nas últimas versões, e fico curioso para saber por que tiveram de refazer essa parte do firewall do zero.
Seja qual for a máquina local e o sistema operacional, é possível encaminhar a navegação por um servidor dedicado. Isso não encapsula toda a conexão de rede, apenas a navegação, mas, dentro desse escopo, permite trocar o endereço IP, ocultar a localização e acrescentar proteção contra zero-days de navegador.
No BrowserBox, seguimos adicionando recursos que respeitam e protegem a privacidade e melhoram a experiência como um todo. Como é open source, você também pode modificá-lo como quiser. Se não gostar da AGPL-3.0, também há licença comercial: https://github.com/dosyago/BrowserBoxPro
Se você não gosta de open source e prefere o conforto de uma grande empresa, parece que a Mullvad também tem o Mullvad Browser, que faz algo parecido.
Um texto antigo relacionado: https://9to5mac.com/2015/05/26/apple-drops-discoveryd-in-lat...
Esse código de reprodução é realmente muito bom de ver.
Claro, esse é o escopo do bug, mas não me parece que esse teste seja particularmente sofisticado ou bonito.
Não sei se está relacionado, mas, logo após as duas atualizações do macOS mais recentes, a rede não funcionava.
Eu conseguia conectar ao Wi‑Fi, Ethernet e hotspot, mas nenhuma conexão real, como navegador ou ping, funcionava, e nem o roteador era alcançável.
Nas duas vezes, bastou abrir uma vez o app Mullvad VPN para tudo voltar a funcionar. Não sei por que só abrir o app corrigia o problema.
Não é totalmente relacionado, mas há também outro bug antigo: o bug de 11 anos do
Popen()no macOS: https://news.ycombinator.com/item?id=37238433Para constar, eu tive problemas de conexão com o Mullvad.app, mas, ao executar a configuração Mullvad WireGuard no Wireguard.app, funcionou bem.
Instalei recentemente o Sonoma beta mais novo e agora entendo por que não consegui fazer o Mullvad funcionar de jeito nenhum.
Que bom que a Mullvad está trabalhando em uma solução de contorno. Hoje de manhã eu até pensei em fazer downgrade para o Ventura, mas agora sinto que meu problema era esse mesmo.
Fico feliz que a Mullvad esteja aumentando a pressão pública sobre esse problema. Esse bug certamente chamou atenção e foi bastante preocupante.
No original está escrito “we have investigated this issue after the 6th beta was released and reported the bug to Apple”.
No meu caso, a solução foi baixar a configuração do WireGuard e usar o app Wireguard.
PostUpePostDownna configuração do WireGuard. Nesse caso, fica difícil chamar isso de solução.Pergunta: se
pflog1não for criado, o pf funciona como esperado?Se o
tcpdumpnão registra nada saindo porpflog1, isso parece significar que os dados não estão sendo enviados parapflog1. Então o problema estaria em uma etapa anterior.O
pflog1estava conectado e ativo? Antigamente era preciso conectar e ativar a interface manualmente. O MacOS faz isso automaticamente?Claro que isolar isso não é trabalho de quem reportou o bug. Mas, em algum momento, o engenheiro responsável vai fazer esse tipo de pergunta, então é melhor já ter as respostas.
ifconfig pflog1 destroy