翻译:开放文化基金会 Open Culture Foundation

上周,苹果公司 macOS 操作系統的用户注意到,当连上互联网要开启非苹果的应用程序时,会有长时间的延迟,甚至导致无法开启。会造成这样的状况,是因为 macOS 的安保服务试图连上苹果 OCSPOnline Certificate Status Protocol ; 在线证书状态协议) 的服务器时,因内部错误造成无法连接。在安全研究人员深入了解 OCSP 送出的请求内容后,他们发现这些请求包含了一段散列值hash),来自正在运作之应用程序的开发者证书,这个散列值是苹果公司用来做安全检查用的[1] 。开发者证书包含对应用程序(例如 Adob​​e Tor)进行编码的个人,公司或组织描述,以至于哪些开发者制作的应用程序正在被开启使用,也同时泄露给苹果公司。

进一步来说,向 OCSP 送出的请求并不是加密的,这表示任何监听器也可能知道macOS 用户正在打开哪个应用程序以及何时打开[2],至于得以通过这种方式取得攻击能力的对象包括:任何上游服务器供应商、Akamai、托管苹果公司 OCSP 服务的ISP ; 而攻击者也可能是跟你使用同一互联网的黑客,这样说好了,例如你常去的那间咖啡厅,有攻击者跟你同时间连接到该咖啡厅 Wifi。如果想知道更多细节的说明,请看这篇文章

伴随这个隐私外泄事件而来的另一个考量是,我们无法从用戶空间应用程序(如LittleSnitch)检测或阻止此流量,就算关闭 macOS 上这个重要的安保服务会带来风险,我们也鼓励苹果公司允许拥有系统管理员(power users)权限的人,得以自行选择信任的应用程序来控制他们的网络流量从哪边寄出。

苹果公司很快发布了一个新的加密版协议来确认开发者证书,在这个加密版中,他们将允许用戶自行选择是否退出安全检查,不过这些修正在明年某个时间才会真正推出。然而,开发一个新的协议并在软件内安装执行完毕并不是一夜之间可以完成的事,因此要求苹果公司马上做改变修正也是不公平。

那为什么苹果公司不能简单的先将 OCSP 这个功能关掉呢?要回答这个问题,我们要先来探讨 OCSP 的开发者证书检查的实质作用是什么,它主要是要防止有害或恶意软件在 macOS 机器上运行,如果苹果侦测到有一位开发者夹带恶意软件(使用窃取来的签名金钥或恶意使用自身金钥),他们可以撤销那位开发者的证书,当 macOS 下次要开启这个应用程序时,苹果的 OCSP 服务器将会回覆该请求(透过trustd这个系统服务)表示: 这位开发者不再被信任。如此一来,该应用程序便不会被开启,也可以避免恶意软件被执行。

要修正这样的隐私外泄,同时要透过 OCSP 检查开发者证书来维护应用程序的安全性,并不像修复源代码中的普通漏洞那样简单,这是结构性的漏洞,因此需要进行结构上的修补。在这次的案例当中,苹果公司必须在用戶隐私和安全中找出平衡,如果要批评,可以说苹果并没有给用戶自行衡量状况的选择,而是直接帮用戶做决定。虽然这样的批评是实际的,但必然的反驳也同样实际,那就是:用戶不应该因为使用了厂商的设备,而被迫理解一个困难的议题及其潜在的、需做的取舍。

苹果公司做出了艰难的决定,他们决定保护用戶的安全,但是他们的用戶却是更注重隐私的那一类客户。那些了解风险且更在意隐私的 macOS 用戶们,可以先采取措施来阻挡 OCSP 请求,但我们建议采取这种措施的用戶设置提醒,请在苹果公司加上加密设定后,重新安装 OCSP

[1] 发现问题的初始报告中表示,苹果公司是直接从应用程序本身接收到散列值hashes),如果这是真的,那情况甚至更糟。

[2] 像 Adob​​e 这种开发了许多应用程序的公司,攻击者将能够确定开启运作中的应用程序,是否是 Adob​​e 已进行 macOS 签名的应用程序之一。另外,以 Tor 来说,他们只开发了一个专门提供给终端用戶的应用程序 - Tor 浏览器,因此即使用户采取措施掩盖了应用程序中的流量,藉由观察 Tor 的开发者证书,攻击者也能够确定 Tor 浏览器正在开启运作。