• 正文
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

新思科技憑借Coverity Scan幫助NGINX確保代碼質(zhì)量和安全

2021/07/12
362
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

新思科技(Synopsys)在Forrester Wave?發(fā)布的《2021年第一季度靜態(tài)應(yīng)用安全測(cè)試》報(bào)告中被評(píng)為領(lǐng)導(dǎo)者。在此次評(píng)估中,新思科技Coverity靜態(tài)分析解決方案在“現(xiàn)有產(chǎn)品”類(lèi)別中獲得最高分,并且在“策略”類(lèi)別中名列前三。多年來(lái),全球許多企業(yè)和組織都采用Coverity,以降低安全風(fēng)險(xiǎn)、確保應(yīng)用程序靈活性,并迅速向市場(chǎng)提供新功能。NGINX是其中一家。

NGINX背景介紹
NGINX開(kāi)源(發(fā)音為“engine x”)是全球最廣泛的Web服務(wù)器之一,為Netflix、Hulu、Pinterest和GitHub等站點(diǎn)提供支持,憑借其高性能、穩(wěn)定性、豐富的功能集、簡(jiǎn)單的配置和資源消耗低等優(yōu)勢(shì)而廣受贊譽(yù)。 NGINX開(kāi)源系列的其它成員包括NGINX JavaScript(njs),一個(gè)向NGINX添加JavaScript支持的模塊; NGINX Unit,動(dòng)態(tài)應(yīng)用服務(wù)器,支持用Perl、Python、Ruby、Node. Js、Go、Java和PHP.njs編寫(xiě)的應(yīng)用。

所有三個(gè)NGINX開(kāi)源項(xiàng)目的開(kāi)發(fā)人員都使用新思科技Coverity Scan?查找并修復(fù)其代碼中的缺陷。新思科技(Synopsys)提供免費(fèi)在線(xiàn)服務(wù),并由與新思科技商業(yè)Coverity靜態(tài)分析工具使用的一樣的引擎提供支持,Scan可幫助開(kāi)源開(kāi)發(fā)人員識(shí)別代碼缺陷,以便快速、輕松地進(jìn)行補(bǔ)救。

NGINX軟件編寫(xiě)者兼聯(lián)合創(chuàng)始人Igor Sysoev在2014年的一次采訪(fǎng)中說(shuō):“我堅(jiān)信開(kāi)源的力量。NGINX是一個(gè)針對(duì)非常具體問(wèn)題的實(shí)驗(yàn),即如何在單個(gè)現(xiàn)有服務(wù)器上處理更多客戶(hù)。原來(lái)這是一個(gè)普遍的問(wèn)題。當(dāng)意識(shí)到NGINX確實(shí)有助于提高Web性能時(shí),我希望人們使用它,因此我將其設(shè)為開(kāi)源?!?

NGINX開(kāi)放源代碼版本還可以用作反向代理、負(fù)載平衡器、郵件代理和HTTP緩存的Web服務(wù)器,為超過(guò)4億個(gè)網(wǎng)站提供支持,其中包括Netflix、Hulu、Pinterest和GitHub等品牌。Igor Sysoev在2011年與合作伙伴共同創(chuàng)立了NGINX,以提供對(duì)NGINX 開(kāi)源的正式支持,并提供商業(yè)版本NGINX Plus,該版本在NGINX 開(kāi)源中增加了企業(yè)級(jí)功能。

2019年,NGINX被應(yīng)用安全和交付公司F5 Networks收購(gòu)。如今,NGINX的開(kāi)源項(xiàng)目家族包括njs(向NGINX添加JavaScript支持的模塊)和NGINX Unit(動(dòng)態(tài)應(yīng)用服務(wù)器)。

挑戰(zhàn):確保開(kāi)源代碼的質(zhì)量及安全
NGINX聯(lián)合創(chuàng)始人兼工程副總裁Maxim Konovalov介紹道:“在創(chuàng)立NGINX不久之后,我們就將Coverity Scan集成到了CI / CD流程中。自2012年以來(lái),我們每天都在提交NGINX構(gòu)建工件?!?/p>

Maxim Konovalov繼續(xù)說(shuō):“在許多情況下,NGINX充當(dāng)互聯(lián)網(wǎng)前端,其安全性和穩(wěn)定性對(duì)其用戶(hù)至關(guān)重要。我的團(tuán)隊(duì)對(duì)提升代碼質(zhì)量孜孜不倦,并一直在尋找最佳實(shí)踐和工具以改進(jìn)代碼質(zhì)量。諸如Coverity Scan之類(lèi)的靜態(tài)代碼分析工具為我們提供了很大的幫助?!?/p>

NGINX將公司視為數(shù)百萬(wàn)個(gè)應(yīng)用程序和網(wǎng)站的基礎(chǔ)技術(shù),并嚴(yán)格要求自己。代碼質(zhì)量和安全是NGINX企業(yè)精神的一部分。對(duì)于開(kāi)發(fā)實(shí)踐來(lái)說(shuō),有效的工具必不可少。

解決方案:采用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ì)利用代碼中的缺陷,開(kāi)發(fā)人員需要使用主動(dòng)檢測(cè)工具來(lái)發(fā)現(xiàn)他們編寫(xiě)的代碼中的錯(cuò)誤。靜態(tài)分析根據(jù)一組編碼規(guī)則檢查源代碼,以發(fā)現(xiàn)常見(jiàn)的編碼錯(cuò)誤。已在scan.coverity.com注冊(cè)項(xiàng)目的開(kāi)源開(kāi)發(fā)人員可以免費(fèi)使用這項(xiàng)服務(wù),與新思科技的商業(yè)Coverity靜態(tài)分析工具所使用的引擎是相同的,該功能可幫助開(kāi)源開(kāi)發(fā)人員識(shí)別代碼缺陷,以便快速、輕松地進(jìn)行補(bǔ)救。Linux Foundation在2020年的一份開(kāi)源貢獻(xiàn)者的報(bào)告中指出,受訪(fǎng)者“絕大多數(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為我們?cè)黾觾r(jià)值。我經(jīng)常推薦Coverity Scan及其在代碼提交中提供特定缺陷ID的功能。實(shí)際上,我是FreeBSD提交者小組的成員,我們也使用Coverity Scan進(jìn)行FreeBSD的代碼分析。”
?

相關(guān)推薦