从了解洞态 IAST 到加入开源社区

14 篇文章 1 订阅
10 篇文章 0 订阅

引言

作为公司信息安全部的成员,确保每一条业务线的应用安全,是我工作的一部份,那么如何完全这项使命呢?我会在接下来的篇幅中一一说明。

应用安全测试
目前常见的应用安全目前常见的应用安全测试有三种: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-sdkfrom dongtai_sdk.

DongTai import DongTai

dongTaiSdk = DongTai(“config.json”)

具体可参看项目主页:

DongTai-SDK-Python

https://github.com/HXSecurity/DongTai-SDK-Python

本文源自于 FreeBuf 作者 SpenserCai,很感谢该作者对洞态 IAST 的关注与支持。

关于洞态 IAST

洞态 IAST 是全球首个开源 IAST ,于2021年9月1日正式开源发布。洞态 IAST 专注于 DevSecOps,具备高检出率、低误报率、无脏数据的特点,帮助企业在应用上线前发现并解决安全风险。自开源发布以来,洞态 IAST 备受开源社区人员和企业的关注,包括工商银行、去哪儿、知乎、同程旅行、轻松筹等在内的上百家企业都已成为洞态用户。

官网地址:http://dongtai.io

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值