您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關IAST原理分析以及在SDL中的應用是怎樣的,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
一、我為什么要分析IAST
最近在實施SDL項目想改進下自動化掃描的方式提高掃描的準確性,鑒于已經有相對成型的IAST產品于是就想分析下IAST的原理。互聯網上對RASP分析文章比較多,但是對于IAST的原理分析實在很少。之前采用的是代理模式進行黑盒掃描,比如常用的AWVS,相信大家都有體會黑盒誤報率非常高,在實施SDL過程中就需要投入大量人力去驗證漏洞。IAST的好處就是能實現掃描漏洞0誤報。要分析IAST就少不了要分析RASP原理,鑒于RASP的原理分析已經有很多文章了,為了文章的連貫性我會在另外一篇文章中再簡單介紹下。
二、IAST掃描效果
這里測試2個正常的url,通過IAST和AWVS進行掃描。其他的掃描大家可以自行測試。
http://10.57.131.36:8080/vulns/005-file-write.jsp?filename=123.txt&filedata=some-report-data
AWVS掃描結果,識別不出來是漏洞。
IAST識別出來是任意寫文件漏洞
http://10.57.131.36:8080/vulns/004-command-1.jsp?cmd=”openraspcmd”
AWVS掃描出來一大推誤報
IAST識別出來是命令執行漏洞
這里簡單介紹下掃描區別為什么這么大,因為黑盒主要是通過構造payload請求分析請求response來判斷是否為漏洞,比如對于盲注的命令執行漏洞,由于正常請求和帶payload的請求響應的結果差不多,所以黑盒也就無法判斷是否為漏洞了。那么IAST是如何判斷的呢?接著往下看。
三、IAST原理分析
IAST架構圖:
掃描模塊包括三個模塊:預處理模塊(Preprocessor)、掃描模塊(Scanner)、監控模塊(Monitor)
預處理模塊即圖中HTTPServer部分,用于接收agent插件的http請求,處理、存儲、分發http請求信息
掃描模塊用于運行掃描插件,執行漏洞掃描邏輯
監控模塊用于定期獲取其他模塊的運行時信息,調整參數,提供控制臺的HTTP服務等
rasp上需要安裝iast插件,iast掃描器要配合iast插件使用。
正如所有的程序都一樣有個入口點。iast的入口點是run 然后調用start函數。我們從入口開始一步步往下走。
啟動的時候會去讀配置文件
然后會判斷初始化一些信息,比如python大于3.7 ,數據庫表初始化。
測試是否可以連接云控
通過pid判斷iast的進程是否開啟
這里可以看到即將啟動了Preprocessor、Monitor以及n多個掃描模塊。
接著先開始啟動preprocessor和monitor模塊
所有模塊啟動都依賴基礎模塊
BaseModule基礎類,所有module繼承自此類
斷點進入到preprocessor模塊
tornado 是一個可以處理http請求的框架
開啟httpserver服務用于接收agent插件的http請求,處理、存儲、分發http請求信息
加載監控模塊,用于監控預處理模塊、各個掃描模塊、監控模塊
啟動監控臺 端口18664
這個就是IAST掃描的監控后臺
循環檢測各個模塊是否存活,如果有模塊沒存活就結束掉結束其他所有模塊。
開始加載掃描模塊
掃描初始化所有掃描插件
通過動態加載模塊遍歷加載所有掃描插件 plugin_module = __import__(plugin_import_path, fromlist=[plugin_name])
加載完各個模塊后,就等著接收掃描請求了。發起正常請求, httpserver獲取到rasp agent發過來的原始請求。
這是一個正常的xml請求
http://10.57.131.36:8080/vulns/007-xxe.jsp?data=<?xml version="1.0"encoding="UTF-8"?> <note> <to>Tovde</to><from>Jani</from> <heading>Reminder</heading><body>Don't forget me this weekend!</body> </note>
這里接收的來自rasp傳給iast的原始請求,這里hook_info為空,因為是正常請求還未觸發執行函數。
通過日志分析也是一樣的。幾處標紅的地方。1、用戶發送正常請求到raspagent所在的服務器,2、rasp的底層http將流量hook下來發送給iast3、iast加入惡意payload發送到rasp 4、rasp上的iast插件將hook信息返回給iast,iast判斷是否存在漏洞
遍歷http請求中所有的參數,header、body、 get 里面的參數,加上payload。
這里與黑盒還有個區別就是不用太多的payload,只要一個payload,能判斷返回的信息有hook_info即可判斷是否有漏洞。
遍歷payload發起請求
檢查漏洞是否觸發
對比hook信息的hook_type是否為xxe以及entity是否是IAST發出去的payload既可以判斷是否存在漏洞。
四、IAST在SDL中的應用
SDL大致有這么幾個階段,需求評審、開發、測試、發布、上線。每個階段對應的重要的安全活動有,威脅建模、代碼掃描、自動化安全測試、CICD發布攔截、上線依賴漏洞識別和威脅情報收集。
根據我實施SDL的經驗來看,需求評審階段最重要的是出具安全需求文檔,生成的這個安全需求文檔是純粹的指導性意義,沒有任何可以自動檢查的手段,容易流于表面。開發階段采用代碼掃描即是SAST,SAST最大的問題就是誤報和漏報同樣突出。一個系統,有5個漏洞,SAST掃描一下可能報告100個漏洞,其中2個是真的漏洞98個是誤報,還需要投入大量人力來排查。測試階段通常采用自動化掃描,正如文章開始介紹的IAST與黑盒掃描的區別,黑盒掃描誤報率太高也無需要花費大量人力去驗證漏洞,通過部署IAST產品,QA完成本職工作的質量測試時,IAST系統自動完成一份安全報告,而且還能保證安全測試的準確性從而大量減少人力成本,我覺得IAST在SDL中是個大大的加分項。
看完上述內容,你們對IAST原理分析以及在SDL中的應用是怎樣的有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。