Scan 這個網站於日前公布了一份為期兩年 (2006-2007) 的研究報告,這份報告是由美國國土安全局 (U.S. Department of Homeland Security) 贊助 Coverity 這家公司所進行的。這項主要針對Open Source程式碼安全性檢測的研究報告,總共有超過250個Open Source的軟體(超過5千5百萬行的程式碼)參與,並於期間不斷的重複檢測,所以總共做了14,238次檢測(超過一百億行的程式碼),最後的檢測結果也顯示在這兩年的期間內共有8,500個錯誤已經被修正。
此份報告並不針對單一軟體的檢測結果做出報告,僅針對全面性的數據做出報告分析。因為每個軟體的程式碼行數有很大的差距,所以此研究報告的指標是採用每一千行程式的錯誤數 (static analysis defect density,以下簡稱錯誤率)作為主要憑據。此數據由兩年前的0.3降到0.25,減少了約16%。當然並不是每個軟體都有相同的改進,有些軟體甚至出現該數據上升的情形。
此研究不但希望知道Open Source軟體在安全性的表現,更希望知道這些軟體是否持續改進其安全性,也因此才會維持長時間的研究計畫,並重複對單一軟體進行檢測。為了因應評定軟體持續改進的結果,該研究把這些軟體分成不同的rungs,其中目前已經有十一個軟體達到rung 2的等級,而且這些軟體的檢測結果也被簡單的列在該網站的網頁上。這些軟體包含Amanda、NTP、OpenPAM、OpenVPN、Overdoes、Perl、PHP、Postfix、Python、Samba與TCL。
報告中並將所有檢測出的錯誤做出分類排行,發現錯誤類型的分佈極不平均。其中前兩名是Null Pointer Dereference與Resource Leak,而且比例就佔了所有檢測出的錯誤一半以上(53.68%)。
此外,此份報告的結果也顯示出Function的長度與軟體整體的錯誤率並沒有任何關聯,這與我們一般的認知並不相同。不過報告也特別提出,因為此份報告並沒有分析Function的長度與Function自身的錯誤率的關係,所以並無法完全肯定Function長度與錯誤率的真正關係。而且此研究使用之方法主要為靜態程式碼分析,還有其他錯誤需要用其他的方式才能檢測出來。另外就是較長的程式碼通常比較難加以維護,這部分也是此份報告沒有加以評估與分析的。
最後,對於大家常討論的Open Source與商業軟體程式碼安全性的比較,在這篇報告中也因為研究計劃定位與商業機密的問題,並不予以討論。
有興趣的人可以下載完整的報告進一步加以了解。
完整報告:
Coverity White Paper: Scan Open Source Report 2008
沒有留言:
張貼留言