新思科技憑借Coverity Scan幫助NGINX確保代碼質(zhì)量和安全
掃描二維碼
隨時(shí)隨地手機(jī)看文章
新思科技(Synopsys)在Forrester Wave發(fā)布的《2021年第一季度靜態(tài)應(yīng)用安全測試》報(bào)告中被評為領(lǐng)導(dǎo)者。在此次評估中,新思科技Coverity靜態(tài)分析解決方案在“現(xiàn)有產(chǎn)品”類別中獲得最高分,并且在“策略”類別中名列前三。多年來,全球許多企業(yè)和組織都采用Coverity,以降低安全風(fēng)險(xiǎn)、確保應(yīng)用程序靈活性,并迅速向市場提供新功能。NGINX是其中一家。
NGINX背景介紹
NGINX開源(發(fā)音為“engine x”)是全球最廣泛的Web服務(wù)器之一,為Netflix、Hulu、Pinterest和GitHub等站點(diǎn)提供支持,憑借其高性能、穩(wěn)定性、豐富的功能集、簡單的配置和資源消耗低等優(yōu)勢而廣受贊譽(yù)。 NGINX開源系列的其它成員包括NGINX JavaScript(njs),一個(gè)向NGINX添加JavaScript支持的模塊; NGINX Unit,動(dòng)態(tài)應(yīng)用服務(wù)器,支持用Perl、Python、Ruby、Node. Js、Go、Java和PHP.njs編寫的應(yīng)用。
所有三個(gè)NGINX開源項(xiàng)目的開發(fā)人員都使用新思科技Coverity Scan®查找并修復(fù)其代碼中的缺陷。新思科技(Synopsys)提供免費(fèi)在線服務(wù),并由與新思科技商業(yè)Coverity靜態(tài)分析工具使用的一樣的引擎提供支持,Scan可幫助開源開發(fā)人員識(shí)別代碼缺陷,以便快速、輕松地進(jìn)行補(bǔ)救。
NGINX軟件編寫者兼聯(lián)合創(chuàng)始人Igor Sysoev在2014年的一次采訪中說:“我堅(jiān)信開源的力量。NGINX是一個(gè)針對非常具體問題的實(shí)驗(yàn),即如何在單個(gè)現(xiàn)有服務(wù)器上處理更多客戶。原來這是一個(gè)普遍的問題。當(dāng)意識(shí)到NGINX確實(shí)有助于提高Web性能時(shí),我希望人們使用它,因此我將其設(shè)為開源?!?
NGINX開放源代碼版本還可以用作反向代理、負(fù)載平衡器、郵件代理和HTTP緩存的Web服務(wù)器,為超過4億個(gè)網(wǎng)站提供支持,其中包括Netflix、Hulu、Pinterest和GitHub等品牌。Igor Sysoev在2011年與合作伙伴共同創(chuàng)立了NGINX,以提供對NGINX 開源的正式支持,并提供商業(yè)版本NGINX Plus,該版本在NGINX 開源中增加了企業(yè)級功能。
2019年,NGINX被應(yīng)用安全和交付公司F5 Networks收購。如今,NGINX的開源項(xiàng)目家族包括njs(向NGINX添加JavaScript支持的模塊)和NGINX Unit(動(dòng)態(tài)應(yīng)用服務(wù)器)。
挑戰(zhàn):確保開源代碼的質(zhì)量及安全
NGINX聯(lián)合創(chuàng)始人兼工程副總裁Maxim Konovalov介紹道:“在創(chuàng)立NGINX不久之后,我們就將Coverity Scan集成到了CI / CD流程中。自2012年以來,我們每天都在提交NGINX構(gòu)建工件?!?
Maxim Konovalov繼續(xù)說:“在許多情況下,NGINX充當(dāng)互聯(lián)網(wǎng)前端,其安全性和穩(wěn)定性對其用戶至關(guān)重要。我的團(tuán)隊(duì)對提升代碼質(zhì)量孜孜不倦,并一直在尋找最佳實(shí)踐和工具以改進(jìn)代碼質(zhì)量。諸如Coverity Scan之類的靜態(tài)代碼分析工具為我們提供了很大的幫助?!?
NGINX將公司視為數(shù)百萬個(gè)應(yīng)用程序和網(wǎng)站的基礎(chǔ)技術(shù),并嚴(yán)格要求自己。代碼質(zhì)量和安全是NGINX企業(yè)精神的一部分。對于開發(fā)實(shí)踐來說,有效的工具必不可少。
解決方案:采用Coverity Scan進(jìn)行靜態(tài)代碼分析
人們通常認(rèn)為大多數(shù)軟件漏洞是因?yàn)閻阂夤?,但其?shí)不然,這主要是由于代碼錯(cuò)誤導(dǎo)致的。GitHub發(fā)布的2020年度安全報(bào)告“2020 State of the Octoverse”顯示,GitHub從2019年到2020年發(fā)送警報(bào)的漏洞中,有83%是由于編碼錯(cuò)誤引起的,而不是惡意攻擊。
但是惡意攻擊確實(shí)會(huì)利用代碼中的缺陷,開發(fā)人員需要使用主動(dòng)檢測工具來發(fā)現(xiàn)他們編寫的代碼中的錯(cuò)誤。靜態(tài)分析根據(jù)一組編碼規(guī)則檢查源代碼,以發(fā)現(xiàn)常見的編碼錯(cuò)誤。已在scan.coverity.com注冊項(xiàng)目的開源開發(fā)人員可以免費(fèi)使用這項(xiàng)服務(wù),與新思科技的商業(yè)Coverity靜態(tài)分析工具所使用的引擎是相同的,該功能可幫助開源開發(fā)人員識(shí)別代碼缺陷,以便快速、輕松地進(jìn)行補(bǔ)救。Linux Foundation在2020年的一份開源貢獻(xiàn)者的報(bào)告中指出,受訪者“絕大多數(shù)都引用Coverity Scan和Clang安全檢查器”作為主要靜態(tài)分析工具。
成效:掃描了658,000行代碼,缺陷密度為0.02%
2021年1月, Coverity Scan為NGINX分析了658,665行代碼,并發(fā)現(xiàn)了各種代碼缺陷,其中包括兩個(gè)CWE Top 25缺陷。由于F5 Networks定期使用Coverity Scan,NGINX項(xiàng)目的缺陷密度(每1,000行代碼的缺陷數(shù))僅為0.02%。
Maxim Konovalov贊賞道:“Coverity Scan為我們增加價(jià)值。我經(jīng)常推薦Coverity Scan及其在代碼提交中提供特定缺陷ID的功能。實(shí)際上,我是FreeBSD提交者小組的成員,我們也使用Coverity Scan進(jìn)行FreeBSD的代碼分析?!?