IAST 实践利用洞态做开源组件的安全治理

10 篇文章 0 订阅

背景

某大型集团在使用洞态一段时间后,发现其配套使用的组件管理的漏洞知识库内容存在滞后性和部分不准确性。倘若将这些内容引入到工单系统中作为安全组件整改任务,那么提供给开发部门的漏洞描述、漏洞危害和修复建议便会显得没有说服力。因此需要寻找实时、有效且免费的安全漏洞知识库的信息来源。

解决方案

目前业内开源组件的安全知识库的来源,主要有两种:

  • 人工维护的商用漏洞数据库
  • NVD 免费漏洞数据库

由于使用洞态提供的组件信息,最好还是集成免费信息来源。由于 dependency check 工具是通过调用 NVD 数据进行组件安全漏洞识别,因此一开始是想基于其扫描原理进行二次开发,从而配合洞态组件信息进行组件检测,但其工作量太高。

在这里插入图片描述

于是直接用 python 本地调取NVD 数据进行识别。

def nvd_download():
    for i  in range(2002,2022):
        url = "https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-{}.json.gz".format(i)
        r = requests.get(url=url)
        pathname = os.path.join("/opt/vul",url.split("/")[-1])
        with open(pathname,"wb") as f:
            f.write(r.content)
            f.close()

但是在实际使用时,我并不知道如何去构造 CPE 语句进行查询,因此这种方案暂时被放弃了。

在这里插入图片描述

此后,偶然发现在 maven 仓库中居然有每个版本的漏洞信息。那么我是否可以根据自身项目与其做对比,获取安全漏洞信息?

在这里插入图片描述

实际落地

当我想通过自动化方式去获取信息时,发现会触发 cloudflare 的五秒盾,进入人机识别。

在这里插入图片描述

后面花时间研究了一下绕过 CF 的手段——使用 selemiun + chrome 有界面请求一次,关闭浏览器,再请求一次,关闭浏览器,如此循环,即可绕过(外网 IP 访问很少会触发拦截)。

洞态开源组件 API 提供的组件名字内容如下:

components = [
'log4j-1.2.16.jar',
'log4j-1.2.17.jar',
'log4j-ecs-layout-0.1.3.jar',
'maven:com.fasterxml.jackson.core:jackson-databind:2.8.4:',
'maven:com.fasterxml.jackson.core:jackson-databind:2.9.10.6:',
'maven:mysql:mysql-connector-java:5.1.34:',
'maven:org.springframework.amqp:spring-amqp:1.1.3.RELEASE:',
'maven:org.springframework.amqp:spring-amqp:1.7.5.RELEASE:',
'maven:org.springframework.amqp:spring-rabbit:1.1.3.RELEASE:',
'maven:org.springframework.integration:spring-integration-ftp:4.3.7.RELEASE:',
'maven:org.springframework.integration:spring-integration-kafka:2.2.0.RELEASE:',
'maven:org.springframework.kafka:spring-kafka:1.2.3.RELEASE:',
'maven:org.springframework.retry:spring-retry:1.1.3.RELEASE:',
'maven:org.springframework.retry:spring-retry:1.2.1.RELEASE:',
'maven:org.springframework:spring-aop:4.3.29.RELEASE:',
'mybatis-3.1.1.jar',
'mybatis-3.2.3.jar',
'mybatis-spring-1.2.0.jar',
'xstream-1.3.1.jar',
'xstream-1.4.14.jar',
'zkclient-0.1.jar',
'zookeeper-3.3.6.jar',
'abc-SNAPSHOT.jar'
​
]

我将其划分为三种类型:

自带 maven 字符:这种类型可以直接拆分,作为参数内容可以传参;
SNAPSHOT:这种类型定义为业务系统打包生成,忽略;
其他:这种类型要放到 maven 中搜索,找到其地址。

for c in components:
    c = c.replace(".jar",'')
    if  "maven:" in c:
        print(c+":  "+str(maven_component(c)))
    elif "SNAPSHOT" in c:
        pass
    else:
        print(c+":  "+str(search_component(c)))

maven 提供的安全漏洞信息分为 direct(直接影响)和dependencies(当前组件的依赖组件中存在的漏洞),我们关注直接影响,忽略被受影响。

在这里插入图片描述

运行结果如下,包含四个字段内容:组件名字、CVE 列表(cvelist)、安全版本(safe_version)、组件名字组织(org)。

log4j-1.2.16:  ([], '', '')
log4j-1.2.17:  ([], '', '')
log4j-ecs-layout-0.1.3:  ([], '', '')
maven:com.fasterxml.jackson.core:jackson-databind:2.8.4::  (['CVE-2021-20190', 'CVE-2020-9548', 'CVE-2020-9547', 'CVE-2020-8840', 'CVE-2020-36188', 'CVE-2020-36186', 'CVE-2020-36184', 'CVE-2020-36182', 'CVE-2020-36180', 'CVE-2020-35491', 'CVE-2020-25649', 'CVE-2020-24616', 'CVE-2019-20330', 'CVE-2019-17267', 'CVE-2019-16942', 'CVE-2019-14892', 'CVE-2019-14439', 'CVE-2019-12814', 'CVE-2019-12086', 'CVE-2018-5968', 'CVE-2018-19361', 'CVE-2018-14721', 'CVE-2018-14719', 'CVE-2018-12023', 'CVE-2018-12022', 'CVE-2017-7525', 'CVE-2017-15095'], '2.10.5.1', 'com.fasterxml.jackson.core')
maven:com.fasterxml.jackson.core:jackson-databind:2.9.10.6::  (['CVE-2021-20190', 'CVE-2020-36189', 'CVE-2020-36188', 'CVE-2020-36187', 'CVE-2020-36185', 'CVE-2020-36183', 'CVE-2020-36181', 'CVE-2020-36179', 'CVE-2020-35490'], '2.10.5.1', 'com.fasterxml.jackson.core')
maven:mysql:mysql-connector-java:5.1.34::  (['CVE-2019-2692'], '8.0.16', 'mysql')
maven:org.springframework.amqp:spring-amqp:1.1.3.RELEASE::  ([], '', 'org.springframework.amqp')
maven:org.springframework.amqp:spring-amqp:1.7.5.RELEASE::  ([], '', 'org.springframework.amqp')
maven:org.springframework.amqp:spring-rabbit:1.1.3.RELEASE::  ([], '', 'org.springframework.amqp')
maven:org.springframework.integration:spring-integration-ftp:4.3.7.RELEASE::  ([], '', 'org.springframework.integration')
maven:org.springframework.integration:spring-integration-kafka:2.2.0.RELEASE::  ([], '', 'org.springframework.integration')
maven:org.springframework.kafka:spring-kafka:1.2.3.RELEASE::  ([], '', 'org.springframework.kafka')
maven:org.springframework.retry:spring-retry:1.1.3.RELEASE::  ([], '', 'org.springframework.retry')
maven:org.springframework.retry:spring-retry:1.2.1.RELEASE::  ([], '', 'org.springframework.retry')

​最后将 CVE 放到CVE search 中查找到漏洞描述和漏洞评分。

在这里插入图片描述

关于洞态 IAST

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值