別再依賴安全掃描了

本文中的“安全掃描”是指開(kāi)發(fā)團(tuán)隊(duì)在距離產(chǎn)品上線日期比較近的時(shí)候,通過(guò)公司里的安全團(tuán)隊(duì)或者外部第三方安全公司對(duì)產(chǎn)品進(jìn)行安全掃描,團(tuán)隊(duì)基于安全掃描報(bào)告,對(duì)產(chǎn)品中存在的安全漏洞進(jìn)行修復(fù)的過(guò)程。不同的公司,不同的開(kāi)發(fā)團(tuán)隊(duì)對(duì)它的稱呼可能不一樣,有人把它叫做滲透測(cè)試,也有人把它叫做安全審查、安全評(píng)估、安全檢查等等。

如果不做安全掃描會(huì)怎樣?

想象一下,你所在的開(kāi)發(fā)團(tuán)隊(duì)正在開(kāi)發(fā)一款互聯(lián)網(wǎng)金融產(chǎn)品,所有的核心業(yè)務(wù)功能基本開(kāi)發(fā)完畢。此時(shí)此刻,離計(jì)劃中的上線日期只有不到三周時(shí)間。通常而言,這時(shí)候安全掃描就會(huì)介入進(jìn)來(lái),掃出一堆問(wèn)題扔給團(tuán)隊(duì)修復(fù)。

不過(guò)這次不一樣,如果我提議,不必給產(chǎn)品做安全掃描,就這樣直接上線可好?我想,絕大多數(shù)人的反應(yīng)會(huì)是下面這樣的:

“神馬?!不做安全掃描?那我怎么知道產(chǎn)品安不安全?萬(wàn)一出問(wèn)題了怎么辦?”

“我知道我們產(chǎn)品中一定會(huì)有安全問(wèn)題,安全掃描正好可以幫助我們把這些問(wèn)題暴露出來(lái),將其修復(fù)之后再上線才是萬(wàn)無(wú)一失的選擇?!?/p>

“雖然每次安全掃描都會(huì)掃出一堆問(wèn)題來(lái),搞得團(tuán)隊(duì)壓力山大,但如果不做掃描,我們到是輕松了,可產(chǎn)品的安全性卻又是個(gè)問(wèn)題。”

“安全掃描可是我們安全團(tuán)隊(duì)的殺手锏,不讓我們給開(kāi)發(fā)團(tuán)隊(duì)做掃描,那我們的價(jià)值怎么體現(xiàn)出來(lái)?”

“公司規(guī)范里說(shuō)了,不做安全掃描不準(zhǔn)上線?!?/p>

“年少輕狂的年輕人,我以過(guò)來(lái)人的經(jīng)驗(yàn)告訴你,這么做是要付出代價(jià)的?!?/p>

反應(yīng)越是激烈,說(shuō)明團(tuán)隊(duì)越是依賴安全掃描。甚至可以說(shuō),安全掃描在你的團(tuán)隊(duì)里,是保證產(chǎn)品安全的最后一道屏障,也是唯一的手段。

安全掃描是陳舊落后的手段

有人會(huì)說(shuō),最后一道屏障又怎樣,唯一的手段又如何,不管紅貓黑貓,抓到耗子的都是好貓。

先不談這樣做是好是壞,我們先來(lái)?yè)Q個(gè)角度思考一下,如果把“安全問(wèn)題”這幾個(gè)字換成“功能缺陷”或者“Bug”,你還會(huì)認(rèn)同這種在臨近產(chǎn)品上線之前做一次性的、運(yùn)動(dòng)式的大檢查,然后期待著開(kāi)發(fā)團(tuán)隊(duì)在所剩無(wú)幾的時(shí)間里快速修復(fù)掉所有Bug,還不能引入新Bug的做法嗎?

答案顯然是否定的。大家都明白,功能缺陷越早發(fā)現(xiàn)越好,否則修復(fù)成本將會(huì)非常高,越往后拖越對(duì)團(tuán)隊(duì)不利。

現(xiàn)如今,還有哪個(gè)開(kāi)發(fā)團(tuán)隊(duì)敢說(shuō),在開(kāi)發(fā)過(guò)程中不需要對(duì)軟件做測(cè)試,等到最后上線前做一次集中式的測(cè)試就夠了?開(kāi)發(fā)團(tuán)隊(duì)也是極盡所能的快速響應(yīng)軟件質(zhì)量問(wèn)題,例如進(jìn)行測(cè)試驅(qū)動(dòng)開(kāi)發(fā),編寫大量的自動(dòng)化測(cè)試并且通過(guò)CI持續(xù)的對(duì)軟件質(zhì)量進(jìn)行監(jiān)控。

安全問(wèn)題是如此的重要,它也是軟件質(zhì)量的一部分,只不過(guò)換了個(gè)名字,變了種表現(xiàn)形式而已,而我們卻用如此落后的方式來(lái)對(duì)待它,顯然不合理。

提前做安全掃描可能是空中樓閣

又有人說(shuō),安全掃描不就是太晚了一點(diǎn)嘛,我們把掃描時(shí)間點(diǎn)往前提一些不就好了嗎?

思路是對(duì)的,但很可惜,要做到這一點(diǎn)卻幾乎是不可能的。因?yàn)榘踩珤呙栌幸欢ㄇ疤釛l件,它只能對(duì)已經(jīng)開(kāi)發(fā)完成了的功能進(jìn)行掃描,這也就意味著,那些還處于開(kāi)發(fā)過(guò)程中的功能是覆蓋不到的。而且隨著開(kāi)發(fā)的進(jìn)行,軟件功能會(huì)有所調(diào)整,之前做過(guò)的安全掃描很可能會(huì)失去意義,最終還是得等到所有功能都開(kāi)發(fā)完畢了,在上線之前再做一次最終的安全掃描。于是這又回到了上面那個(gè)問(wèn)題。

安全掃描的短板不止一處

安全掃描除了上面講到的時(shí)間太晚的問(wèn)題之外,還有不少短板。首當(dāng)其沖的就是速度太慢,跟不上開(kāi)發(fā)團(tuán)隊(duì)的節(jié)奏。盡管有自動(dòng)化工具的幫助,但是一次全面、細(xì)致、深入的安全掃描,往往需要好幾天,甚至更長(zhǎng)時(shí)間。在如今追求快速開(kāi)發(fā)上線,迅速調(diào)整以響應(yīng)市場(chǎng)變化的環(huán)境下,開(kāi)發(fā)團(tuán)隊(duì)沒(méi)有這么多時(shí)間和耐心來(lái)等待掃描結(jié)果。

某些采用敏捷或者精益開(kāi)發(fā)方式的團(tuán)隊(duì),每個(gè)迭代甚至每天都有新功能上線和舊功能調(diào)整、問(wèn)題修復(fù)等等,而等到幾天甚至幾周后,團(tuán)隊(duì)拿到安全掃描報(bào)告的時(shí)候,被掃描的功能可能早就被廢棄了,這么做簡(jiǎn)直是在浪費(fèi)資源。

其次,留給安全掃描的時(shí)間窗口十分有限,它往往只能在產(chǎn)品功能完成之后,最終上線之前才能進(jìn)行,在這種情況下,往往只有一次機(jī)會(huì)進(jìn)行掃描,也只能給團(tuán)隊(duì)提供一次性的安全反饋。但實(shí)際情況卻是,業(yè)務(wù)需求在不斷發(fā)展和變化,開(kāi)發(fā)團(tuán)隊(duì)也在持續(xù)對(duì)產(chǎn)品功能做出調(diào)整,除非每次產(chǎn)品功能發(fā)生變化之后立即進(jìn)行一次安全掃描,否則以現(xiàn)有的模式,是沒(méi)有辦法及時(shí)給開(kāi)發(fā)團(tuán)隊(duì)提供安全性反饋的。

最后,安全掃描的成本也是不得不考慮的因素。購(gòu)買外部安全公司的安全掃描服務(wù)到是很方便,可是動(dòng)不動(dòng)就是幾十萬(wàn)的支出不是任何團(tuán)隊(duì)都能承受得起的。通過(guò)自有安全團(tuán)隊(duì)做安全掃描看上去可能更加經(jīng)濟(jì)實(shí)惠,畢竟是公司內(nèi)部資源,但是別忘了,自建安全團(tuán)隊(duì)也是有成本的,而且要招到杰出的安全工程師也不是件容易的事情。

既然安全掃描有這么多缺點(diǎn),那為什么還有如此多的團(tuán)隊(duì)在用它?

拋開(kāi)安全問(wèn)題暴露出來(lái)之后,解決起來(lái)是如何痛苦這件事情不談,其實(shí)安全掃描也并非一無(wú)是處。

盡管安全掃描在時(shí)間上晚了一些,速度上慢了一點(diǎn),還不可持續(xù),但由于軟件開(kāi)發(fā)本身是個(gè)復(fù)雜的過(guò)程,開(kāi)發(fā)團(tuán)隊(duì)在產(chǎn)品安全性上總有疏忽大意的時(shí)候,只要進(jìn)行安全掃描,大多數(shù)時(shí)候都會(huì)有所“收獲”。這樣的話,一方面安全掃描幫開(kāi)發(fā)團(tuán)隊(duì)發(fā)現(xiàn)了問(wèn)題,另一方面安全團(tuán)隊(duì)也體現(xiàn)出了自身價(jià)值,正是在這樣的背景下,安全掃描無(wú)論是對(duì)于開(kāi)發(fā)團(tuán)隊(duì)還是安全團(tuán)隊(duì)而言,都具有難以抗拒的誘惑力。

此外,有時(shí)候做安全掃描也是一種無(wú)奈之舉,因?yàn)橛行╅_(kāi)發(fā)團(tuán)隊(duì)不見(jiàn)黃河不死心,除非你把安全問(wèn)題明確的擺在他們面前,否則他們意識(shí)不到問(wèn)題的嚴(yán)重性,不會(huì)輕易的主動(dòng)去關(guān)注安全問(wèn)題。

除了安全掃描,還有別的什么辦法?

既然安全問(wèn)題這么重要,安全掃描又是如此的低效,那我們?cè)撛趺醋霾拍芨玫慕鉀Q這個(gè)問(wèn)題呢?答案其實(shí)早就擺在眼前了,軟件的安全性是軟件質(zhì)量的一部分,為何不嘗試一下把它和功能需求一樣,都當(dāng)做頭等公民來(lái)看待呢?那些用于保證軟件質(zhì)量的最佳實(shí)踐對(duì)于軟件安全性同樣適用。

更具效率的做法是,在產(chǎn)品開(kāi)發(fā)的全生命周期里,直接植入安全最佳實(shí)踐,我們把它叫做Build Security In(簡(jiǎn)稱BSI)。例如,在分析業(yè)務(wù)需求的時(shí)候,主動(dòng)去分析安全需求,給用戶故事建立安全驗(yàn)收標(biāo)準(zhǔn);在開(kāi)發(fā)過(guò)程中時(shí)刻關(guān)注安全,通過(guò)自動(dòng)化的安全測(cè)試持續(xù)性的關(guān)注產(chǎn)品安全;在測(cè)試過(guò)程中,不僅測(cè)試產(chǎn)品看其是否滿足了業(yè)務(wù)需求,還基于安全驗(yàn)收標(biāo)準(zhǔn)設(shè)計(jì)并執(zhí)行安全測(cè)試用例。

傳統(tǒng)的安全掃描是從后外前推,倒逼著開(kāi)發(fā)團(tuán)隊(duì)做改變,而B(niǎo)SI的做法則是從前往后梳理,融入到日常的開(kāi)發(fā)過(guò)程中。正是因?yàn)樘崆安⑶页掷m(xù)性的關(guān)注產(chǎn)品安全,所以在后續(xù)的開(kāi)發(fā)中,團(tuán)隊(duì)才會(huì)有意識(shí)的去做安全防御,使得最后開(kāi)發(fā)出來(lái)的軟件默認(rèn)就已經(jīng)具備了不錯(cuò)的安全性,給團(tuán)隊(duì)帶來(lái)的沖擊和壓力也是最小的。

邁出改變的第一步

安全掃描已經(jīng)深深的烙在了很多開(kāi)發(fā)團(tuán)隊(duì)的骨髓里,突然之間要改變這一切勢(shì)必不容易,但是我們還是可以做很多嘗試來(lái)逐漸改變這個(gè)現(xiàn)狀。在這里我推薦一些比較好的切入點(diǎn),開(kāi)發(fā)團(tuán)隊(duì)可以作為參考,邁出改變的第一步。

每當(dāng)在創(chuàng)建用戶故事的時(shí)候,多問(wèn)幾個(gè)和安全相關(guān)的問(wèn)題,比如:

  • 這個(gè)業(yè)務(wù)需求面臨著哪些威脅?
  • 和這個(gè)業(yè)務(wù)需求相關(guān)聯(lián)的安全需求是什么?
  • 有沒(méi)有什么東西是應(yīng)該被保護(hù)起來(lái)的?
  • 應(yīng)該提前做些什么以應(yīng)對(duì)可能的黑客攻擊?

然后,團(tuán)隊(duì)共同給這個(gè)用戶故事設(shè)定安全相關(guān)的驗(yàn)收標(biāo)準(zhǔn)。

開(kāi)發(fā)人員在每日代碼審查的時(shí)候,多問(wèn)一下:“這樣設(shè)計(jì),或者代碼這么寫,有沒(méi)有什么安全風(fēng)險(xiǎn)?安全驗(yàn)收標(biāo)準(zhǔn)滿足了嗎?”

每當(dāng)測(cè)試人員拿到一張用戶故事對(duì)其進(jìn)行測(cè)試的時(shí)候,也問(wèn)問(wèn)自己:“除了測(cè)試產(chǎn)品看其是否正確實(shí)現(xiàn)了業(yè)務(wù)需求之外,還需要基于安全驗(yàn)收標(biāo)準(zhǔn)設(shè)計(jì)并執(zhí)行哪些安全測(cè)試用例?”

上面這些提問(wèn)看似簡(jiǎn)單,但是當(dāng)你在團(tuán)隊(duì)里問(wèn)出這些問(wèn)題的時(shí)候,你一定會(huì)驚訝于它們帶來(lái)的影響力。試試唄。


更多精彩洞見(jiàn),請(qǐng)關(guān)注微信公眾號(hào):ThoughtWorks

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文中的“安全掃描”是指開(kāi)發(fā)團(tuán)隊(duì)在距離產(chǎn)品上線日期比較接近的時(shí)候,通過(guò)公司里的安全團(tuán)隊(duì)或者外部第三方安全公司對(duì)產(chǎn)品...
    獨(dú)自旅行閱讀 325評(píng)論 0 1
  • 近日百度安全應(yīng)急響應(yīng)中心發(fā)布了《企業(yè)級(jí)自動(dòng)化代碼安全掃描實(shí)戰(zhàn)》,讀者可以管中窺豹來(lái)實(shí)例了解軟件安全中白盒掃描領(lǐng)域在...
    安全樂(lè)觀主義閱讀 766評(píng)論 0 0
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂(lè)有人憂愁,有人驚喜有人失落,有的覺(jué)得收獲滿滿有...
    陌忘宇閱讀 8,814評(píng)論 28 54
  • 步驟:發(fā)微博01-導(dǎo)航欄內(nèi)容 -> 發(fā)微博02-自定義TextView -> 發(fā)微博03-完善TextView和...
    dibadalu閱讀 3,380評(píng)論 1 3
  • 人工智能是什么?什么是人工智能?人工智能是未來(lái)發(fā)展的必然趨勢(shì)嗎?以后人工智能技術(shù)真的能達(dá)到電影里機(jī)器人的智能水平嗎...
    ZLLZ閱讀 4,085評(píng)論 0 5

友情鏈接更多精彩內(nèi)容