前言
順著應(yīng)用安全的發(fā)展,對(duì)于源代碼安全測(cè)試,在源代碼層面是進(jìn)行安全漏洞的測(cè)試與防范,避免產(chǎn)生所謂的“0-day”漏洞,現(xiàn)在已是大家的共識(shí),成為構(gòu)建軟件安全保障體系中必備環(huán)節(jié)。但我也常常聽(tīng)到有人抱怨“源代碼安全測(cè)試很難開(kāi)展,總是遇到這樣那樣的問(wèn)題,分工不明,權(quán)責(zé)不清,配合變成對(duì)抗,最后導(dǎo)致虎頭蛇尾,甚至是執(zhí)行不下去,留以形勢(shì),無(wú)法產(chǎn)生實(shí)際作用。
那么今天我們就來(lái)討論一下,企業(yè)內(nèi)部怎樣開(kāi)展源代碼安全測(cè)試?到底誰(shuí)來(lái)負(fù)責(zé)源代碼安全測(cè)試,才能使其有效地執(zhí)行,事半功倍?
源代碼安全測(cè)試歸準(zhǔn)?
我們把今天這個(gè)話題,變成一個(gè)相對(duì)具體的問(wèn)題來(lái)討論吧:
軟件源代碼安全測(cè)試工作到底應(yīng)該歸屬于哪個(gè)部門?是測(cè)試部門?是安全部門?還是開(kāi)發(fā)部門?
作為一直致力于為用戶提供最佳的軟件源代碼安全測(cè)試解決方案的我,這個(gè)問(wèn)題是我必須思考和解決的。因?yàn)橹挥姓嬲靼走@個(gè)問(wèn)題,才能清楚地根據(jù)用戶的實(shí)際需求,為用戶提供真正有效的幫助。
乍一看,這個(gè)問(wèn)題看上去不難回答,但在實(shí)際工作分配的時(shí)候,你會(huì)發(fā)現(xiàn)好像交給誰(shuí),他們都會(huì)說(shuō)“不太合適”。我們一一來(lái)分析一下:
答案1:測(cè)試部門。既然是測(cè)試嘛,當(dāng)然屬于測(cè)試部門的工作范疇。當(dāng)你把工作交給測(cè)試部門的時(shí)候,他們會(huì)告訴你:“對(duì)不起,我們只懂測(cè)試。功能和性能測(cè)試交給我們沒(méi)有問(wèn)題,可是我們不太懂安全和安全漏洞,還是源代碼級(jí)別的安全漏洞,我們一是看不懂代碼,二是不明白什么是安全漏洞,這是安全工作,你還是找安全部門人員”。答案2:安全部門。安全測(cè)試嘛,我們所熟知的一些測(cè)試,如漏掃,基線安全掃描,滲透測(cè)試等都是屬于安全工作職責(zé)嘛。可安全人員卻會(huì)說(shuō):“這是源代碼安全,屬于代碼安全優(yōu)化和加固,我們安全人員90%的人員來(lái)自于網(wǎng)絡(luò)安全背景,基本上看不懂代碼,更不會(huì)編寫代碼。同時(shí),軟件源代碼我們一般也很少拿得到源代碼,拿到了也不會(huì)構(gòu)建測(cè)試環(huán)境。這還是開(kāi)發(fā)部門做比較合適。”答案3:開(kāi)發(fā)部門。既然前兩個(gè)部門的人員都共同指出了他們看不懂代碼,不會(huì)編碼,所以做不好代碼安全測(cè)試。那就由開(kāi)發(fā)部門來(lái)做吧??砷_(kāi)發(fā)部門做源代碼安全測(cè)試,他們能同意嗎?從經(jīng)驗(yàn)上看,一般他們會(huì)以“開(kāi)發(fā)時(shí)間緊、任務(wù)重;功能開(kāi)發(fā)都無(wú)法按時(shí)完成;安全問(wèn)題是安全部門考慮的”等等一系列“借口”給你推掉。要是遇到較為“強(qiáng)勢(shì)”的開(kāi)發(fā)部門,他們會(huì)說(shuō):“安全測(cè)試的活都要我們做,那還要安全部門和測(cè)試干什么?”不過(guò)在我看來(lái),即使開(kāi)發(fā)人員做了源代碼安全測(cè)試,他們也都會(huì)以“各種各樣的理由,而將“問(wèn)題”判定為‘誤報(bào)’,不去修復(fù)”。這種即作“選手”,又作“裁判”的情況,也很難真正發(fā)揮源代碼安全測(cè)試的功能。完整的源代碼安全測(cè)試體系
那到底該誰(shuí)來(lái)負(fù)責(zé)實(shí)施源代碼安全測(cè)試工作?以我們多年對(duì)服務(wù)的經(jīng)驗(yàn)來(lái)看,這項(xiàng)工作需要安全、測(cè)試和開(kāi)發(fā)三個(gè)部門有效地配合才能真正執(zhí)行下去。我將其總結(jié)如下圖:
以上圖所見(jiàn),我們將四個(gè)相互獨(dú)立四個(gè)部門,在源代碼安全上進(jìn)行地貫穿,相互牽動(dòng),形成一個(gè)上通下達(dá)的有效的整體,各個(gè)部門分工明確,權(quán)責(zé)清楚,再加以積極配合即可實(shí)現(xiàn)源代碼安全保障。具體上講,就是建立以“源代碼安全測(cè)試標(biāo)準(zhǔn)”中心,“審計(jì)式測(cè)試和開(kāi)發(fā)者測(cè)試”為兩個(gè)基本點(diǎn)的源代碼安全測(cè)試制度,以“安全測(cè)試與安全開(kāi)發(fā)”兩手都要抓,兩手都硬的原則來(lái)開(kāi)展源代碼安全工作,并最終形成“有法可依,有法必依,執(zhí)法必嚴(yán),違法必究”的管理格局。具體要點(diǎn)如下:
“源代碼安全測(cè)試標(biāo)準(zhǔn)”為中心。在以安全部門為主,開(kāi)發(fā)和測(cè)試為輔的方式下,合理地制定出源代碼安全測(cè)試標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)要即能滿足安全部門安全防范的要求,又要能讓測(cè)試和開(kāi)發(fā)部門能夠執(zhí)行得下去,避免矯枉過(guò)正。然后由管理部門制定和發(fā)布執(zhí)行。形成“有法可依”。
“審計(jì)式測(cè)試”一個(gè)基本點(diǎn)。在以測(cè)試部門為主選擇業(yè)界最佳的安全解決產(chǎn)品解決方案(如思客云公司的“找八哥”云安全測(cè)試系統(tǒng)),以此建立盡可能全自動(dòng)化的源代碼安全測(cè)試平臺(tái)。來(lái)實(shí)現(xiàn)測(cè)試成本最小的“審計(jì)式測(cè)試”和“開(kāi)發(fā)者測(cè)試”。其中“審計(jì)式測(cè)試”是指在系統(tǒng)階段性版本發(fā)布或者系統(tǒng)發(fā)布之前的安全測(cè)試,由測(cè)試部門完成。安全部門執(zhí)行監(jiān)督。確保任何一個(gè)系統(tǒng)在發(fā)布之前都執(zhí)行了安全測(cè)試,并符合“源代碼安全測(cè)試標(biāo)準(zhǔn)”。形成“有法必依”和“執(zhí)法必嚴(yán)”。
“開(kāi)發(fā)者測(cè)試”第二個(gè)基本點(diǎn)。開(kāi)發(fā)部門在經(jīng)過(guò)幾次安全問(wèn)題測(cè)試和修復(fù)過(guò)程后,就會(huì)發(fā)現(xiàn)“與其被動(dòng)測(cè)試,被動(dòng)修復(fù)問(wèn)題,不如主動(dòng)防范錯(cuò)誤”。這樣一方面開(kāi)發(fā)人員就會(huì)進(jìn)行安全編碼方面的學(xué)習(xí)和實(shí)踐,達(dá)到盡量不出錯(cuò)。另一方面,如果安全測(cè)試產(chǎn)品授權(quán)上是允許的,并測(cè)試過(guò)程也基本上是全自動(dòng)化的,測(cè)試成本很低的情況下,開(kāi)發(fā)人員會(huì)主動(dòng)地在開(kāi)發(fā)程中進(jìn)行源代碼安全測(cè)試。開(kāi)發(fā)者測(cè)試還帶來(lái)的另一個(gè)好處是,及時(shí)地發(fā)現(xiàn)安全問(wèn)題,修復(fù)成本變化極低。這樣一來(lái),形成了“違法必究”。
結(jié)束語(yǔ)
通過(guò)上面詳細(xì)的分析和總結(jié),我相們大家已經(jīng)明白了軟件源代碼安全測(cè)試工作的特點(diǎn)以及對(duì)實(shí)施這項(xiàng)目工作的工作重點(diǎn)。那么就形成統(tǒng)一的測(cè)試整體體系,各部門有效地積極配合才能讓整個(gè)企業(yè)安全開(kāi)發(fā)水平、測(cè)試水平、理水平得到提高,真正達(dá)到事半功倍的效果。