一文掌握軟件安全必備技術(shù) SAST
當(dāng)開發(fā)軟件時(shí),我們必須同時(shí)考慮開發(fā)生命周期中的安全性和源代碼功能。人為錯(cuò)誤是難免的,因此任何企業(yè)都會(huì)盡可能使用 SAST 工具,以最大限度地減少進(jìn)入最終應(yīng)用程序的代碼錯(cuò)誤數(shù)量,并保護(hù)應(yīng)用程序免受未來(lái)的網(wǎng)絡(luò)攻擊。?
讓我們一起看看 SAST 技術(shù)究竟是什么,從長(zhǎng)遠(yuǎn)來(lái)看,它如何幫助您的應(yīng)用程序更安全,以及它如何影響企業(yè)網(wǎng)絡(luò)保護(hù)。
什么是 SAST?
靜態(tài)應(yīng)用程序安全測(cè)試(Static Application Security Testing),也稱為靜態(tài)分析,它通過(guò)直接查看應(yīng)用程序的源代碼發(fā)現(xiàn)各種安全漏洞,以避免企業(yè)損失。SAST 工具和掃描程序基本都是在應(yīng)用程序代碼完全編譯之前使用,因此也可以將它們稱為“白盒”工具。
一般而言, SAST 技術(shù)在軟件開發(fā)周期的早期就被使用,并且可以在不運(yùn)行代碼的情況下進(jìn)行測(cè)試,這讓開發(fā)團(tuán)隊(duì)得以在最終確定各種代碼特性和功能之前使用此類掃描工具。因此,被發(fā)現(xiàn)的任何安全問(wèn)題都可以得到及時(shí)解決。任何漏洞都會(huì)在開發(fā)的早期被發(fā)現(xiàn),所以應(yīng)用程序的“破綻”或安全問(wèn)題都難逃“法眼”。
實(shí)時(shí)反饋
一些 SAST 工具可以在開發(fā)人員編寫代碼時(shí)提供實(shí)時(shí)反饋,并且能夠在代碼傳遞到開發(fā)周期的下一階段之前修復(fù)各種問(wèn)題。在掃描階段,SAST 掃描程序可以準(zhǔn)確地指出應(yīng)用程序架構(gòu)代碼存在問(wèn)題的位置。這讓有經(jīng)驗(yàn)的程序員解決問(wèn)題時(shí)信手拈來(lái),避免了花費(fèi)數(shù)天或數(shù)周的時(shí)間研究代碼來(lái)識(shí)別漏洞的來(lái)源。
此外,大多數(shù) SAST 技術(shù)允許開發(fā)人員自定義報(bào)告,這些報(bào)告可以通過(guò)第三方 dashboard 或其他應(yīng)用程序?qū)С龊透?。因此與其他類型的應(yīng)用程序掃描技術(shù)相比,SAST 掃描工具在處理漏洞的解決方案要容易上手得多。但是在整個(gè)開發(fā)過(guò)程中,SAST 掃描工具必須在應(yīng)用程序上運(yùn)行多次。這要求開發(fā)人員將SAST工具的使用與開發(fā)生命周期和排期集成,而避免他們因?yàn)榇a中內(nèi)置的安全漏洞而偏離開發(fā)軌道。
?總之,SAST 工具可以幫助企業(yè)在開發(fā)階段保護(hù)其應(yīng)用程序。如果使用得當(dāng),SAST 工具可以確保您的企業(yè)永遠(yuǎn)不會(huì)啟動(dòng)具有明顯安全問(wèn)題或配置問(wèn)題的應(yīng)用程序。
SAST 的優(yōu)勢(shì)
與 DAST 及其他類似技術(shù)相比,SAST 掃描程序和工具有很多優(yōu)勢(shì)。
快速掃描
與許多其他應(yīng)用程序安全工具相比,SAST 掃描程序可以在相對(duì)較短的時(shí)間內(nèi)分析100%的應(yīng)用程序代碼庫(kù)。實(shí)際上一些更高級(jí)的工具可以在短短幾分鐘內(nèi)掃描多達(dá)數(shù)百萬(wàn)行代碼。
?這也讓開發(fā)人員能夠?qū)?SAST 掃描與開發(fā)周期的其余部分無(wú)縫集成,從而無(wú)需將這部分任務(wù)安排到開發(fā)日程中,或在源代碼中花費(fèi)大量時(shí)間查找安全漏洞。
SAST 工具比人工更準(zhǔn)確
在閱讀數(shù)百萬(wàn)行代碼時(shí),與人工相比,機(jī)器總是更善于捕捉錯(cuò)誤。實(shí)際 SAST 掃描程序更能夠自動(dòng)識(shí)別某些漏洞,比如跨站腳本攻擊,緩沖區(qū)溢出和 SQL 注入漏洞,比人工更可靠、更高效。此外,能夠在開發(fā)周期中更快地識(shí)別和處理安全漏洞。
總之,企業(yè)能夠?qū)⑷肆D(zhuǎn)移到編程或其他任務(wù)上,而不是進(jìn)行耗時(shí)耗力的安全檢查。
實(shí)時(shí)報(bào)告
與 DAST 和其他工具相反,SAST 掃描程序會(huì)準(zhǔn)確告訴您應(yīng)用程序源代碼中的問(wèn)題所在,讓您更及時(shí)解決問(wèn)題。您和您的團(tuán)隊(duì)從而不必花費(fèi)大量時(shí)間去查找問(wèn)題以及定位檢測(cè)到的安全漏洞的來(lái)源。
事實(shí)上,優(yōu)秀的SAST掃描工具甚至?xí)诔绦騿T編寫代碼時(shí)直接顯示應(yīng)用程序代碼庫(kù)中的問(wèn)題。SAST掃描程序會(huì)在小錯(cuò)誤被其他代碼掩蓋并變得難以檢測(cè)之前捕獲它們,從而減少整體開發(fā)時(shí)間。
多種編程語(yǔ)言和開發(fā)平臺(tái)兼容性
SAST 工具并不像 DAST 工具那樣通用,降低 SAST 掃描程序的使用門檻,能夠讓大多數(shù)主流編程語(yǔ)言和平臺(tái)得以使用適配的高質(zhì)量掃描工具。因此,開發(fā)人員在開發(fā)過(guò)程中應(yīng)該較容易為其應(yīng)用程序找到合適的 SAST 掃描套件或漏洞檢測(cè)工具。
SAST 的短板
雖然 SAST 工具確實(shí)有很多優(yōu)點(diǎn),但同時(shí)也需要注意相應(yīng)短板,避免使用錯(cuò)誤的工具。
較高的誤報(bào)風(fēng)險(xiǎn)
關(guān)于 SAST 工具和掃描報(bào)告,開發(fā)人員需要單獨(dú)查看每個(gè)標(biāo)記的錯(cuò)誤或漏洞。因?yàn)?SAST 工具的誤報(bào)率相對(duì)較高,有問(wèn)題的掃描程序可能會(huì)將代碼的特定部分標(biāo)記為錯(cuò)誤。這無(wú)疑會(huì)降低開發(fā)速度。
報(bào)告有效期短
由于 SAST 工具僅生成靜態(tài)報(bào)告,因此這些報(bào)告也很快過(guò)期,特別是當(dāng)與開發(fā)周期快或復(fù)雜性不斷增長(zhǎng)的應(yīng)用程序一起使用時(shí)。您需要在整個(gè)應(yīng)用程序的開發(fā)周期中多次運(yùn)行SAST掃描,來(lái)去捕獲無(wú)意中創(chuàng)建或忽略的新代碼錯(cuò)誤以及安全漏洞。
?此外,如果在開發(fā)周期的尾聲運(yùn)行 SAST 掃描,則與該工具類型的初衷沖突,因?yàn)槟鷮⒉坏貌环祷氐綉?yīng)用程序的代碼中,并且可能需要對(duì)代碼體系結(jié)構(gòu)進(jìn)行大幅度更改,以修復(fù)任何檢測(cè)到的問(wèn)題。
未對(duì)運(yùn)行漏洞進(jìn)行分析
使用 SAST 工具時(shí),應(yīng)用程序需要處于靜止?fàn)顟B(tài)或處于非活動(dòng)狀態(tài)。正在運(yùn)行或完全部署的應(yīng)用程序,無(wú)法使用 SAST 掃描程序進(jìn)行徹底檢查,換言之,這類工具不適合識(shí)別潛在黑客在實(shí)際攻擊期間可能試圖利用的某些類型的安全漏洞。
?
?由此可以看出,SAST 掃描程序并不擅長(zhǎng)發(fā)現(xiàn)復(fù)雜的安全漏洞,這些漏洞僅在應(yīng)用程序通過(guò)其自己的代碼運(yùn)行并同時(shí)與其他應(yīng)用程序交互時(shí)才會(huì)出現(xiàn)。因此,某些漏洞(如不安全的反序列化)對(duì)于 SAST 工具來(lái)說(shuō)很難檢測(cè)到。
?不同編程語(yǔ)言需要特定工具
雖然大多數(shù)主流編程語(yǔ)言和開發(fā)平臺(tái)都有一個(gè) SAST 掃描工具,但不同語(yǔ)言需要特定的掃描工具。?如果企業(yè)在使用多種語(yǔ)言開發(fā)不同應(yīng)用程序,那么將需要多個(gè) SAST 工具來(lái)單獨(dú)處理每個(gè)應(yīng)用程序。這個(gè)過(guò)程耗時(shí)耗財(cái)。
SAST 和 DAST 之間的差異
動(dòng)態(tài)應(yīng)用程序安全測(cè)試(Dynamic Application Security Testing)在很多方面都與 SAST 技術(shù)相對(duì)應(yīng)。實(shí)際這兩種類型的安全工具都強(qiáng)大且有效,但兩者都無(wú)法捕捉全部可能存在的安全漏洞。兩者應(yīng)相互結(jié)合使用,以確保應(yīng)用程序的整體安全性。

DAST 工具在掃描應(yīng)用程序的安全漏洞時(shí)采用由外向內(nèi)的方法。通過(guò)輸入特定的 URL(或 URL 列表),操作員可以使用 DAST 掃描程序檢查安全漏洞,并部署多個(gè)虛擬網(wǎng)絡(luò)攻擊來(lái)測(cè)試應(yīng)用程序。?一旦檢測(cè)到缺陷,就可以生成報(bào)告以通知安全團(tuán)隊(duì)潛在的問(wèn)題。
?
DAST 工具無(wú)法告知開發(fā)人員錯(cuò)誤出現(xiàn)的位置或原因。因此,開發(fā)人員必須查看代碼并利用其安全專業(yè)知識(shí)來(lái)辨別問(wèn)題是什么以及如何解決它。這與 SAST 工具形成鮮明對(duì)比,SAST 工具能夠指出可能導(dǎo)致問(wèn)題的任何有問(wèn)題的代碼。
何時(shí)使用 SAST 工具?
DAST 工具可以在已部署或已完成的應(yīng)用程序上運(yùn)行。它們主要用于在軟件開發(fā)生命周期結(jié)束時(shí)查找安全漏洞,并且通常在早期開發(fā)會(huì)話中完成多次 SAST 掃描之后。這意味著檢測(cè) DAST 漏洞花費(fèi)的成本和時(shí)間都比 SAST 錯(cuò)誤更多,但在完全部署之前發(fā)現(xiàn)這些漏洞依舊十分重要。
DAST 也很有用,因?yàn)樗鼈兛梢园l(fā)現(xiàn)動(dòng)態(tài)和復(fù)雜的安全漏洞,并且在應(yīng)用程序運(yùn)行時(shí)進(jìn)行分析,同時(shí)與網(wǎng)絡(luò)中的其他應(yīng)用程序進(jìn)行交互。這是 SAST 工具在掃描應(yīng)用程序的靜態(tài)源代碼時(shí)根本無(wú)法做到的。
?此外,DAST 工具通常具有讀取多種應(yīng)用程序語(yǔ)言或開發(fā)平臺(tái)的能力。因此,單個(gè) DAST 工具有時(shí)可以為整個(gè)企業(yè)提供服務(wù),其中包含多個(gè)正在開發(fā)或即將部署的應(yīng)用程序。
如何優(yōu)雅地使用 SAST 工具?
高效運(yùn)用 SAST,請(qǐng)記住以下步驟:
首先,選擇一個(gè)工具,并根據(jù)您使用的編程語(yǔ)言進(jìn)行完善
確保該工具可以理解軟件使用的任何底層框架
創(chuàng)建掃描基礎(chǔ)架構(gòu)并部署工具,最終確定許可要求
設(shè)置訪問(wèn)控制,并保護(hù)部署工具所需的資源
根據(jù)需求修改 SAST 掃描工具附帶的控件
針對(duì)特定的安全漏洞來(lái)編寫新規(guī)則
載入任何應(yīng)用程序和設(shè)置優(yōu)先級(jí)前先掃描高風(fēng)險(xiǎn)應(yīng)用程序
分析掃描結(jié)果,單獨(dú)檢查每個(gè)報(bào)告避免誤報(bào)
制定一個(gè)時(shí)間表,定期在軟件開發(fā)生命周期中運(yùn)行 SAST工具,以最大限度地提高其效率
SAST 工具精選
優(yōu)秀的 SAST 工具數(shù)不勝數(shù)。以下是我們精選的可能適合您的企業(yè)的 SAST 工具。
Veracode 靜態(tài)分析
此工具支持 SAST 功能、DAST 分析,以及軟件成分分析。這是一個(gè)一站式工具,無(wú)論使用什么語(yǔ)言或平臺(tái),都可以處理您的所有安全和滲透測(cè)試需求。
此應(yīng)用程序甚至包括 API 訪問(wèn),因此您可以根據(jù)需求自定義軟件。默認(rèn)情況下,包括幫助您修復(fù)安全漏洞的專業(yè)提示??梢哉f(shuō)是為開發(fā)人員量身定制的工具。
AppScan
這種 SAST 掃描技術(shù)允許組織實(shí)施可擴(kuò)展的安全測(cè)試策略。如果您的企業(yè)將在未來(lái)幾年內(nèi)快速增長(zhǎng),這對(duì)企業(yè)至關(guān)重要。該工具允許測(cè)試移動(dòng)端、網(wǎng)頁(yè)端和開源軟件,并為多應(yīng)用和多用戶部署提供各種管理和報(bào)告工具。這是一個(gè)非常靈活的工具,提供相對(duì)較低的誤報(bào)率和數(shù)據(jù)保護(hù)功能。唯一的缺點(diǎn)是其界面不那么直觀。
總? ? 結(jié)
總之,SAST 技術(shù)是在部署之前測(cè)試應(yīng)用程序的重要組成部分,也是確保為企業(yè)提供高質(zhì)量軟件的重要工具。當(dāng)與 DAST 技術(shù)結(jié)合使用時(shí),SAST 工具能夠保護(hù)應(yīng)用程序免受攻擊,并在部署后更好地促進(jìn)整體應(yīng)用程序運(yùn)行。