引言
作为公司信息安全部的成员,确保每一条业务线的应用安全,是我工作的一部份,那么如何完全这项使命呢?我会在接下来的篇幅中一一说明。
应用安全测试
目前常见的应用安全测试有三种SAST(静态代码审计),DAST(黑盒安全审计)、IAST(交互式应用安全测试)。
SAST
我们已经自研了一套主要业务线的SAST平台,使用的过程中,有不错的漏洞检出率,但是受限于编程语言,以及存在一定的误报率,需要消耗运营成本去审核检出的漏洞。
DAST
黑盒安全测试同样也在我们的日常安全运营中,我们对于一些扫描器实现了自动化平台化的扫描,但是扫描器可以扫出的漏洞往往有限。
IAST
IAST 相当于 DAST 和 SAST 的组合,是一种相互关联的运行时安全检测技术。 它通过使用部署在 Web 应用程序上的 Agent 来监控运行时发送的流量并分析流量流以实时识别安全漏洞,IAST 提供更高的测试准确性,并详细的标注漏洞在应用程序代码中的确切位置,从而帮助开发人员达到实时修复。
洞态IAST
了解到洞态IAST还是从我的同事@null-302那儿,当时给我的第一感觉是,这么牛x的项目居然完全开源了。以下对现有功能进行大致说明,不足的地方还望大家指正。
通用漏洞扫描
洞态目前通过Agent+Server的方式,支持Java、Python、GoLang,Php等语言开发的应用进行交互式漏洞扫描,大致的原理呢就是通过Hook技术结合污点传播,对程序中所有方法的参数、数据流转进行分析从而识别出漏洞,这种方式对漏洞的检出是不会存在误报的,由此就可以省去漏洞运营的成本。
举例一个简单的例子(python3 + Flask):
@app.route("/test",methods=["POST"]) def Test(): data = json.loads(request.get_data()) argv1 = data["argv1"] exec(argv1)
对于上述代码可以很明显的看到这是一个存在”代码执行漏洞“的接口,洞态的检测原理则是通过对Flask中的request下所有的方法以及exec、eval等可以执行命令的方法进行监控,通过污点传播的方式可以检测出当参数从request请求传入,流入命令执行函数是则判定存在代码执行漏洞。
组件漏洞识别
对于组件的漏洞识别这一点也是洞态的亮点之一,可以很好的实现对项目组件安全性的监控,改模块本身具有组件漏洞检测的能力,同时对于一些1day的组件漏洞,可以结合情报进行识别、告警。
美中不足的是目前只支持Java应用。
敏感信息泄露
在最近的版本更新中添加了敏感信息泄露的检测功能,通过对应用的Request、Response进行正则匹配实现了敏感信息进出站的检测,同时支持用户自定义正则检测敏感性息,在数据安全法落地的今天,显得非常重要了。后面会单独写一篇文章来分享该模块的使用心得体会。PS:默认正则有待优化。
全流量及调用链
官方定义这个功能叫搜索,我更愿意称其为全流量及调用链,如图所示,这个模块可以获取到应用完整流量,如果有漏洞则会标记。同时也能获取程序内部的完整调用关系,如果存在漏洞则会标记是那一步存在漏洞。由于篇幅有限在这篇文章中就不详细描述使用场景了。
加入开源社区
在使用的过程中,我们也遇到了一些问题,bug,洞态IAST团队在很快的时间内进行了修复,并且催促我们尽快测试,要知道在开源项目中能有这么快的bug修复速度,并且反向催促使用者尽快测试,是我闻所未闻的。
同时,需要将一个产品落地到实际场景中,至少在我看来,集成是必不可少的。洞态团队对于项目精神,加上,我们现有的需求,在这两个前提条件下,让我有了加入开源社区的想法。
洞态本身有着良好的API接口,可是需要完成集成,如果仅通过API就会出现如下不怎么好维护也不怎么优雅的代码:
data = { "project_id":101, .... } repData = requests.post("http://xx.xxx.xx.xxx/api/v1/project/version/add",data=data,headers=xxxx) repData = json.load(repData.text) if repData["status"] == 201: version_id = repData["data"]["version_id"] ....
每一次请求接口的时候都要对状态码做各种判断,都要通过json的key的方式(repData["xx"]["yy"])去获取数据,同时每次都要去看文档才能知道要获取的数据是什么如何请求等等。
于是我便有了开发SDK的想法,洞态团队也非常欢迎我加入开源社区,于是就有了python版的洞态SDK,对于接口进行了封装,能以对象方法的形式请求,同时也能够直接通过对象属性的方式获取数据(IDE本身会自动提示,使用过程中几乎不用看文档)
pip3 install dongtai-sdk from dongtai_sdk.DongTai import DongTai dongTaiSdk = DongTai("config.json")
具体可参看项目主页
DongTai-SDK-Python
https://github.com/HXSecurity/DongTai-SDK-Python