翻譯:開放文化基金會 Open Culture Foundation

上週,蘋果公司 macOS 作業系統的使用者注意到,當連上網路要開啟非蘋果的應用程式時,會有長時間的延遲甚至導致無法開啟。會造成這樣的狀況,是因為 macOS 的安全服務試圖連上蘋果 OCSPOnline Certificate Status Protocol ; 線上憑證狀態協定) 的伺服器時,因內部錯誤造成無法連線。在安全研究人員深入了解OCSP 送出的請求內容後,他們發現這些請求包含了一段雜湊值 (hash),來自正在運作之應用程式的開發者憑證,這個雜湊值是蘋果公司用來做安全檢查用的[1] 。開發者憑證包含對應用程式(例如 Adobe 或 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] Adobe 這種開發了許多應用程式的公司,攻擊者將能夠確定開啟運作中的應用程式,是否是 Adobe 已進行 macOS 簽名的應用程式之一。另外,以 Tor 來說,他們只開發了一個專門提供給終端使用者的應用程式 - Tor 瀏覽器,因此即使用戶採取措施掩蓋了應用程式中的流量,藉由觀察 Tor 的開發者憑證,攻擊者也能夠確定 Tor 瀏覽器正在開啟運作。