八款免費(fèi)開發(fā)安全測試工具

前言:
????盡早修復(fù)漏洞確實(shí)更加容易,成本也更低,但在開發(fā)早期階段發(fā)現(xiàn)所有漏洞也不太可能。安全應(yīng)貫穿軟件開發(fā)生命周期的整個(gè)過程。
正文:
所謂“左移開發(fā)安全”就是在開發(fā)流程中的所有階段都考慮到安全性問題,研發(fā)人員承擔(dān)更多的軟件安全責(zé)任。很多研發(fā)會(huì)認(rèn)為考慮軟件的安全性會(huì)給他們徒增更多工作量,但實(shí)際上安全能力是研發(fā)工作中錦上添花的東西,比如可以幫他們節(jié)約大量修復(fù)bug的時(shí)間。
靠單個(gè)產(chǎn)品修復(fù)所有的應(yīng)用安全漏洞幾乎不可能。開發(fā)安全需要在開發(fā)各個(gè)階段實(shí)施不同的防御措施,層層遞進(jìn)地去實(shí)現(xiàn)。

開發(fā)安全類工具一般包括:
SAST - 靜態(tài)應(yīng)用安全測試
DAST - 動(dòng)態(tài)應(yīng)用安全測試
IAST - 交互式應(yīng)用安全測試
RASP - 運(yùn)行時(shí)應(yīng)用自我保護(hù)
依賴項(xiàng)安全掃描
Secrets Detection(機(jī)密信息檢測)
盡早修復(fù)漏洞確實(shí)更加容易,成本也更低,但在開發(fā)早期階段發(fā)現(xiàn)所有漏洞也不太可能。安全應(yīng)貫穿軟件開發(fā)生命周期的整個(gè)過程。

縱軸:修復(fù)成本;橫軸:軟件開發(fā)生命周期
SAST
靜態(tài)應(yīng)用安全測試,也稱為“白盒測試”,通過掃描源代碼發(fā)現(xiàn)代碼中的已知漏洞,是最常見也是最早出現(xiàn)的自動(dòng)化應(yīng)用安全測試。市場上的SAST工具非常多。確定使用某個(gè)工具前,需要評估工具的支持和維護(hù)情況以及是否適配自身的技術(shù)棧。這里推薦一些免費(fèi)的SAST工具。
1. NodeJsScan

NodeJs Scan有一個(gè)命令行接口,可輕松與DevSecOps CI/CD管道集成,并以JSON格式生成掃描結(jié)果。每種語言都有一個(gè)配置文件,可以根據(jù)自定義檢索進(jìn)行修改。文件總覽和整個(gè)代碼庫都可以通過統(tǒng)計(jì)數(shù)據(jù)和餅圖做到可視化。它還可以檢測緩沖區(qū)溢出漏洞和針對Java的十大OWASP漏洞。
2. SonarQube

SonarQube被譽(yù)為是“最好用的免費(fèi)自動(dòng)化代碼審計(jì)工具之一”,具備上千種自動(dòng)化靜態(tài)代碼分析規(guī)則,且支持27種開發(fā)語言,能夠很好地覆蓋整個(gè)開發(fā)項(xiàng)目的發(fā)展。
DAST
DAST,動(dòng)態(tài)應(yīng)用安全測試,也被稱為“黑盒測試”,不像SAST那樣從源代碼中發(fā)現(xiàn)漏洞,而是在應(yīng)用運(yùn)行時(shí),通過注入故障的方式進(jìn)行安全測試。DAST可以發(fā)現(xiàn)SQL注入、跨站腳本等常見的安全漏洞,識(shí)別應(yīng)用程序運(yùn)行時(shí)的安全風(fēng)險(xiǎn),如身份驗(yàn)證和服務(wù)器配置問題,以及只有在已知用戶登錄時(shí)才有可能發(fā)現(xiàn)的安全問題。
3. OWASP ZAP

OWASP ZAP是一個(gè)功能非常全面的開源DAST工具,不但能夠自動(dòng)進(jìn)行漏掃,還能協(xié)助測試人員完成web應(yīng)用的滲透測試。ZAP的漏洞庫也非常豐富。
IAST
IAST,交互式應(yīng)用安全測試,有時(shí)也稱為“灰盒測試”,是一種綜合了SAST和DAST的檢測技術(shù),一般會(huì)在測試環(huán)境中以agent的形式(例如針對Java虛擬機(jī)或.NET CLR的插樁技術(shù))監(jiān)測運(yùn)營與攻擊情況,從而發(fā)現(xiàn)風(fēng)險(xiǎn)點(diǎn)。
4. Contrast Security - Community

Contrast也是一個(gè)聲稱“開發(fā)者至上”的產(chǎn)品,能更深入地發(fā)現(xiàn)漏洞。應(yīng)用程序運(yùn)行時(shí)的上下文信息對于其它的SAST和DAST工具完全是盲區(qū),如控制器、業(yè)務(wù)邏輯、數(shù)據(jù)層、視圖,用戶庫,開源組件和應(yīng)用程序服務(wù)器。
RASP
RASP,運(yùn)行時(shí)應(yīng)用程序自我保護(hù),一般部署在某個(gè)服務(wù)器上,當(dāng)應(yīng)用運(yùn)行時(shí)即開始工作,能夠?qū)崟r(shí)發(fā)現(xiàn)目標(biāo)應(yīng)用中的攻擊活動(dòng)。應(yīng)用程序一旦開始運(yùn)行,RASP就會(huì)分析應(yīng)用的行為和上下文信息,防止惡意輸入或惡意行為的發(fā)生。通過對應(yīng)用行為的持續(xù)監(jiān)控,不用人為干預(yù)就可以發(fā)現(xiàn)攻擊活動(dòng)并且做到及時(shí)修復(fù)。
5. Sqreen
Sqreen的RASP可通過請求的完整執(zhí)行上下文信息來發(fā)現(xiàn)應(yīng)用上線后的漏洞利用和攻擊活動(dòng),覆蓋OWASP十大安全漏洞,如SQL注入、XSS和SSRF等。它的強(qiáng)大之處在于能夠根據(jù)請求的執(zhí)行邏輯進(jìn)行攻擊攔截,比其它解決方案的誤報(bào)率低得多。Sqreen還能自動(dòng)適配不同的應(yīng)用程序技術(shù)棧,無需重新部署或配置。
依賴項(xiàng)安全掃描
依賴項(xiàng)安全掃描(Dependency Scanning)能夠在應(yīng)用程序開發(fā)和測試時(shí)檢測依賴項(xiàng)的安全漏洞,例如正在使用的外部(開源)依賴庫是否存在風(fēng)險(xiǎn)。
6. Snyk
據(jù)說Snyk也是一個(gè)開發(fā)者之上的企業(yè),為開發(fā)人員提供一些開源的解決方案。Snyk自帶很多比較好的功能,比如能在IDE中檢測漏洞,掃描本地git測試存儲(chǔ)庫中的項(xiàng)目等等。Snyk有一個(gè)能夠防止新漏洞通過構(gòu)建過程進(jìn)入開發(fā)環(huán)境的安全網(wǎng)關(guān),還有一個(gè)用于測試運(yùn)行環(huán)境中是否存在暴露風(fēng)險(xiǎn)點(diǎn)的生產(chǎn)環(huán)境。
7. WhiteSource Bolt for GitHub
Whitesource和Snyk一樣有一些面向開發(fā)人員的免費(fèi)工具。WhiteSource Bolt for GitHub是一款免費(fèi)的應(yīng)用,能夠持續(xù)掃描自有和公開的存儲(chǔ)庫,檢測開源組件中的漏洞并提供修復(fù)建議,支持200多種編程語言,能夠像美國國家安全漏洞庫NVD一樣持續(xù)跟蹤多個(gè)開源漏洞庫。
Secrets Detection(機(jī)密信息檢測)
API密鑰、數(shù)據(jù)庫憑證和安全證書等是一個(gè)組織的機(jī)密信息(secrets),拿到這些東西就能訪問很多敏感系統(tǒng)。因此需要secrets detection這樣的技術(shù)加以保護(hù)。secrets detection可掃描源代碼、日志等文件,發(fā)現(xiàn)其中隱藏的機(jī)密。這是一項(xiàng)技術(shù)要求較高的專業(yè)服務(wù),因?yàn)榇蠖鄶?shù)機(jī)密都是以隨機(jī)字符串的形式存儲(chǔ),而且很多隨機(jī)字符串都不是機(jī)密信息,因此需要通過分類算法,才能以較高的準(zhǔn)確度檢測到機(jī)密信息。
很多人可能會(huì)把secrets detection和SAST搞混,因?yàn)閮烧叨际菕呙柙创a的技術(shù)。但SAST只掃描目標(biāo)應(yīng)用的當(dāng)前版本,而secrets detection檢測的是該項(xiàng)目的所有開發(fā)版本。像git這樣的版本控制系統(tǒng)會(huì)對項(xiàng)目的所有變更信息進(jìn)行跟蹤和存儲(chǔ)。如果源碼的上一個(gè)版本含有硬編碼的機(jī)密信息,卻在后面的階段被刪除了,代碼審計(jì)和SAST工具就無法發(fā)現(xiàn)這個(gè)問題,遺留在git存儲(chǔ)庫中容易遭到惡意利用。所以secrets detection成為了一個(gè)獨(dú)立的分類。
8. GitGuardian
GitGuardian可通過掃描開發(fā)人員存儲(chǔ)庫,持續(xù)發(fā)現(xiàn)機(jī)密信息,涵蓋300多種不同類型的機(jī)密類型,從密鑰到數(shù)據(jù)庫連接字符串、SSL證書、用戶名和密碼,通過復(fù)雜的模型匹配等多種算法技術(shù)進(jìn)行檢測。GitGuardian可以與GitHub帳戶實(shí)現(xiàn)集成,幾分鐘即可完成配置。開發(fā)人員可以通過GitGuardian API檢測目錄、郵件客戶端或Slack channel等服務(wù)中的機(jī)密信息。
總結(jié)
眼花繚亂的解決方案容易讓人選擇困難,一個(gè)重要標(biāo)準(zhǔn)就是思考這個(gè)工具是否能夠適配當(dāng)前的工作流程。
上述的開源工具都只能提供最基本的保護(hù),實(shí)際運(yùn)營過程中還是需要更多功能更加豐富的商業(yè)軟件和方案。確保應(yīng)用的安全是開發(fā)人員中最有價(jià)值的技能之一,雖然將安全性“左移”看起來是一項(xiàng)艱巨的任務(wù),但在整個(gè)開發(fā)生命周期中融合安全測試系統(tǒng)肯定是一項(xiàng)非常值得的投資。