小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

一文洞悉DAST、SAST、IAST——Web應(yīng)用安全測試技術(shù)對比淺談

 yi321yi 2019-04-20

一、全球面臨軟件安全危機(jī)

我們即將處于一個軟件定義一切的時代,這是 “一個最好的時代,也是一個最壞的時代”。

無論是生活中離不開的通訊、支付、娛樂、餐飲、出行,以及醫(yī)療,還是國防領(lǐng)域中的火箭、導(dǎo)彈、衛(wèi)星等,都離不開軟件技術(shù)。然而,軟件技術(shù)在促進(jìn)社會發(fā)展的同時,也可能因?yàn)槁┒磫栴}危害人們的個人隱私信息、財產(chǎn)安全甚至生命安全,這類案例不勝枚舉。

2010年,大型社交網(wǎng)站rockyou.com被曝存在SQL注入漏洞,黑客利用此漏洞獲取到3200萬用戶記錄(包括E-mail、姓名及明文形式的密碼)。

2015年,英國電話和寬帶供應(yīng)商TalkTalk被一名15歲的黑客利用SQL注入漏洞進(jìn)行攻擊,四百萬TalkTalk客戶的姓名、地址、出生日期、和信用卡/銀行詳細(xì)信息被黑客竊取。

2018年,臺灣一男子利用花旗銀行信用卡業(yè)務(wù)系統(tǒng)漏洞,刷卡消費(fèi)達(dá)6300余萬元(新臺幣約合人民幣1345萬元),花旗銀行已通過司法途徑,向該名客戶求償。

軟件技術(shù)的發(fā)展與應(yīng)用伴隨著巨大的安全危機(jī),解決軟件漏洞問題是軟件開發(fā)從業(yè)者和安全從業(yè)者們迫在眉睫的任務(wù)。

二、什么是Web應(yīng)用安全測試技術(shù)?

為了發(fā)現(xiàn)軟件的漏洞和缺陷,確保Web應(yīng)用程序在交付之前和交付之后都是安全的,就需要利用Web應(yīng)用安全測試技術(shù)識別Web應(yīng)用程序中架構(gòu)的薄弱點(diǎn)和漏洞,并且必須趕在網(wǎng)絡(luò)黑客找到和利用它們之前。

Web應(yīng)用安全測試技術(shù)經(jīng)過多年的發(fā)展,目前業(yè)界常用的技術(shù)主要分為3大類別。

DAST:動態(tài)應(yīng)用程序安全測試(Dynamic Application Security Testing)技術(shù)在測試或運(yùn)行階段分析應(yīng)用程序的動態(tài)運(yùn)行狀態(tài)。它模擬黑客行為對應(yīng)用程序進(jìn)行動態(tài)攻擊,分析應(yīng)用程序的反應(yīng),從而確定該Web應(yīng)用是否易受攻擊。

SAST:靜態(tài)應(yīng)用程序安全測試(Static Application Security Testing)技術(shù)通常在編碼階段分析應(yīng)用程序的源代碼或二進(jìn)制文件的語法、結(jié)構(gòu)、過程、接口等來發(fā)現(xiàn)程序代碼存在的安全漏洞。

IAST:交互式應(yīng)用程序安全測試(Interactive Application Security Testing)是2012年Gartner公司提出的一種新的應(yīng)用程序安全測試方案,通過代理、VPN或者在服務(wù)端部署Agent程序,收集、監(jiān)控Web應(yīng)用程序運(yùn)行時函數(shù)執(zhí)行、數(shù)據(jù)傳輸,并與掃描器端進(jìn)行實(shí)時交互,高效、準(zhǔn)確的識別安全缺陷及漏洞,同時可準(zhǔn)確確定漏洞所在的代碼文件、行數(shù)、函數(shù)及參數(shù)。IAST相當(dāng)于是DAST和SAST結(jié)合的一種互相關(guān)聯(lián)運(yùn)行時安全檢測技術(shù)。

本文主要分析這3種技術(shù)的實(shí)現(xiàn)原理、優(yōu)劣勢對比以及應(yīng)用場景。

三、DAST

DAST是一種黑盒測試技術(shù),是目前應(yīng)用最廣泛、使用最簡單的一種Web應(yīng)用安全測試方法,安全工程師常用的工具如AWVS、AppScan等就是基于DAST原理的產(chǎn)品。

1. 實(shí)現(xiàn)原理

圖 1:DAST原理

1)通過爬蟲發(fā)現(xiàn)整個 Web 應(yīng)用結(jié)構(gòu),爬蟲會發(fā)現(xiàn)被測Web程序有多少個目錄,多少個頁面,頁面中有哪些參數(shù);

2)根據(jù)爬蟲的分析結(jié)果,對發(fā)現(xiàn)的頁面和參數(shù)發(fā)送修改的 HTTP Request 進(jìn)行攻擊嘗試(掃描規(guī)則庫);

3)通過對于 Response 的分析驗(yàn)證是否存在安全漏洞。

2. DAST優(yōu)劣勢分析

DAST這種測試方法主要測試Web應(yīng)用程序的功能點(diǎn),測試人員無需具備編程能力,無需了解應(yīng)用程序的內(nèi)部邏輯結(jié)構(gòu),不區(qū)分測試對象的實(shí)現(xiàn)語言,采用攻擊特征庫來做漏洞發(fā)現(xiàn)與驗(yàn)證,能發(fā)現(xiàn)大部分的高風(fēng)險問題,因此是業(yè)界Web安全測試使用非常普遍的一種安全測試方案。DAST除了可以掃描應(yīng)用程序本身之外,還可以掃描發(fā)現(xiàn)第三方開源組件、第三方框架的漏洞。

從工作原理也可以分析出,DAST一方面需要爬蟲盡可能的把應(yīng)用程序的結(jié)構(gòu)爬取完整,另一方面需要對被測應(yīng)用程序發(fā)送漏洞攻擊包?,F(xiàn)在很多的應(yīng)用程序含有AJAX頁面、CSRF Token頁面、驗(yàn)證碼頁面、API孤鏈、POST表單請求或者是設(shè)置了防重放攻擊策略,這些頁面無法被網(wǎng)絡(luò)爬蟲發(fā)現(xiàn),因此DAST技術(shù)無法對這些頁面進(jìn)行安全測試。DAST技術(shù)對業(yè)務(wù)分支覆蓋不全,即使爬到一個表單,要提交內(nèi)容,服務(wù)端對內(nèi)容做判斷,是手機(jī)號碼則進(jìn)入業(yè)務(wù)1,不是手機(jī)號碼進(jìn)入業(yè)務(wù)2,爬蟲不可能知道這里要填手機(jī)號碼,所以業(yè)務(wù)分支1永遠(yuǎn)不會檢測到。

另外DAST必須發(fā)送漏洞攻擊包來進(jìn)行安全測試,這就需要有安全專家不斷更新漏洞掃描插件,而且這種測試方式會對業(yè)務(wù)測試造成一定的影響,安全測試的臟數(shù)據(jù)會污染業(yè)務(wù)測試的數(shù)據(jù)。

DAST的測試對象為HTTP/HTTPS的Web應(yīng)用程序,對于IOS/Android上的APP也無能為力。

DAST發(fā)現(xiàn)漏洞后會定位漏洞的URL,無法定位漏洞的具體代碼行數(shù)和產(chǎn)生漏洞的原因,需要比較長的時間來進(jìn)行漏洞定位和原因分析,這使得DAST不太適合在DevOps的開發(fā)環(huán)境中使用。

圖 2:DAST優(yōu)勢與劣勢

四、SAST

超過50%的安全漏洞是由錯誤的編碼產(chǎn)生的,開發(fā)人員一般安全開發(fā)意識和安全開發(fā)技能不足,更加關(guān)注業(yè)務(wù)功能的實(shí)現(xiàn)。想從源頭上治理漏洞就需要制定代碼檢測機(jī)制,SAST是一種在開發(fā)階段對源代碼進(jìn)行安全測試發(fā)現(xiàn)安全漏洞的測試方案。

1. 實(shí)現(xiàn)原理

圖 3:SAST原理

1) 首先通過調(diào)用語言的編譯器或者解釋器把前端的語言代碼(如JAVA,C/C 源代碼)轉(zhuǎn)換成一種中間代碼,將其源代碼之間的調(diào)用關(guān)系、執(zhí)行環(huán)境、上下文等分析清楚。

2)語義分析:分析程序中不安全的函數(shù),方法的使用的安全問題。

3)數(shù)據(jù)流分析:跟蹤,記錄并分析程序中的數(shù)據(jù)傳遞過程所產(chǎn)生的安全問題。

4)控制流分析:分析程序特定時間,狀態(tài)下執(zhí)行操作指令的安全問題。

5)配置分析:分析項目配置文件中的敏感信息和配置缺失的安全問題。

6)結(jié)構(gòu)分析:分析程序上下文環(huán)境,結(jié)構(gòu)中的安全問題。

7)結(jié)合2)-6)的結(jié)果,匹配所有規(guī)則庫中的漏洞特征,一旦發(fā)現(xiàn)漏洞就抓取出來。

8)最后形成包含詳細(xì)漏洞信息的漏洞檢測報告,包括漏洞的具體代碼行數(shù)以及漏洞修復(fù)的建議。

2. SAST優(yōu)劣勢分析

SAST需要從語義上理解程序的代碼、依賴關(guān)系、配置文件。優(yōu)勢是代碼具有高度可視性,能夠檢測更豐富的問題,包括漏洞及代碼規(guī)范等問題。測試對象比DAST豐富,除Web應(yīng)用程序之外還能夠檢測APP的漏洞,不需要用戶界面,可通過IDE插件形式與集成開發(fā)環(huán)境(如Eclipse、IntelliJ IDEA)結(jié)合,實(shí)時檢測代碼漏洞問題,漏洞發(fā)現(xiàn)更及時,修復(fù)成本更低。

另一方面SAST不僅需要區(qū)分不同的開發(fā)語言(PHP、C#、ASP、.NET、Java、Python等),還需要支持使用的Web程序框架,如果SAST工具不支持某個應(yīng)用程序的開發(fā)語言和框架,那么測試時就會遇到障礙。DAST支持測試任何語言和框架開發(fā)的HTTP/HTTPS應(yīng)用程序。

傳統(tǒng)的SAST掃描時間很慢,如果是用SAST去掃描代碼倉庫,需要數(shù)小時甚至數(shù)天才能完成,這在日益自動化的持續(xù)集成和持續(xù)交付(CI/CD)環(huán)境中效果不佳。

還有一點(diǎn)是SAST的誤報,業(yè)界商業(yè)級的SAST工具誤報率普遍在30%以上,誤報會降低工具的實(shí)用性,可能需要花費(fèi)更多的時間來清除誤報而不是修復(fù)漏洞。

SAST只對源代碼進(jìn)行檢測,而不會分析整個應(yīng)用程序,這迫使企業(yè)需要購買單獨(dú)的軟件組合分析工具(SCA),即使是SCA也只是識別公開的漏洞;開源、第三方API或框架中的未知漏洞超出了SAST和SCA的范圍。

圖 4:SAST優(yōu)勢與劣勢

五、IAST

IAST交互式應(yīng)用安全測試技術(shù)是最近幾年比較火熱的應(yīng)用安全測試新技術(shù),曾被Gartner咨詢公司列為網(wǎng)絡(luò)安全領(lǐng)域的Top 10技術(shù)之一。IAST融合了DAST和SAST的優(yōu)勢,漏洞檢出率極高、誤報率極低,同時可以定位到API接口和代碼片段。

1. 實(shí)現(xiàn)原理

IAST的實(shí)現(xiàn)模式較多,常見的有代理模式、VPN、流量鏡像、插樁模式,本文介紹最具代表性的2種模式,代理模式和插樁模式。

代理模式,在PC端瀏覽器或者移動端APP設(shè)置代理,通過代理拿到功能測試的流量,利用功能測試流量模擬多種漏洞檢測方式對被測服務(wù)器進(jìn)行安全測試。

插樁模式,插樁模式是在保證目標(biāo)程序原有邏輯完整的情況下,在特定的位置插入探針,在應(yīng)用程序運(yùn)行時,通過探針獲取請求、代碼數(shù)據(jù)流、代碼控制流等,基于請求、代碼、數(shù)據(jù)流、控制流綜合分析判斷漏洞。插樁模式具體實(shí)現(xiàn)有2種模式,Active 插樁和Passive 插樁。

1) 代理模式實(shí)現(xiàn)原理

圖 5:代理模式原理

a. 功能測試人員在瀏覽器或者APP中設(shè)置代理,將IAST設(shè)備地址填入;

b. 功能測試人員開始功能測試,測試流量經(jīng)過IAST設(shè)備,IAST設(shè)備將流量復(fù)制一份,并且改造成安全測試的流量;

c. IAST設(shè)備利用改造后的流量對被測業(yè)務(wù)發(fā)起安全測試,根據(jù)返回的數(shù)據(jù)包判斷漏洞信息。

插樁需要在服務(wù)器中部署Agent,不同的語言不同的容器要不同的Agent,這對有些用戶來說是不可接受的。而代理模式不需要服務(wù)器中部署Agent,只是測試人員要配置代理,安全測試會產(chǎn)生一定的臟數(shù)據(jù),漏洞的詳情無法定位到代碼片段,適合想用IAST技術(shù)又不接受在服務(wù)器中部署Agent的用戶使用。

2) Active插樁實(shí)現(xiàn)原理

圖 6:Active 插樁原理

a. 被測試服務(wù)器中安裝IAST插樁 Agent;

b. DAST Scanner發(fā)起掃描測試;

c. IAST插樁 Agent追蹤被測試應(yīng)用程序在掃描期間的反應(yīng)附加測試,覆蓋率和上下文,將有關(guān)信息發(fā)送給Management Server,Management Server展示安全測試結(jié)果。

Active 插樁模式需要在被測試應(yīng)用程序中部署插樁 Agent,使用時需要外部掃描器去觸發(fā)這個Agent。一個組件產(chǎn)生惡意攻擊流量,另一個組件在被測應(yīng)用程序中監(jiān)測應(yīng)用程序的反應(yīng),由此來進(jìn)行漏洞定位和降低誤報。

Active 插樁模式更像是一種改進(jìn)版的DAST技術(shù),目前最新的AWVS、AppScan已經(jīng)采用了Active 插樁模式。AWVS集成了“AcuSensor”模塊,通過在源代碼中部署傳感器來增強(qiáng)定期動態(tài)掃描。AcuSensor能夠在AWVS掃描期間檢查Web應(yīng)用程序執(zhí)行時的源代碼,在后端抓取應(yīng)用程序,提供100%爬行覆蓋率,查找并測試在黑盒掃描期間未發(fā)現(xiàn)的隱藏輸入。AppScan則是集成了“Glass Box”服務(wù)模塊,這使得AppScan支持 Web 2.0、JavaScript 和 AJAX 框架。

Active 插樁模式解決了傳統(tǒng)DAST漏報和無法精確定位漏洞位置的問題,需要先做掃描,掃描觸發(fā)漏洞需要一定的時間,而且掃描會對業(yè)務(wù)測試產(chǎn)生影響。在雙向HTTPS加密、CSRF Token頁面、防攻擊重放等場景下Active 插樁模式依然無法進(jìn)行安全測試。

3) Passive 插樁實(shí)現(xiàn)原理

圖 7:Passive 插樁原理

a. 被測試服務(wù)器中安裝插樁 Agent;

b. 插樁 Agent在應(yīng)用程序運(yùn)行時獲取請求和代碼數(shù)據(jù)流、代碼控制流;

c. 插樁Agent將獲取的信息發(fā)送給Management Sever,Management Sever展示安全測試結(jié)果。

Passive 插樁在程序運(yùn)行時監(jiān)視應(yīng)用并分析代碼,它不會主動對Web應(yīng)用程序執(zhí)行攻擊,而是純粹被動地分析檢測代碼。這實(shí)際上是一個巨大的優(yōu)勢,因?yàn)樗粫绊懲瑫r運(yùn)行的其他測試活動,并且只需要業(yè)務(wù)測試(手動或自動)來觸發(fā)安全測試,有測試流量過來就可以實(shí)時的進(jìn)行漏洞檢測。

插樁模式的關(guān)鍵是Agent,Agent需要根據(jù)不同語言進(jìn)行開發(fā),但是功能基本相同:

獲取請求數(shù)據(jù)和返回數(shù)據(jù);

代碼執(zhí)行中的參數(shù)傳遞;

數(shù)據(jù)庫查詢(如ODBC);

目錄查詢(如LDAP),文件系統(tǒng)權(quán)限;

監(jiān)聽內(nèi)存中特定的值,識別受污染的輸入;

第三方庫的使用;

對外部應(yīng)用程序和服務(wù)的調(diào)用;

特定代碼的執(zhí)行等。

2. IAST優(yōu)劣勢分析

IAST代理模式的優(yōu)劣勢,在上文已提到,這里不再贅述。

IAST插樁模式的技術(shù)基于請求、代碼、數(shù)據(jù)流、控制流綜合分析判斷漏洞,漏洞測試準(zhǔn)確性高,誤報率極低。由于IAST插樁模式可獲取更多的應(yīng)用程序信息,因此發(fā)現(xiàn)的安全漏洞既可定位到代碼行,還可以得到完整的請求和響應(yīng)信息,完整的數(shù)據(jù)流和堆棧信息,便于定位、修復(fù)和驗(yàn)證安全漏洞。支持測試AJAX頁面、CSRF Token頁面、驗(yàn)證碼頁面、API孤鏈、POST表單請求等環(huán)境。

IAST插樁模式在完成應(yīng)用程序功能測試的同時即可以實(shí)時完成安全測試,且不會受軟件復(fù)雜度的影響,適用于各種復(fù)雜度的軟件產(chǎn)品。不但可以檢測應(yīng)用程序本身的安全弱點(diǎn),還可以檢測應(yīng)用程序中依賴的第三方軟件的版本信息和包含的公開漏洞。整個過程無需安全專家介入,無需額外安全測試時間投入,不會對現(xiàn)有開發(fā)流程造成任何影響,符合敏捷開發(fā)和DevOps模式下軟件產(chǎn)品快速迭代、快速交付的要求。

IAST插樁模式的核心技術(shù)在于探針,探針需要根據(jù)不同的語言進(jìn)行開發(fā),它只能在具有虛擬運(yùn)行時環(huán)境的語言上執(zhí)行,例如Java,C#,Python和NodeJS。它不支持C,C 和Golang等語言。其次,由于agent與真實(shí)webserver集成,穩(wěn)定性非常重要,每次更新需要重啟webserver,部署成本較大。業(yè)務(wù)邏輯漏洞也是IAST插樁模式無法解決的問題。

圖 8:IAST插樁模式的優(yōu)劣勢

六、三種技術(shù)的應(yīng)用場景分析

上文分析了DAST、SAST、IAST三種技術(shù)的具體實(shí)現(xiàn)原理和各自的優(yōu)劣勢,技術(shù)本身沒有優(yōu)劣之分,不同的技術(shù)能夠解決不同場景下的問題,需要安全工程師能夠因地制宜地選擇對應(yīng)的技術(shù)解決對應(yīng)的問題。

圖 9:DAST、SAST、IAST之間的對比

DAST技術(shù)比較適合用于線上運(yùn)行環(huán)境的監(jiān)控,研發(fā)階段代碼檢測適合使用SAST技術(shù),QA階段適合使用IAST技術(shù)。

七、實(shí)際應(yīng)用

筆者所在的安全廠商已實(shí)現(xiàn)上述三大應(yīng)用安全測試技術(shù)的創(chuàng)新性落地。

軟件開發(fā)階段,與程序員對話的源碼安全審計主要基于SAST技術(shù)打造, SAST工具對用戶的困擾主要來自于誤報,通過數(shù)據(jù)流調(diào)用分析、變量關(guān)聯(lián)分析、機(jī)器學(xué)習(xí)等多重手段極大地降低了誤報率,減少工具對安全測試工作的困擾,改善用戶體驗(yàn),降低工具的使用成本。

軟件測試階段,基于IAST技術(shù)打造,支持代理、VPN、流量信使、流量鏡像、爬蟲、導(dǎo)入日志、Passive插樁共7種流量收集模式,真正結(jié)合了DAST、SAST、IAST三種技術(shù)的優(yōu)勢;漏洞檢測率極高,包括水平越權(quán)、垂直越權(quán)等標(biāo)準(zhǔn)IAST技術(shù)無法檢測的邏輯漏洞,誤報率幾乎為0;漏洞詳情直接定位請求、數(shù)據(jù)流、代碼片段,修復(fù)漏洞更容易;采用Passive 插樁技術(shù),無需重放請求,不會形成臟數(shù)據(jù),可覆蓋加密、防重放、簽名等任意場景;近實(shí)時檢測漏洞,漏洞檢測隨著應(yīng)用程序運(yùn)行實(shí)時進(jìn)行。

應(yīng)用上線運(yùn)營階段,采用DAST技術(shù)打造資產(chǎn)風(fēng)險監(jiān)控系統(tǒng),在大量企業(yè)客戶中被用來對線上業(yè)務(wù)環(huán)境進(jìn)行監(jiān)控。從攻擊者視角對企業(yè)進(jìn)行資產(chǎn)探測,全面發(fā)現(xiàn)企業(yè)的資產(chǎn)暴露面和應(yīng)用程序的漏洞,保障線上運(yùn)營環(huán)境的安全;并且,部署模式緊跟業(yè)務(wù)的使用模式,支持在互聯(lián)網(wǎng)環(huán)境、企業(yè)IDC、私有云、公有云、混合云等多種場景下部署使用。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多