光速下班,用IAST挖CNVD通用漏洞
什么是IAST
IAST是交互式應用程序安全測試(Interactive Application Security Testing),是一個在應用和API中自動化識別和診斷軟件漏洞的技術。通過插樁技術(Instrumented)收集安全信息,持續地從內部運行的代碼中發現其安全及邏輯問題,提供實時的報警展示。在整個軟件開發生命周期中,可以在開發與測試階段中使用IAST工具。
由于IAST 是一種應用程序運行時的漏洞檢測技術,所以它具備了 DAST 中檢測結果準確的特征;此外,IAST 采集到的數據在方法內部的流動后,通過污點跟蹤算法來進行漏洞檢測,用算法來進行漏洞檢測,所以檢測結果也具備了 SAST 中全面性的特征。
對比DAST優點是能發現更多潛在的漏洞,對比SAST優點是漏洞的準確率更高。
這里使用了洞態 IAST進行漏洞發現,洞態 IAST是一個完全開源的 IAST 項目,它使用應用程序運行時數據流進行分析從而識別可被利用的安全漏洞,再按風險優先級的提供已驗證漏洞列表功能,協助開發人員實時的代碼修復。
如何使用IAST
這里使用了一個tomcat部署的war包系統,首先根據洞態IAST里的幫助文檔對tomcat進行插樁,在tomcat的catalina.sh中增加javaagent的配置。

之后啟動tomcat,查看agent是否正常上線。

接著在應用內胡亂點擊,對所有功能進行觸發,可以看到觸發功能后有多個漏洞已經檢出,接下來就是需要對漏洞進行分析,驗證是否是真實漏洞。

漏洞分析
這里挑選一個漏洞進行實際分析。

首先研究一下污點流圖,可以看到數據污點值是從222/333/和xxx.doc進來的,即這個是source點,通過一系列的污點傳播后在FileUtil文件中執行,即該點為sink點。


再看一下請求信息,通過請求信息找一下代碼入口,入口是在DocController.java的deleteDoc方法中。

503行創建doc對象。

529行調用deleteDoc,跟入deleteDoc函數。


繼續跟入deleteDoc_FSM函數,在4139行中調用deleteRealDoc進行文件刪除,繼續跟入。

deleteRealDoc中直接對原始請求參數進行拼接,完成文件刪除,觸發漏洞。

這里再安利一下污點流圖的好處,通過展開污點來源方法,可以很清晰的看到數據的流轉過程,這里能看到標紅的就是我們一開始傳入的污點數據,黑色是代碼中的其他數據,即安全數據,通過字段的拼接最后在危險方法處執行。

通過數據流圖也可以初步判斷漏洞是否存在,假如通過修改傳入的污點值可以在最后危險函數處進行漏洞觸發,即可認為是存在漏洞的。
下班
最后看一下本次的收獲,四個cnvd原創漏洞,血賺,下班!
