天天看點

Android 安卓的CVE(公共漏洞和暴露)

在剛剛過去的一月份,與往年相同,媒體們又在忙着報導過去一年的漏洞統計。同樣,CVE Details的小夥伴們也精心準備了基于CVE(Common Vulnerabilities & Exposures,公共漏洞和暴露)統計的大把誇張資料。媒體朋友們也照例頻頻賞光咬餌,釋出的都是諸如“安卓當選2016漏洞之王”一類吸引眼球的頭條。

盡管每年都會看到類似的文章标題,但是我們也會在思考着一個問題,就是安卓和蘋果之間,到底誰更安全,其實這些統計數字幾乎毫無意義,也沒能就不同産品間的安全性做出任何比較。

資料來源有限的CVE統計

  我們可以這樣認為:漏洞統計為産品安全提供了最直覺的訓示。但同時我們也應該意識到:從來就沒有,将來也不會存在一個真正意義上既綜合又完整的安全漏洞索引。CVE或其他漏洞資料庫隻能記錄他們所知的漏洞,通常這些資料來自于廠商報告或由安全研究者送出。

  遺憾的是,許多安全研究者往往并不會把他們發現的漏洞一個不剩地送出;廠商對于将漏洞公之于衆這種事也是習慣能躲就躲。(這種做法在學界有個稱呼:Publicatioin Bias——發表偏倚)。而那些未被發現的漏洞,和已确認但易受黑客惡意攻擊的漏洞,在公布之前都不會被列入任何漏洞統計。這導緻了某些廠商和軟體的漏洞統計數量虛高,這些廠商通常更願意披露軟體的漏洞細節——比如說谷歌和Android。

當CVE涉及産品面過寬時

  同時,當一個漏洞影響産品數量衆多時,CVE——尤其是CVE Details——對于漏洞的統計實際上不夠科學。之是以這麼說,與一條CVE究竟如何命名,以及MITRE和CVE Details所掌握的有限資源是相關的。比如,不同産品可能會共享元件或代碼庫,但是CVE Details卻并不總是能把一個漏洞關聯到使用了問題代碼的全部産品上。

  就拿WebKit來說,我們經常會發現在審查Chrome時發現的漏洞(當Chrome還在使用Webkit時)也會影響到Safari浏覽器,CVE Details很少會把這樣的漏洞條目也關聯到Safari上。比如說CVE-2013-0912(點選檢視)——蘋果提供的報告已經關聯到該CVE條目,但CVE Details卻并沒有把這個CVE綁定到任何版本的Safari上。這樣一來,2013年Chrome漏洞統計數上去了一個, Safari漏洞統計數卻差了一個。

  再舉個例子:有些東西,像OpenSSL和Linux核心使用得非常廣泛,一旦這兩者存在漏洞,則波及的産品也将非常廣泛——但實際情況是要将所有受影響的産品列舉出來是不現實的。那麼現實又是如何呢?目前的做法一般是把上報的漏洞跟最先發現存在此漏洞的産品關聯起來。

忙不過來的MITRE

  CVE的另一個問題在近幾年尤為突出:MITRE有些處理不過來海量的漏洞送出——詳情可回顧CVE命名申請遭大量延誤(點選檢視)和CVE-assign郵件位址的最終停用(點選檢視)。而且要讓CVE條目最終公布,必須滿足某些條件,比如你得送出相關報告的URL或者釋出關于此漏洞的部落格文章。

  針對不同漏洞報告,MITRE花費的反應時間也各不相同。有些幾小時内就會處理好,有些則要花上幾周甚至幾個月——前提是MITRE理你的話。而且他們針對不同漏洞投入的時間,似乎與漏洞嚴重程度或軟體流行程度也沒什麼關系。筆者曾在2015年末送出過一票CVE漏洞,但由于積卷如山,這些漏洞沒有得到任何回報。而且筆者送出的CVE條目,有上百個從未被MITRE公布——廠商還沒有公開承認這些漏洞,筆者表示也沒有時間把每一條漏洞都在部落格裡詳細闡明。

  這些因素加在一起構成了對處理安全問題認真負責的廠商的抽樣偏差,也導緻那些開源和有漏洞獎勵計劃的産品,在CVE-Details中的漏洞數量無端膨脹。

中槍的Android

  開源就意味着運用資料分析和Fuzzing工具(如American Fuzzy Lop)審查安全漏洞變得格外簡單。(這就要談到選擇偏見了,安全工作者更傾向于研究開源軟體或具有金錢激勵的産品)這使得開源軟體天生就在安全問題上顯得更加透明,因為更改代碼通常是有據可查的,而且研究者也沒有那麼多的法律顧慮。

  Bug賞金也扮演着重要角色,不僅是因為這使得研究者有仔細檢查産品,挖掘更多漏洞的動機,也是因為通用平台上存在的漏洞往往會與第一個曝出此問題的産品關聯起來。

這些因素加起來,使得大衆可能對像Android這樣一個開源,擁有bug賞金項目的系統産生了極度不靠譜的印象。此外,由于Android開源的本質,有許多手機廠商生産了各種定制程式來支援某些特定硬體或提供某些全新功能。這些程式甚至都不一定包含在安卓官方的開源計劃中,但其中的漏洞卻仍然被算到CVE Details裡Android系統的統計資料中去。

  比如,三星Galaxy系列智能手機曾被曝出自家代碼的一系列漏洞,這些漏洞最終都被歸結為Android系統的問題。但事實上它們除了Galaxy手機之外沒有影響到任何安卓裝置。與此類似,有些Android系統中同樣可被利用的Linux核心漏洞(如CVE-2016-7917),也被CVE Details歸類到Linux核心問題而不是Android或其他任何Linux問題。

  

Android 安卓的CVE(公共漏洞和暴露)

思考

  假設有兩個相當複雜的軟體包,有沒有一種方法能夠科學地比較兩者哪個安全性更高?有沒有一種方法能令人信服地衡量系統的安全程度?

繼續閱讀