一月底開始,一些朋友開始討論 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 等工具來移除或警示可疑憑證。

最近 802.11 無線網路協定中所使用的加密演算協定 WPA 傳出了一些消息,一說可以利用常見的圖形處理硬體加速破解運算速度,另外則是說德國的學術單位研究出 WPA/TKIP 中使用的弱加密方式,足以用以塞入短封包攻擊。

首先是 Slahsdot 上提到俄國的資訊安全公司 Elcomsoft 釋出了一款商業軟體 ElcomSoft Distributed Password Recovery,這款軟體的最大特色是可以利用 NVIDIA圖形處理器來加速猜密碼的時間,根據 Elcomsoft 的網頁說明,運算速度可加快二十倍到百倍。若是搭配大量的硬碟、主機與顯示卡,的確是有機會快速破解 WPA (WPA2)/PSK 阿。

不過 Elcomsoft 號稱有專利申請中,不過社群中早已有人實做可以在 Linux, MacOS 上執行的版本,叫做 pyrit (對,他是 Python 寫的)。最新的開發進度與消息可以在 pyrit blog 上找到。

Slashdot 上另外一則消息,則是說德國的 Erik Tews 與 Martin Beck 成功的「破解」WPA/TKIP 加密方式,即將在 PacSec 會議上發表。不過事實是,他們利用了 TKIP 的弱驗證碼演算法與 802.11e 的漏洞,於是可以將小封包如 ARP 封包重新送入網路中。這個技術並沒有取得無線網路使用的密碼,而入侵者也無法盜用該無線網路。

詳細的說明可以參考原始的論文 – Practical Attacks against WEP and WPA,應用程式 tkiptun-ng 也可於 aircrack-ng 網站上下載。ArsTechnicaGlenn Fleishman 寫了十分詳盡的技術說明 – Battered, but not broken: understanding the WPA crack

這陣子,不少人都瘋著看奧運轉播,特別是棒球賽。(現在不需要再看了..*默*)

不過中華電信 hiChannel 所提供的奧運線上轉播使用了 Microsoft Windows Media DRM 機制,限制微軟平台的用戶可以使用。於是,你必須在 Windows 平台上使用瀏覽器,才能取得授權後觀看。

你可能想使用 Wine 裝 Windows Media Player 與 IE 來接取 hiChannel 的節目,不過 Microsoft DRM 需要驗證簽署過的 Windows 核心與驅動程式 (Bug 14761),即使透過 Wine 跑 Windows Media Player 也是沒轍的。

就算你很高明的攔截到 mms 網址,mplayer 也會因為讀到加密的 asf 格式,而抱怨 “This file has been encumbered with DRM encryption, it will not play in MPlayer!“。除非你先參考 [MS-DRM]: Digital Rights Management License Acquisition Data Structure 實做了 Linux 客戶端,或者認真讀了 Beale Screamer 的 Microsoft’s Digital Rights Management Scheme – Technical Details,把 content key 偷解出來,如此就可以透過 mplayer/libavformat 直接觀看 hiChannel 的 asf 串流。

因此,雖然中華電信 hiChannel 免費提供轉播服務,Linux 平台的使用者依然無福享受。

所幸,中華電信的另外一個數位家庭服務,也提供了線上轉播的服務給註冊會員使用,目前開放註冊後免費試用一個月的優惠,而且解析度 (640×480) 比 hiChannel 還高。但麻煩的是,你得使用 Windows Media Player 11 才能登入、註冊,而且註冊程序不甚方便

好東西是,數位家庭服務最後提供的串流是沒有加密的,於是你可以直接用 mplayer 或任何可以解 WMV3 格式的播放軟體開。於是,我註冊了個帳號,並隨手用 Python/GTK+/Gstreamer 為自己寫了個播放小程式,讓我可以在 Debian GNU/Linux 上觀看轉播

目前這個瀏覽軟體只擺了五個奧運轉播頻道,預期一個月內失效。執行需要 python2.5, python-gtk2, python-gst0.10. 欲觀看視訊服務,請洽 數位家庭服務

FourDollars – 轉播程式寫好了,戰況討論聊天室就交給你了。;-)

因為一個兩年前就犯下的愚蠢行為所造成的安全問題 DSA-1571-1 / CVE-2008-0166 ,你必須儘快更新所有曾經在 Debian 上透過 libssl0.9.8 (0.9.8c-1 或之後版本) 所產生的金鑰。

這個問題是當初為了修正透過 valgrind 檢查記憶體時所產生的錯誤訊息,因此拿掉了程式碼中的一行,該行恰巧是用以設定產生亂數 (RNG) 的種子,如此一來造成所有透過 libssl 產生亂數的密碼都是可以被預測的。結果就是加密金鑰很容易被猜到。修正方式就是再加回該行。不過此次更新也一併修正了 CVE-2007-3108CVE-2007-4995,因此應該直接升級到新版 openssl 較為保險。

影響的系統包含所有 Debian 為基礎的系統,如 Ubuntu (USN-612-1) 等。影響的軟體範圍包含所有的使用 libssl0.9.8 產生的金鑰。若你使用 etch 請確認 openssl 版本高於 0.9.8c-4etch3, sid 與 lenny 則是 0.9.8g-9

在更新完 openssl 後,你應該重新產生或轉換舊的弱金鑰 (weak keys)。首當其衝的是 ssh ,因為是最容易被攻擊而取得系統權限的軟體。Debian 與 Ubuntu 各提供工具以供用戶自行檢查。

Ubuntu 提供的一個小工具 ssh-vulnkey 可以幫你檢查單機上的 ssh user key 與 host key 是否是有風險。此工具可於新版的 openssh-client 取得,ssh-vulnkey 目前只在 Ubuntu 的套件庫中。

ssh-vulnkey 是一個 以 C 開發的 native program,速度比 dowkd.pl 快上一些。你可以於 Debian 或 Ubuntu 新版的 openssh-client 取得。(Debian 上的 openssh 版本於 1:4.3p2-9etch1 之後)

Debian 使用者可以使用 Florian Weimer 所開發的 dowkd.pl,載點位於

下載之後,請透過以下指令驗證檔案無誤

$ gpg --recv-keys 02D524BE
gpg: requesting key 02D524BE from hkp server pgp.mit.edu
gpg: key 02D524BE: duplicated user ID detected - merged
gpg: key 02D524BE: public key "Florian Weimer (HIGH SECURITY KEY) " imported
gpg: public key 5E13C7DB is 715511958 seconds newer than the signature
gpg: 3 marginal(s) needed, 1 complete(s) needed, classic trust model
gpg: depth: 0  valid:   2  signed:  38  trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: depth: 1  valid:  38  signed:  28  trust: 6-, 12q, 0n, 6m, 14f, 0u
gpg: depth: 2  valid:  14  signed:  14  trust: 2-, 4q, 0n, 2m, 6f, 0u
gpg: depth: 3  valid:   2  signed:   0  trust: 0-, 0q, 0n, 0m, 2f, 0u
gpg: next trustdb check due at 2008-12-13gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
$ gpg --verify dowkd.pl.gz.asc
gpg: Signature made Tue May 13 22:09:19 2008 CST using RSA key ID 02D524BE
gpg: Good signature from "Florian Weimer (HIGH SECURITY KEY) "
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: C8D3 D9CF FA9E 7056 3F32  FA54 BF7B FF04 02D5 24BE

確認檔案正確後,將其解開

$ gunzip dowkd.pl.gz

指令的用法很簡單,它可以用來檢查金鑰檔、host keys、user keys.

$ perl dowkd.pl help
usage: dowkd.pl [OPTIONS...] COMMAND [ARGUMENTS...]

COMMAND is one of:

  file: examine files on the command line for weak keys
  host: examine the specified hosts for weak SSH keys
  user: examine user SSH keys for weakness; examine all users if no
        users are given
  help: show this help screen

OPTIONS is one pf:

  -c FILE: set the database cache file name (default: dowkd.db)

dowkd currently handles OpenSSH host and user keys and OpenVPN shared
secrets, as long as they use default key lengths and have been created
on a little-endian architecture (such as i386 or amd64).  Note that
the blacklist by dowkd may be incomplete; it is only intended as a
quick check.
$ perl dowkd.pl host kalug.linux.org.tw
# kalug.linux.org.tw SSH-2.0-OpenSSH_4.3p2 Debian-9
# kalug.linux.org.tw SSH-2.0-OpenSSH_4.3p2 Debian-9
kalug.linux.org.tw: weak key
kalug.linux.org.tw: weak key
$ perl dowkd.pl user
/home/chihchun/.ssh/id_rsa.pub:1: weak key

若你發現掃描結果中有 “weak key” 字樣,應該儘速重新產生該金鑰。

對於 Host Key 的作法是在該伺服器上執行以下指令,如此便會產生新的 host keys

# rm /etc/ssh/ssh_host_*
# dpkg-reconfigure openssh-server

若 authorized_keys 或 private keys 為弱金鑰,則請刪除他們,升級 openssh 至新版後,再重新以 ssh-keygen 產生金鑰。若你知道怎麼使用 authorized_keys,大約就知道如何重新產生 ssh keys,細節不詳述。

以上是 ssh keys 處理方式,至於其它影響的軟體,請持續參考 http://www.debian.org/security/key-rollover/ 中的說明進行設定。

昨日 (2/19) 的工商日報頭版 (發現過去一年整天做些低等技術的東西而停止注意產業資訊,因此又開始恢復每天讀兩份以上平面報紙並書寫的習慣) 是調查局發佈的「網頁掛馬」攻擊新聞稿。看似警告民眾網路有毒,千萬別亂逛亂抓陳冠希的性愛照,不過新聞稿下方還刻意的引用刑法第 235條散布猥褻物品罪,感覺嚇阻散佈色情照片的味道大於病毒警示阿。

據說鳥人大大的說好話,看好圖說法,萬一不小心見到的新版的性愛照,請先丟給阿碼科技的 Armorize Special Forces 團隊掃一掃喔。因為幾篇新聞中提到調查局這次的數據都是出自阿碼科技,調查局透過HackAlert™系統長期監控台海網站,這次類似的網站大約有180個,有許多網站到目前為止都還有裝有惡意程式。(阿碼科技尚很佛心的提供了 HackAlert 系統免費申請帳號試用) 新聞中並提供了幾個示範網址

Continue reading