La nuova versione del sistema operativo Apple, macOS 14 Sonoma, è ormai sulla rampa di lancio. A meno di clamorosi sviluppi, infatti, dovrebbe debuttare in versione ufficiale il prossimo 26 settembre. Eppure, già prima della presentazione agli utenti finali, c’è già chi lamenta un comportamento anomalo. Un bug introdotto nel firewall di macOS sembra responsabile del mancato funzionamento di molte applicazioni che lavorano a basso livello, ad esempio client VPN e programmi per l’analisi dei pacchetti dati.
Mullvad, uno dei più famosi e apprezzati sviluppatori di soluzioni VPN, ha segnalato il problema agli sviluppatori Apple non ottenendo però alcun riscontro. Anzi, nelle ultime beta e poi nella Release Candidate, versione di anteprima che anticipa di poco il lancio della release definitiva, il bug risulta purtroppo sempre presente.
Come spiegano gli esperti di Mullvad, il bug riguarda il meccanismo di packet filtering utilizzato in macOS 14: l’applicazione VPN dello sviluppatore svedese, così come altri programmi, semplicemente non possono funzionare correttamente. Mullvad ha anche provato ad “aggirare l’ostacolo” tentando lo sviluppo di una patch per i nuovi sistemi macOS 14 ma, sfortunatamente, non è stato possibile mettere a punto una soluzione affidabile ed efficace. La soluzione del problema spetta insomma ad Apple.
I tecnici di Mullvad aggiungono che, a causa del bug scoperto in macOS 14, le regole firewall non vengono applicate correttamente al traffico di rete. Basti pensare che comunicazioni che non dovrebbero essere permesse, sono invece erroneamente autorizzate. “Riteniamo che questo sia un difetto critico nel firewall. Chiunque faccia affidamento sul packet filtering o sulle app che lo utilizzano in background sui propri dispositivi macOS, dovrebbe essere cauto nell’aggiornamento a macOS 14“, commenta Mullvad. Il consiglio della società è di restare con macOS 13 Ventura fintanto che il bug in questione non sarà oggetto di risoluzione.
Come riprodurre il problema con il firewall di macOS 14 Sonoma
Mullvad esorta tutti gli interessati che vogliano ispezionare a fondo il comportamento del firewall di macOS 14 ad eseguire una serie di passaggi. Le operazioni descritte di seguito fanno emergere il problema che impatta negativamente sul funzionamento della VPN di Mullvad e su un’ampia schiera di applicazioni di terze parti.
In una finestra del terminale, si può cominciare col creare un’interfaccia di rete virtuale, utilizzata per monitorare il traffico e l’efficacia delle regole firewall impostate in seguito. È bene tenere presente che gli interventi applicati portano alla rimozione di tutte le policy eventualmente applicate in precedenza:
sudo ifconfig pflog1 create
sudo tcpdump -nnn -e -ttt -i pflog1
Con i comandi seguenti si creano una serie di regole firewall, annotate nel file pfrules
.
pass quick log (all, to pflog1) inet from any to 127.0.0.1
block drop quick log (all, to pflog1)
La prima regola (“pass”) consente al traffico generato localmente (da programmi o servizi in esecuzione sul sistema Mac stesso) di comunicare con i servizi in ascolto su localhost senza alcuna restrizione del firewall. La seconda regola (“block”), invece, respinge (scarta) tutto il traffico di rete che non ha corrispondenza con le regole precedenti. Se il traffico non è consentito con altre regole, esso viene bloccato e il tentativo di connessione annotato nei log del firewall (pflog1
). Il blocco interessa insomma tutto il traffico in ingresso e in uscita dal dispositivo.
Attivazione delle regole firewall e verifica del problema con macOS 14
A questo punto, è possibile attivare la funzione di packet filtering e attivare le regole create in precedenza:
sudo pfctl -e
sudo pfctl -f pfrules
Effettuando un ping verso il server di Mullvad, il traffico dovrebbe essere automaticamente bloccato perché viola la regola impostata. Inoltre, il tentativo di connessione dovrebbe essere registrato nel file di log pflog1
, come correttamente richiesto:
ping 45.83.223.209
Ebbene, non succede nulla di tutto ciò: macOS 14 permette il ping verso server remoti accessibili via Internet e raccoglie l’eventuale risposta ricevuta in seguito all’invio dei pacchetti ICMP. Inoltre, il file di registro pflog1
resta vuoto: l’operazione non è “loggata” in alcun modo.
Dopo aver concluso l’esperimento, è possibile disattivare il firewall e cancellare tutte le regole:
sudo pfctl -d
sudo pfctl -f /etc/pf.conf
A questo punto è auspicabile un intervento “in zona Cesarini” da parte di Apple con l’obiettivo di ripristinare il corretto comportamento del firewall in macOS 14 Sonoma.
Aggiornamento: Mullvad ha confermato che Apple ha risolto il problema in macOS 14 Sonoma.