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

2023-04-11 18:00:26

作者:京東物流 陳維

一、引言

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#基本原理

三、總結

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

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

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

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