先前注意到中國 CA 憑證簽發單位[1]可能會濫發簽章,而導致中間人攻擊等風險,而過去也的確發生過一些隨意簽發 Google 網域簽章的案例[2]。最近看到 Mozilla 討論 WoSign 的安全疑慮[3][4],如濫發 github.com 簽章等。決定把中國的 CA 全數移除。

RevokeChinaCerts[5] 可以

  • 移除 Network Security Service 中的設定。 (需要裝 libnss3-tools)
  • 移除全系統的 default internet SSL certificate trustchains. (ca-certificates)

修正了 Linux 版本的的問題[6]。

另外發現 Ubuntu 還沒有做 ArchLinux 上那種簡易黑名單簽章管理機制[7]。

[1] http://blog.nutsfactory.net/tag/cnnic/
[2] http://bit.ly/2bBnm9g
[3] Mozilla 在考慮移除 WoSign 的 CA Root http://bit.ly/2bwXAbU
[4] Incidents involving the CA WoSign – http://bit.ly/2bOoHx8
[5] https://github.com/chengr28/RevokeChinaCerts
[6] http://bit.ly/2bymDKF
[7] Managing SSL certificates – http://bit.ly/2bFAoUX

Firefox 4.0 出來之後,一直沒有抽時間出來更新 CertAlert,不過最近看到 AT&T 上的 Facebook 流量莫名被轉到中國南韓去,似乎有某種暗黑勢力蠢蠢欲動。

頗擔心 CNNIC 有惡意作為,稍微更新了 CertAlert,讓它支援 Gecko 2.0 XPCOM API,可以裝在 Firefox 4.0 上。新版安裝檔可以於 github 下載。

Mozilla 官方 AMO 因爲疏於更新,暫時被拿下來了,將重新上傳等官方審閱後即可再次下載。

2011-03-29 01:30

官方 AMO 已經重新開放安裝,仍於申請審閱程序中。

二月初發表了在 Linux 上移除 CNNIC 憑證一文後,受到相當多的文章引用與關注。

原文中,提到移除高風險憑證的作法,但其實我相信很多人弄不懂不同平台的作法,也不清楚所謂 NSS 的機制,沒有清除系統憑證,只是試圖移掉 Firefox 中的驗證。所以很多使用者不知道自己是否真的移除,或是以為移除,重新開啟 Firefox 後,因為 NSS 的設計,憑證又自動建入資料庫中。

依照目前的討論 (#542689, #476766),Mozilla 應該採無罪推論原則。也就是說雖然 CNNIC 的風評不佳,但在它實際作惡前,我們理因相信它無罪。雖然有一些技術上的提議,希望可以降低憑證管理的問題跟風險,但是這些功能恐怕需要點時間才會實踐。

所以,短時間內,使用者還是得自己做一些設定來自保。但是前文步驟又十分繁雜,我們需要給使用者一個比較簡單的操作措施。

在香港朋友 Benlau小兔黑黑倡議與支持下,我們寫了一個小 Firefox 附加元件,稱為 Cert Alert,這個元件的功能是「自動提醒」使用者,網頁中使用了特定 SSL Root CA 的內容。

這個附加元件採 MPL 1.1 授權釋出。你可以於 Firefox 附加元件網站下載安裝。開發者可於 Github 取得完整程式碼或提供建議。

另外一個值得推薦的是 timdream 所開發的 CA Untrustworthy。這個附加元件的功用是每次開啟 Firefox 時,自動移除或關閉高風險憑證。如此,若瀏覽使用高風險憑證網站時,Firefox 就會提醒你這是未受信任網站,你可以依照 Firefox 的憑證驗證機制來允許或關閉網頁。所以你就不用擔心,是否因為沒有完成移除系統憑證而造成安全問題啦。Tim 的 CA Untrustworthy 亦擺於 Github.

銘謝: Littlebtc 提醒 CertAlert 0.0.4 版前之 MITM 問題
備註: 中國朋友亦開發一 NoCNNIC 工具,可移除 Windows 平台的 NSS database 中 CNNIC 憑證。惟只支持 Windows 平台,且必須手動執行才可移除。僅供參考。

2011-03-27 updated

已更新支援 Firefefox 4.0

一月底開始,一些朋友開始討論 Firefox 3.6 中,將置入 CNNIC 的 CA 憑證。這件事情是去年年底,CNNIC 對 Firefox 申報納入 CNNIC 的憑證 (#476766),目前已於 3.6 版中內建 CNNIC 憑證。

目前此事已經在 Mozilla Security Policy mailing list 公開討論,在華人網路社群也引起一陣騷動。像是 AutoProxy 等社群都提出 CNNIC CA:最最最嚴重安全警告!。在原提案 #476766 中亦有人整理了一些客觀事實。

不過根據我主觀的看法,奉勸所有人盡快移除 CNNIC 相關的 CA 憑證!CNNIC 就是中國網際網路絡信息中心,是一個中國的非營利組織,提供中國網際網路的網域名稱、網段管理。

CA 憑證對於瀏覽器使用者而言,可以用來辨識特定網域是否為合法組織,部份瀏覽器功能甚至依據有否憑證,對網頁開啟進階存取權限。前提是 CA 維持善良管理人義務,嚴格管理所核發的憑證、簽章。

CNNIC 過去最大的爭議即是曾經發布過中文上網官方版軟體,名為提供中文網址導引服務,實質則包含流氓軟體的功能,主要功能是一般輔助上網軟體,但核心卻用 rootkit 技術讓你無法刪除,與木馬/病毒程式一般。雖說這只是一項前科,但是中國政府持續拿著民族主義、國家安全為藉口,實施數種網路管制,甚至滲透國外企業、政府網路,根本是合法的網路流氓。而 CNNIC 背後支持的政府組織是中華人民共和國工業和信息化部中國科學院中國科學院計算機網絡信息中心 等中國政府組織。很難說,哪一天 CNNIC 不會被控制作為攻擊工具之一。

除了 CNNIC 自行發布的 CA Cert Root 外,其實 CNNIC 也已經取得 Entrust.net 所發布的次級憑證。建議所有台灣政府單位,一律移除 CNNIC 相關憑證。

若你覺得此事關係重大,可以以投票方式附議 Bug 542689 – Please Remove “CNNIC ROOT” root certificate from NSS,提高該問題的被重視程度。

跳板風險

其實 Mozilla 先前也曾經遭遇過亂搞的安全憑證公司。原則上,任何人要申請特定網域的簽章,必須提供書面資料,證明你是該網域的擁有者。因為 SSL 憑證一個主要功能是防止釣魚網站欺騙一般消費者,若使用假冒的憑證,使用者很容易就發現網址異常。

若安全憑證公司絲毫不做基本的驗證,任何人都可以申請想仿冒的網域,然後以中間人攻擊 (MITM) 詐騙你交出個人資料。想像,你收到一封 PCHOME 的廣告,連到一個假的網站,這個網站提供了完美的 SSL 憑證,瀏覽器沒有提示你任何異常,除非你刻意去點選確認簽章,否則很自然就會上當。

Mozilla 的事件起因,是有人回報一安全憑證公司透過廣告郵件推銷新的服務。但這個憑證公司的服務卻允許你隨意購買任一網址的簽章,於是你可以購買並假冒任何網站。Eddy Nigg 寫了一份詳盡的說明,當時並做了一個驗證概念的 Mozilla.com 憑證。在事情曝光後,Mozilla 已撤除這組組憑證了。

移除 CA 憑證

驗證方法是開啟 CNNIC 的網址衛士 (使用 Entrust.net) 或 CNNIC 的 ENUM 試驗平台 (使用 CNNIC Root Cert)。若你的瀏覽器絲毫不給警告的就讓你存取,你的系統即已安裝 CNNIC 憑證。

2010-02-23 更新請使用  CertAlert 與 CA Untrustworthy 等工具來移除或警示可疑憑證。

在 GNU/Linux Debian, Ubuntu 上,系統保持一份共用的 CA 憑證,許多網頁工具如 Firefox, curl, wget, Chrome 均共用同一組設定。因此最簡便的方法便是關閉系統上有問題的憑證。

作法是以 root 在終端機內重新設定以下指令

# dpkg-reconfigure ca-certificates

找到 mozilla/Entrust.net_Secure_Server_CA.crt 一列,反選取之,選擇確認即可。或者直接編輯 /etc/ca-certificates.conf,一樣找到此行後,於該行開頭加入驚嘆號 (!),然後重新以 root 執行一次 update-ca-certificates.

另外,你也得到瀏覽器手動刪除原已匯入之憑證。注意,若該筆憑證下方有多筆簽章,你必須刪除全部簽章。見圖

按下 Delete, 重新啟動 Firefox,如此即可移除相關的 CA 憑證,其他瀏覽器需比照辦理。你若使用其他作業系統,請參考 Felix Yan 所整理之 從「受信任的根證書」裡趕走CNNIC

以下補充說明 (20100203):

許多網友認為,即使系統有此憑證,也不至於影響系統。

事實是,若有此憑證,你將被剝奪警覺的能力,像是痛得知覺消失一樣。當攻擊事件發生時,唯一可以主動提示你的 SSL 機制也可能失效。在中國網路長城的「內部網路」,網址被攔截、轉換是很平常的事件,即使你在網外,也可能在網站轉址攻擊事件大規模網頁綁架轉址發生時,變成受害者。

除了網址之外,這份憑證也可用於不同的連線服務加密認證。我並不想因為系統上存有一份無須有的 SSL 憑證,造成我日常認為經加密而安全的 SMTP/IMAP/IM 「可能」偷偷地遭到攔截、擷取資料。而我卻一無所知。

更新 (2010-02-23)

請使用  CertAlert 與 CA Untrustworthy 等工具來移除或警示可疑憑證。