安全測試前置實(shí)踐1-白盒&黑盒掃描
作者:京東物流陳維
一、引言
G.J.Myers在《軟件測試的藝術(shù)》中提出:從心理學(xué)角度來說,測試是一個(gè)為了尋找錯(cuò)誤而運(yùn)行程序的過程。
那么安全測試則是一個(gè)尋找系統(tǒng)潛在安全問題的過程,通過測試手段發(fā)現(xiàn)系統(tǒng)中可能存在的安全問題和風(fēng)險(xiǎn),分析并進(jìn)行優(yōu)化,保障系統(tǒng)的安全質(zhì)量。
從應(yīng)用安全維度出發(fā),展開系列安全測試工作,包括不限于:安全前置掃描、安全滲透測試、數(shù)據(jù)安全、SDL流程引入等。
本文我們將以圍繞系統(tǒng)安全質(zhì)量提升為目標(biāo),講述在安全前置掃描上實(shí)踐開展過程。
希望通過此篇文章,幫助大家更深入、透徹地了解安全測試,能快速開展安全測試。
二、安全前置實(shí)踐
1.工單分析-明確來源
在開展掃描前,首先對現(xiàn)有工單漏洞進(jìn)行分析。
(1)漏洞來源分析

漏洞占比分布:
開源組件-版本問題、代碼掃描 ,這兩類占比91%;
這兩類主要為編譯時(shí),平臺自動調(diào)用安全部代碼掃描接口發(fā)起的掃描;
安全部按照規(guī)則,則形成漏洞工單下發(fā)研發(fā)。
白盒漏洞分布:

檢測分支:master分支、uat分支、test分支等。
即:所有在jdos上進(jìn)行部署的分支都會進(jìn)行掃描,掃描出的問題都是工單的產(chǎn)生來源。
JSRC類分析:
外部白帽在JSRC上提交的問題:https://security.jd.com,相關(guān)部門再下發(fā)形成工單。
(2)形成預(yù)防措施
通過上述分析,開展的具體措施:
1.開展前置掃描。在行云部署編譯之前,主動發(fā)起安全前置掃描,避免遺漏到線上。并且統(tǒng)一代碼安全掃描規(guī)則,避免內(nèi)部掃描過代碼仍存在代碼掃描類漏洞。
2.安全質(zhì)量卡控。研發(fā)測試落實(shí)代碼安全掃描,安全掃描作為上線必備環(huán)節(jié),觸發(fā)形成自動掃描,漏出問題修復(fù)后才可進(jìn)行上線編譯。
3.開展?jié)B透測試。針對外網(wǎng)系統(tǒng)和內(nèi)網(wǎng)敏感系統(tǒng)已上線系統(tǒng)開展?jié)B透測試,新需求接入安全SDL安全研發(fā)生命周期進(jìn)行管理。
4.前置掃描-解決存量
通過對應(yīng)用代碼白盒掃描,應(yīng)用域名的黑盒掃描,前置識別問題,預(yù)防缺陷,減少漏洞。以及在掃描過程中進(jìn)行工具提效,近一步提高前置識別預(yù)防的范圍。
(1)代碼白盒掃描
①基于流水線源代碼安全審計(jì)原子的master分支掃描
在部門剛開始做掃描時(shí),使用流水線方式,優(yōu)先流水線方式,實(shí)現(xiàn)持續(xù)的集成掃描,流水線主要步驟為:

掃描分支:master分支
觸發(fā)條件:碼提交觸發(fā)、定時(shí)觸發(fā)
郵件通知:通過郵件進(jìn)行掃描報(bào)告鏈接下發(fā)
問題跟進(jìn):人工查看報(bào)告-漏洞分類整理-下發(fā)任務(wù)至研發(fā)
總結(jié):
能有效地覆蓋master分支的掃描,但是存在的問題是:
覆蓋分支有限,造成非master分支漏洞遺漏;
如需新增覆蓋分支,則需新建流水線,耗時(shí)不變;
人工方式的問題梳理,效率低,易出錯(cuò)。
②活躍分支的預(yù)防掃描
部署平臺上的編譯分支,除master外,其他編譯分支也會產(chǎn)生漏洞工單。
僅進(jìn)行master分支掃描,不能完全預(yù)防白盒漏洞問題。
故:抓取活躍分支-提交活躍分支代碼掃描-形成全分支掃描覆蓋
識別活躍分支:

安全代碼掃描平臺:

活躍分支掃描結(jié)果。
總結(jié):
基于以上,實(shí)現(xiàn)了master分支+活躍分支的掃描覆蓋,完全覆蓋,可完全前置識別白盒漏洞問題。
(2)應(yīng)用黑盒掃描
Step1:獲取域名基于域名、解析IP的黑盒掃描。
Step2:白盒漏洞掃描執(zhí)行:

整理漏洞掃描結(jié)果:
(3)提效工具開發(fā)
問題:白盒&黑盒掃描,包含【提交任務(wù)-獲取結(jié)果-漏洞整理-問題下發(fā)】的實(shí)施步驟,過程中,純手工操作:時(shí)
間長,問題收集、整理,易遺漏&出錯(cuò) 。白盒掃描覆蓋率低,遺漏的問題形成工單。
方案:基于開放接口實(shí)現(xiàn)批量提交任務(wù)-獲取結(jié)果-報(bào)告整理工具


收益:
效率提升:人工4小時(shí)->1小時(shí),提效75%
覆蓋率提升:master分支->近兩周活躍分支+master分支,掃描覆蓋率100%,發(fā)現(xiàn)更多問題,避免遺漏。
1.漏洞修復(fù)-閉環(huán)跟蹤
完成白盒和黑盒掃描之后,要將掃出的漏洞推送至研發(fā)解決,以及完成漏洞的閉環(huán)跟蹤驗(yàn)證。
1)基于行云缺陷跟蹤處理
?以應(yīng)用對應(yīng)的代碼庫為維度,進(jìn)行安全漏洞掃描;
?一個(gè)代碼庫一次掃描出一份報(bào)告,報(bào)告中展示工程代碼當(dāng)前存在的所有安全類問題;
?每次掃描出的結(jié)果會在行云上記錄一個(gè)問題,反饋到研發(fā)接口人,由研發(fā)接口人分配到具體研發(fā);
總結(jié):
?基于行云缺陷錄入管理,錄入過程耗時(shí)耗力,未實(shí)現(xiàn)自動錄入;
?過程不精細(xì);
2)基于任務(wù)批量管理平臺進(jìn)行下發(fā)
?掃描完成之后->對問題進(jìn)行整理->通過OE接口人(或OE接口)進(jìn)行批量下發(fā)任務(wù);
?研發(fā)修復(fù)解決;
3)安全流程建設(shè)
?每周測試接口人、研發(fā)接口人,組織會議對本周安全工單、漏洞問題進(jìn)行復(fù)盤;
?周二、周四上線日的黑白合掃描的常態(tài)化執(zhí)行,發(fā)送安全測試報(bào)告郵件;
?每周安全測試周報(bào);每月安全測試月報(bào);
?研發(fā)安全自測意識建立,行云部署編譯之前,使用平臺進(jìn)行自測;
1.淺析漏洞
掃描原理-污點(diǎn)分析
使用污點(diǎn)分析檢測程序漏洞的工作原理如下圖所示:

?基于數(shù)據(jù)流的污點(diǎn)分析:
在不考慮隱式信息流的情況下,可以將污點(diǎn)分析看做針對污點(diǎn)數(shù)據(jù)的數(shù)據(jù)流分析。根據(jù)污點(diǎn)傳播規(guī)則跟蹤污點(diǎn)信息或者標(biāo)記路徑上的變量污染情況,進(jìn)而檢查污點(diǎn)信息是否影響敏感操作。
?基于依賴關(guān)系的污點(diǎn)分析:
考慮隱式信息流,在分析過程中,根據(jù)程序中的語句或者指令之間的依賴關(guān)系,檢查 Sink 點(diǎn)處敏感操作是否依賴于 Source 點(diǎn)處接收污點(diǎn)信息的操作。
參考資料:https://firmianay.gitbooks.io/ctf-all-in-one/content/doc/5.5\_taint\_analysis.html#基本原理
三、總結(jié)
本文我們講述了體驗(yàn)保障的安全質(zhì)量提升過程。重點(diǎn)講述黑盒、白盒的掃描過程。
首先對漏洞工單進(jìn)行了分析,確定了漏洞的來源、種類、分布,摸清了漏洞的現(xiàn)階段情況。
然后通過進(jìn)行安全前置掃描,對工單中的白盒、黑盒問題前置識別。過程中通過開發(fā)工具來提升效率,最終形成一套可行的前置開展方案。
但需注意:除了解決存量漏洞問題,還需要新增類問題,需要持續(xù)不斷地建設(shè),需要實(shí)現(xiàn)安全測試的常態(tài)化運(yùn)行。并且要利用更多自動化工具,去進(jìn)行提效。
本文僅代表作者觀點(diǎn),版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請?jiān)谖闹凶⒚鱽碓醇白髡呙帧?/p>
免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請及時(shí)與我們聯(lián)系進(jìn)行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com





