軟件安全:為什么DAST和RASP不是企業(yè)級(jí)方法?
目前仍然處于早期發(fā)展階段的軟件安全面臨著兩個(gè)挑戰(zhàn)。首先是確保從業(yè)人員修復(fù)他們發(fā)現(xiàn)的安全缺陷,無(wú)論缺陷屬于什么類(lèi)別。第二是擴(kuò)展到涵蓋整個(gè)企業(yè)范圍的產(chǎn)品組合(全部,當(dāng)然,也許是以基于風(fēng)險(xiǎn)的方式)。幸運(yùn)的是,在這兩方面,我們一直在取得進(jìn)展。
修復(fù)你所發(fā)現(xiàn)的問(wèn)題
應(yīng)用安全技術(shù)專(zhuān)家和行業(yè)分析師一直不斷地探討用于檢測(cè)軟件安全缺陷的方法。SAST、DAST、IAST和RASP都是Gartner公司認(rèn)可的漏洞檢查方法,它們都被扔到這場(chǎng)戰(zhàn)斗中??杀氖牵瑥募夹g(shù)上來(lái)講,并沒(méi)有最終的勝利者。這是因?yàn)槊糠N方法都有自己的優(yōu)缺點(diǎn),并且這些方法往往相得益彰。
自Cigital公司在1999年推出其ITS4以來(lái),SAST(即靜態(tài)應(yīng)用安全測(cè)試)已經(jīng)走過(guò)了漫長(zhǎng)的發(fā)展道路。擴(kuò)展SAST是一個(gè)挑戰(zhàn),在兩種情況下會(huì)遇到這個(gè)挑戰(zhàn)。第一種是通過(guò)圍繞一種工業(yè)級(jí)強(qiáng)度工具(例如Coverity、IBM Appscan Source或者HP/Fortify)建立一個(gè)工廠。第二種是部署基于IDE的桌面工具,例如Cigital SecureAssist。Aetna首席信息安全官Jim Routh和筆者在其他文章中也討論了SAST以及可擴(kuò)展性。(順便說(shuō)一句,SAST和技術(shù)轉(zhuǎn)移是很好的議題)。
從局外人來(lái)看,DAST(即動(dòng)態(tài)應(yīng)用安全測(cè)試)是關(guān)于動(dòng)態(tài)黑盒測(cè)試。一般來(lái)說(shuō),DAST工具只適用于使用簡(jiǎn)單通信協(xié)議(例如HTTP)的軟件。它對(duì)Web應(yīng)用的動(dòng)態(tài)測(cè)試很有意義,但DAST在其設(shè)計(jì)中只有有限的目標(biāo)。這意味著DAST很適合Web應(yīng)用,但并不適用于大多數(shù)其他類(lèi)型的軟件。
IAST(即交互式應(yīng)用安全測(cè)試)整合了動(dòng)態(tài)和靜態(tài)方法到交互式解決方案中。很明顯的是,早期IAST方法(與DAST一樣)限制為Web應(yīng)用。如果你的產(chǎn)品組合中只有Web應(yīng)用,IAST是很好的方法。
RAST(即運(yùn)行時(shí)應(yīng)用自我保護(hù))是一種新方法,它主要是重寫(xiě)軟件讓軟件可以在運(yùn)行時(shí)被監(jiān)控。這是有著悠久歷史的想法,同時(shí)它有著一個(gè)很大的缺陷:如果你在最后一刻重寫(xiě)軟件,當(dāng)你因?yàn)檐浖收隙艿街肛?zé)時(shí)不要感到驚訝,即使你的重寫(xiě)與故障沒(méi)有關(guān)系。筆者總是會(huì)說(shuō),“不要成為最后一個(gè)摸山芋的人”,這個(gè)建議也適用于RASP。從記錄來(lái)看,RASP還會(huì)帶來(lái)效率影響,1%到10%的范圍,這也需要考慮在內(nèi)。最后,如果你允許RASP來(lái)阻止代碼在主動(dòng)攻擊期間在生產(chǎn)環(huán)境運(yùn)行,你等于創(chuàng)建了一個(gè)很好的拒絕服務(wù)引擎??傊?,這是很新的方法。
事實(shí)證明,探討這些技術(shù)方法是非常愚蠢的行為,特別是當(dāng)涉及SAST、DAST和IAST時(shí)。多年以來(lái),在該領(lǐng)域的從業(yè)人員通過(guò)各種方式整合這些技術(shù)來(lái)解決軟件安全中的重要問(wèn)題。單靠一種方法幾乎永遠(yuǎn)不是正確的答案。
人的因素
軟件安全的骯臟小秘密解釋了這其中的原因:工具本身并不能解決軟件安全問(wèn)題,特別是單純尋找漏洞的簡(jiǎn)單工具。這是因?yàn)槿绻悴徽嬲鉀Q你發(fā)現(xiàn)的安全缺陷,你并不能在安全方面帶來(lái)改進(jìn)。如果沒(méi)有聰明的工作人員的參與,這些工具都無(wú)法修復(fù)缺陷。它們?cè)诎l(fā)現(xiàn)漏洞的方式略有不同(我們甚至不會(huì)提涉及缺陷)。并且,這個(gè)真理適用于所有web應(yīng)用安全子域。
如果我們退后一步考慮這些技術(shù),可以很容易看到SAST提供的優(yōu)勢(shì)超過(guò)DAST或其他任何動(dòng)態(tài)測(cè)試方法。當(dāng)涉及修復(fù)軟件時(shí),如果你知道代碼中哪里存在問(wèn)題,則更容易修復(fù)這個(gè)問(wèn)題。在另一方面,如果你只知道哪個(gè)運(yùn)行時(shí)glob在運(yùn)行時(shí)測(cè)試過(guò)程中存在問(wèn)題,修復(fù)這個(gè)缺陷則是一個(gè)挑戰(zhàn)。正如在物理學(xué)中,白盒實(shí)驗(yàn)總是優(yōu)于黑盒實(shí)驗(yàn)。
由于開(kāi)發(fā)者最終要負(fù)責(zé)創(chuàng)建盡可能少缺陷的軟件,任何能夠盡可能直接地幫助開(kāi)發(fā)者的工具都是最有用的。在開(kāi)發(fā)領(lǐng)域的這一點(diǎn)上,只有少數(shù)簡(jiǎn)單漏洞可以完全自動(dòng)化處理掉。這個(gè)測(cè)試仍將需要開(kāi)發(fā)人員的參與來(lái)解決問(wèn)題。
總之,在你設(shè)計(jì)巧妙的新方法來(lái)檢測(cè)漏洞時(shí),確保你考慮了實(shí)際軟件修復(fù)。如果你的工具供應(yīng)商沒(méi)有談?wù)搯?wèn)題如何得到修復(fù),這里可能有原因。
擴(kuò)展到企業(yè)產(chǎn)品組合
說(shuō)了這么多,對(duì)于軟件安全,各種類(lèi)型的工具都是必不可少的。在這里,擴(kuò)展很重要。為了涵蓋大多數(shù)公司的整個(gè)產(chǎn)品組合(即所有軟件應(yīng)用),自動(dòng)化是真正唯一的出路。從其價(jià)值來(lái)看,設(shè)計(jì)分析和漏洞查找工具都是這樣,雖然在設(shè)計(jì)中我們有些工作會(huì)消除。
很長(zhǎng)時(shí)間以來(lái),風(fēng)險(xiǎn)管理被濫用為僅關(guān)注少數(shù)“高風(fēng)險(xiǎn)”應(yīng)用,而最終減去和忽略了其余的絕大多數(shù)應(yīng)用。雖然從效率來(lái)看這似乎是個(gè)好主意,但事實(shí)證明,攻擊者通常會(huì)瞄準(zhǔn)一切的事情。在現(xiàn)在的攻擊情況中,你產(chǎn)品組合中的每個(gè)軟件都應(yīng)該進(jìn)行一定水平的測(cè)試。攻擊者會(huì)瞄準(zhǔn)任何薄弱環(huán)節(jié)(包括暖通空調(diào)供應(yīng)商和其他小型供應(yīng)商)。目前新的薄弱環(huán)節(jié)是被忽略的應(yīng)用安全。
現(xiàn)在是時(shí)候利用整個(gè)產(chǎn)品組合中的工具和服務(wù)來(lái)不遺余力地尋找基本的漏洞了。
當(dāng)然,這些類(lèi)型的解決方案仍然可以是基于風(fēng)險(xiǎn)的。你有高風(fēng)險(xiǎn)面向互聯(lián)網(wǎng)的應(yīng)用?請(qǐng)進(jìn)行一次徹底的架構(gòu)風(fēng)險(xiǎn)分析;使用強(qiáng)大的靜態(tài)分析工具來(lái)審查其代碼;培訓(xùn)開(kāi)發(fā)人員來(lái)保持其安全性;執(zhí)行滲透測(cè)試以及進(jìn)行完整的she-bang,但不要將低風(fēng)險(xiǎn)應(yīng)用轉(zhuǎn)盤(pán)轉(zhuǎn)動(dòng)至零。使用自動(dòng)化測(cè)試來(lái)尋找和解決簡(jiǎn)單漏洞。為開(kāi)發(fā)人員配備基于IDE的靜態(tài)工具,并對(duì)他們進(jìn)行培訓(xùn)。
在你規(guī)劃和執(zhí)行你的軟件安全舉措(以及使用BSIMM進(jìn)行衡量)時(shí),請(qǐng)確保這種可擴(kuò)展性發(fā)揮重要作用。