Coverity :開放系統最安全

最近在某個飯局上,巧遇一位在某大研究機構工作的朋友。這位朋友向筆者表示,有企業客戶對採用開源技術有所保留,原因是害怕程式碼當中有未知的缺陷。的確這是不少人的擔心,但其實想深一層,便會發現這種擔心完全不合邏輯,這裡不得不引用 Coverity 的研究報告。20120316coverity

開源產品面世前,程式碼早已通過全球開發者的檢查,任何人都可看到產品未編譯前的模樣。相對只可看到編譯後模樣的付費閉源產品,哪一個會令人較為安心?當然接下來的問題便是用戶有沒有能力自行檢視程式碼了,可幸的是這方面早已經有人代勞。Coverity 早在 2011 年就發表了開源產品評價報告 (Coverity Scan Open Source Integrity Report),報告的目的便是分析和比較開源和閉源產品的品質。

有人問 Coverity 的結論有公信力嗎?這就要從它成立的因由說起。2006 年美國國土安全部 (DHS) 發現很多企業都開始採用開源技術,於是與民間組織一起成立了 Coverity,著手調查各流行開源項目的品質和安全性,杜絕被敵對國家攻擊的機會,並每年發表報告給業界參考。Coverity 項目負責人 Zack Samocha 表示,他們從金融、通訊、醫療機器、航空、國防和汽車等產業中,選出面世 5 至 10 年、而且已經被廣泛應用在磁振造影裝置、輸電施設、股票交易系統等的成熟閉源產品,並與同類開源程式作出比較。

比較內容包括 Null 指標異常、未初始化的變數、記憶體崩潰 (Memory Corruption)、錯誤處理和不合法的記憶體存取等等,並以程式碼的缺陷密度 (Defect Density) 來表示。假設在 1000 行程式碼中發現一個缺陷,缺陷密度便是 1,這也是業界整體的平均值。調查結果發現,開源項目的平均缺陷密度是 0.45,付費閉源產品的平均缺陷密度是 0.64,從而得出開源項目缺陷較少的結論。其中 Linux 2.6 核心為 0.62、PHP 5.3為 0.20、PostgreSQL 9.1 為 0.21,三者都比付費閉源產品的平均值小。大美國自 911 後對國土安全極為敏感,他們的對程式碼安全性的意見,絕對值得我們參考。

主筆
麥經倫
2012年3月

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *