- In der Beta und im Release Candidate von macOS 14 Sonoma filtert die PF-Firewall Traffic nicht korrekt, wodurch die Mullvad-VPN-App nicht ordnungsgemäß funktioniert
- Wenn bestimmte Einstellungen wie Freigabe im lokalen Netzwerk aktiviert sind, kann dies zu Traffic-Leaks führen; Mullvad geht daher davon aus, dass sich Funktionalität und Sicherheit unter macOS 14 schwer garantieren lassen
- Mullvad untersuchte das Problem nach der sechsten Beta und meldete es an Apple, doch der Bug ist auch in späteren Betas und im Release Candidate weiterhin vorhanden
- Es wurde geprüft, ob sich das Problem durch einen Patch in der App selbst umgehen lässt, aber es wurde keine sichere Lösung gefunden; grundsätzlich ist eine Korrektur der Firewall durch Apple nötig
- Nutzerinnen und Nutzer sowie Apps, die auf PF-Filtering angewiesen sind, sollten beim Upgrade auf macOS 14 vorsichtig sein; solange der Bug besteht, ist es sicherer, bei macOS 13 Ventura zu bleiben
PF-Firewall-Problem in macOS 14 Sonoma
- Während der Beta-Phase von macOS 14 Sonoma hat Apple einen Bug in die macOS-Firewall packet filter(PF) eingeführt
- Durch diesen Bug funktioniert die Mullvad-VPN-App nicht; wenn bestimmte Einstellungen aktiviert sind, kann es zu Traffic-Leaks kommen
- Als Beispieleinstellung wird die Freigabe im lokalen Netzwerk genannt
- Mullvad untersuchte das Problem nach Erscheinen der sechsten macOS-14-Beta und meldete den Bug an Apple
- Auch in späteren macOS-14-Betas und im Release Candidate besteht dasselbe Problem weiterhin
- Mullvad hat geprüft, ob sich durch einen Patch allein an der VPN-App unter macOS 14 sowohl Funktionalität als auch Sicherheit erhalten lassen, kommt derzeit jedoch zu dem Schluss, dass es keine gute Lösung gibt
- Der Umfang der Auswirkungen beschränkt sich nicht nur auf die Mullvad-VPN-App
- Firewall-Regeln werden nicht korrekt auf Netzwerk-Traffic angewendet
- Traffic, der nicht zugelassen werden sollte, kann passieren
- Nutzerinnen und Nutzer sowie Apps, die im Hintergrund PF-Filtering verwenden oder darauf angewiesen sind, sollten beim Upgrade auf macOS 14 vorsichtig sein
- macOS 14 Sonoma soll am 26. September erscheinen; falls der Bug weiterhin besteht, wird Mullvad-Nutzern empfohlen, bis zur Behebung bei macOS 13 Ventura zu bleiben
Schritte zur Reproduktion und tatsächliches Ergebnis
- Das Problem lässt sich unter macOS 14 reproduzieren; dieses Experiment löscht die in PF geladenen Firewall-Regeln
- Im Terminal wird ein virtuelles Logging-Interface erstellt und anschließend der Traffic überwacht, der zu den später hinzugefügten Regeln passt
sudo ifconfig pflog1 create
sudo tcpdump -nnn -e -ttt -i pflog1
- In der Datei
pfrules werden die folgenden Firewall-Regeln geschrieben
pass quick log (all, to pflog1) inet from any to 127.0.0.1
block drop quick log (all, to pflog1)
- In einem anderen Terminal wird PF aktiviert und die Regeln werden geladen
sudo pfctl -e
sudo pfctl -f pfrules
- Ein Ping wird an den Webserver von mullvad.net gesendet
ping 45.83.223.209
- Erwartet wird, dass der Ping blockiert wird, da er nicht zur Bedingung der einzigen
pass-Regel passt, und dass der Traffic in pflog1 als Treffer der block-Regel protokolliert wird
- Tatsächlich geht der Ping ins Internet hinaus, die Antwort kommt zurück, und in
pflog1 wird kein Traffic protokolliert
- Nach dem Experiment wird die Firewall deaktiviert und alle Regeln werden gelöscht
sudo pfctl -d
sudo pfctl -f /etc/pf.conf
1 Kommentare
Hacker-News-Kommentare
Derselbe PF-Bug macht auch eine Netzwerkfunktion von OrbStack kaputt.
Als ich die Ursache bis hierhin eingegrenzt hatte, war es schwer zu glauben, aber offenbar bin ich nicht der Einzige. Ich hoffe sehr, dass das vor der Veröffentlichung der stabilen Version behoben wird.
Ich konnte es erst gestern an Apple melden; es wirkt wie eine recht neue Regression, vermutlich etwa seit Beta 6.
PF sollte eigentlich eine Firewall sein, bei der die zuletzt passende Regel angewendet wird, aber macOS scheint sich fast so zu verhalten, als würde die erste passende Regel gelten. Eine frühere
block-Regel überschreibt auch ohnequickeinepass-Regel aus einem anderen Anchor, was natürlich Probleme verursacht.Wenn die stabile Version in diesem Zustand erscheint, ist das inakzeptabel und für mich persönlich ein Grund, Mac OS aufzugeben. Wenn das für ernsthafte Arbeit genutzt werden soll, darf man kein Produkt mit solchen Regressionen ausliefern.
Der Beitrag ist sehr knapp und informativ, und gut ist auch, dass die Schritte zur Reproduktion des Bugs einfach enthalten sind.
Mullvad gefällt mir.
Nebenbei: macOS hatte in den letzten Releases insgesamt viele seltsame Firewall-Bugs, und ich frage mich, warum man die Firewall-Seite umkrempeln und neu bauen musste.
Unabhängig davon, welche lokale Maschine und welches Betriebssystem man nutzt, kann man das Browsing über einen dedizierten Server laufen lassen. Das kapselt nicht die gesamte Netzwerkverbindung, sondern nur das Browsing, aber innerhalb dieses Bereichs ändert es die IP-Adresse, verbirgt den Standort und bietet zusätzlichen Schutz vor Browser-Zero-Days.
In BrowserBox fügen wir laufend Funktionen hinzu, die Privatsphäre respektieren und schützen und die gesamte Erfahrung verbessern. Es ist Open Source, man kann es also nach Wunsch anpassen. Wenn AGPL-3.0 nicht gefällt, ist auch eine kommerzielle Lizenz möglich: https://github.com/dosyago/BrowserBoxPro
Wenn man Open Source nicht mag und den Komfort eines großen Unternehmens bevorzugt, scheint auch Mullvad mit dem Mullvad Browser etwas Ähnliches zu haben.
Ein älterer Artikel dazu: https://9to5mac.com/2015/05/26/apple-drops-discoveryd-in-lat...
Dieser Reproduktionscode ist wirklich schön anzusehen.
Natürlich ist genau das der Umfang des Bugs, aber besonders ausgefeilt oder schön wirkt dieser Test auf mich nicht.
Ich weiß nicht, ob das damit zusammenhängt, aber direkt nach den letzten beiden macOS-Upgrades funktionierte das Netzwerk nicht.
Ich konnte mich mit WLAN, Ethernet und Hotspots verbinden, aber echte Verbindungen wie Browser oder ping funktionierten gar nicht, und auch der Router war nicht erreichbar.
In beiden Fällen reichte es, die Mullvad-VPN-App einmal zu öffnen, und danach funktionierte alles wieder. Warum allein das Öffnen der App das Problem behebt, weiß ich nicht.
Nicht vollständig verwandt, aber es gibt noch einen anderen alten Bug: ein 11 Jahre alter Bug in macOS
Popen(): https://news.ycombinator.com/item?id=37238433Zur Info: Mit Mullvad.app hatte ich Verbindungsprobleme, aber wenn ich die Mullvad-WireGuard-Konfiguration in Wireguard.app ausführe, funktioniert es gut.
Ich habe kürzlich die neueste Sonoma-Beta installiert, und jetzt verstehe ich, warum ich Mullvad partout nicht zum Laufen bekommen konnte.
Gut, dass Mullvad an einem Workaround arbeitet. Heute Morgen hatte ich schon überlegt, auf Ventura downzugraden; jetzt fühlt es sich so an, als hätte ich tatsächlich das richtige Problem gefunden.
Schön, dass Mullvad den öffentlichen Druck wegen dieses Problems erhöht. Dieser Bug war definitiv auffällig und ziemlich besorgniserregend.
Im Original heißt es: „we have investigated this issue after the 6th beta was released and reported the bug to Apple“.
In meinem Fall war die Lösung, die WireGuard-Konfiguration herunterzuladen und die Wireguard-App zu verwenden.
PostUp- undPostDown-Firewall-Regeln in die WireGuard-Konfiguration einträgt. Dann ist es kaum noch eine Lösung.Frage: Verhält sich pf wie erwartet, wenn
pflog1nicht erstellt wird?Wenn
tcpdumpnichts protokolliert, was überpflog1hinausgeht, scheint das zu bedeuten, dass keine Daten anpflog1gesendet werden. Dann läge das Problem also eine Stufe davor.War
pflog1verbunden und hochgefahren? Früher musste man das Interface manuell verbinden und hochfahren. Macht MacOS das automatisch?Natürlich ist es nicht die Aufgabe des Bug-Reporters, das zu isolieren. Aber irgendwann wird der zuständige Engineer solche Fragen stellen, daher ist es besser, die Antworten schon parat zu haben.
ifconfig pflog1 destroy