macOS 14 Sonoma 的缺陷导致我们的应用程式无法使用
2023年9月13日
macOS 14 Sonoma 的测试版和候选版本中存在一个漏洞,导致防火墙无法正确过滤流量。因此,我们的应用程式无法运行。
在 macOS 14 Sonoma 测试期间,Apple 引入了一个防火墙的错误,失去了封包过滤器 (PF)
的正常运作,这使得我们的应用程式无法运行,并可能导致在启用某些设定(例如本地网路共享)时出现资料泄露。我们无法保证在 macOS 14上的功能或安全性。在第六个测试版发布后,我们针对这个问题进行了调查,并向 Apple 报告了该漏洞。不幸的是,此漏洞在后续的 macOS 14测试版及候选版本中仍然存在。
我们评估了是否能针对我们的 VPN 应用程式进行修补,以使其在 macOS 14上正常运行且保障用户安全。不过,据我们所知并没有很好的解决方案。我们相信这些防火墙漏洞必须由 Apple 修复。
这个漏洞影响不仅仅是 Mullvad VPN应用程式。防火墙规则未能正确应用到网路流量中,不应该被允许的流量却得以通过。我们认为这是防火墙的一个关键缺陷,任何依赖 PF 过滤或在其 macOS设备上使用该过滤器的应用程式用户,都应该在升级到 macOS 14 前保持谨慎。
我们的建议
macOS 14 Sonoma 预定于9月26日发布,如果该错误仍然存在,我们建议用户暂时保持在 macOS 13 Ventura 版本,直到该问题被修复。
技术详情
可以在 macOS 14 上采取以下步骤来重现此问题。警告:这将清除您可能已在 PF 中加载的任何防火墙规则。
在终端中,创建一个虚拟日志接口并开始监视其上匹配您稍后添加的规则的流量:
bash sudo ifconfig pflog1 create sudo tcpdump -nnn -e -ttt -i pflog1
将以下防火墙规则写入名为 pfrules
的档案中:
bash pass quick log (all, to pflog1) inet from any to 127.0.0.1 block dropquick log (all, to pflog1)
在另一个终端中,启用 PF 并加载规则:
bash sudo pfctl -e sudo pfctl -f pfrules
Ping 伺服器:
bash ping 45.83.223.209
预期结果
- Ping 被阻止,因为它不符合唯一
pass
规则的要求 - 流量被记录到
pflog1
。更具体地说,我们预期它将被记录为符合block
规则
实际结果
- Ping 被允许通往互联网,并且收到回应
- 没有任何流量被记录到
pflog1
实验后的清理
禁用防火墙并清除所有规则。
bash sudo pfctl -d sudo pfctl -f /etc/pf.conf
请关注我们的部落格以获取此问题的未来更新。