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