安全測試前置實踐1-白盒&黑盒掃描

作者:京東物流 陳維

一、引言

G.J.Myers在《軟件測試的藝術》中提出:從心理學角度來說,測試是一個爲了尋找錯誤而運行程序的過程。

那麼安全測試則是一個尋找系統潛在安全問題的過程,通過測試手段發現系統中可能存在的安全問題和風險,分析並進行優化,保障系統的安全質量。

從應用安全維度出發,展開系列安全測試工作,包括不限於:安全前置掃描、安全滲透測試、數據安全、SDL流程引入等。

本文我們將以圍繞系統安全質量提升爲目標,講述在安全前置掃描上實踐開展過程。

希望通過此篇文章,幫助大家更深入、透徹地瞭解安全測試,能快速開展安全測試。

二、安全前置實踐

1.工單分析-明確來源

在開展掃描前,首先對現有工單漏洞進行分析。

(1)漏洞來源分析



漏洞佔比分佈:

開源組件-版本問題、代碼掃描 ,這兩類佔比91%;

這兩類主要爲編譯時,平臺自動調用安全部代碼掃描接口發起的掃描

安全部按照規則,則形成漏洞工單下發研發

白盒漏洞分佈:



檢測分支:master分支、uat分支、test分支等。

即:所有在jdos上進行部署的分支都會進行掃描,掃描出的問題都是工單的產生來源。

JSRC類分析:

外部白帽在JSRC上提交的問題:https://security.jd.com,相關部門再下發形成工單。

(2)形成預防措施

通過上述分析,開展的具體措施:

1.開展前置掃描。在行雲部署編譯之前,主動發起安全前置掃描,避免遺漏到線上。並且統一代碼安全掃描規則,避免內部掃描過代碼仍存在代碼掃描類漏洞。

2.安全質量卡控。研發測試落實代碼安全掃描,安全掃描作爲上線必備環節,觸發形成自動掃描,漏出問題修復後纔可進行上線編譯。

3.開展滲透測試。針對外網系統和內網敏感系統已上線系統開展滲透測試,新需求接入安全SDL安全研發生命週期進行管理。

4.前置掃描-解決存量

通過對應用代碼白盒掃描,應用域名的黑盒掃描,前置識別問題,預防缺陷,減少漏洞。以及在掃描過程中進行工具提效,近一步提高前置識別預防的範圍。

(1)代碼白盒掃描

①基於流水線源代碼安全審計原子的master分支掃描

在部門剛開始做掃描時,使用流水線方式,優先流水線方式,實現持續的集成掃描,流水線主要步驟爲:





掃描分支:master分支

觸發條件:碼提交觸發、定時觸發

郵件通知:通過郵件進行掃描報告鏈接下發

問題跟進:人工查看報告-漏洞分類整理-下發任務至研發

總結:

能有效地覆蓋master分支的掃描,但是存在的問題是:

覆蓋分支有限,造成非master分支漏洞遺漏;

如需新增覆蓋分支,則需新建流水線,耗時不變;

人工方式的問題梳理,效率低,易出錯。

②活躍分支的預防掃描

部署平臺上的編譯分支,除master外,其他編譯分支也會產生漏洞工單。

僅進行master分支掃描,不能完全預防白盒漏洞問題。

故:抓取活躍分支-提交活躍分支代碼掃描-形成全分支掃描覆蓋

識別活躍分支:





安全代碼掃描平臺:





活躍分支掃描結果。

總結:

基於以上,實現了master分支+活躍分支的掃描覆蓋,完全覆蓋,可完全前置識別白盒漏洞問題。

(2)應用黑盒掃描

Step1獲取域名基於域名、解析IP的黑盒掃描。

Step2:白盒漏洞掃描執行:





整理漏洞掃描結果:

(3)提效工具開發

問題:白盒&黑盒掃描,包含【提交任務-獲取結果-漏洞整理-問題下發】的實施步驟,過程中,純手工操作:時

間長,問題收集、整理,易遺漏&出錯 。白盒掃描覆蓋率低,遺漏的問題形成工單。

方案:基於開放接口實現批量提交任務-獲取結果-報告整理工具









收益

效率提升:人工4小時->1小時,提效75%

覆蓋率提升:master分支->近兩週活躍分支+master分支,掃描覆蓋率100%,發現更多問題,避免遺漏。

1.漏洞修復-閉環跟蹤

完成白盒和黑盒掃描之後,要將掃出的漏洞推送至研發解決,以及完成漏洞的閉環跟蹤驗證。

(1)基於行雲缺陷跟蹤處理

•以應用對應的代碼庫爲維度,進行安全漏洞掃描;

•一個代碼庫一次掃描出一份報告,報告中展示工程代碼當前存在的所有安全類問題;

•每次掃描出的結果會在行雲上記錄一個問題,反饋到研發接口人,由研發接口人分配到具體研發;

總結:

•基於行雲缺陷錄入管理,錄入過程耗時耗力,未實現自動錄入;

•過程不精細;

(2)基於任務批量管理平臺進行下發

•掃描完成之後->對問題進行整理->通過OE接口人(或OE接口)進行批量下發任務;

•研發修復解決;

(3)安全流程建設

•每週測試接口人、研發接口人,組織會議對本週安全工單、漏洞問題進行復盤;

•週二、週四上線日的黑白合掃描的常態化執行,發送安全測試報告郵件;

•每週安全測試周報;每月安全測試月報;

•研發安全自測意識建立,行雲部署編譯之前,使用平臺進行自測;

1.淺析漏洞

(1)掃描原理-污點分析

使用污點分析檢測程序漏洞的工作原理如下圖所示:







•基於數據流的污點分析:

在不考慮隱式信息流的情況下,可以將污點分析看做針對污點數據的數據流分析。根據污點傳播規則跟蹤污點信息或者標記路徑上的變量污染情況,進而檢查污點信息是否影響敏感操作。

•基於依賴關係的污點分析:

考慮隱式信息流,在分析過程中,根據程序中的語句或者指令之間的依賴關係,檢查 Sink 點處敏感操作是否依賴於 Source 點處接收污點信息的操作。

參考資料:https://firmianay.gitbooks.io/ctf-all-in-one/content/doc/5.5_taint_analysis.html#%E5%9F%BA%E6%9C%AC%E5%8E%9F%E7%90%86

三、總結

本文我們講述了體驗保障的安全質量提升過程。重點講述黑盒、白盒的掃描過程。

首先對漏洞工單進行了分析,確定了漏洞的來源、種類、分佈,摸清了漏洞的現階段情況。

然後通過進行安全前置掃描,對工單中的白盒、黑盒問題前置識別。過程中通過開發工具來提升效率,最終形成一套可行的前置開展方案。

但需注意:除了解決存量漏洞問題,還需要新增類問題,需要持續不斷地建設,需要實現安全測試的常態化運行。並且要利用更多自動化工具,去進行提效。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章