背景

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

解决方案

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

  • 人工维护的商用漏洞数据库
  • 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:passelse: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

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

  1. 精选用户故事|洞态在聚水潭的误报率几乎为0,如何做到?

    亮点锦集: 我个人在实际使用过程中体验到,对于像命令执行和sql注入这类漏洞,洞态能够做到百分百的检测. --Spenser 除了之前关于敏感信息检测这一块有误报,其它基本没有.不过这块儿经过优化之后 ...

  2. 洞态IAST在某互联网甲方的落地实践

    IAST作为开展SDL中黑白盒测试的有效补充,还是很有必要去了解使用的.笔者为了完善公司的SDL流程,调研了开源的IAST产品进行测试和内部推广 刚开始,笔者测试百度OpenRASP的IAST功能(主 ...

  3. 开源组件漏洞检查工具实践分析

    文章目录 Murphysec开源组件漏洞检查工具 介绍 检测原理 JetBrains IDE插件MurphySec Code Scan工具使用 介绍 支持功能 插件安装 插件配置 一键扫描 一键修复功 ...

  4. 开源情报分析(OSINT)CTF社工类2万字题详细教程,请不要利用本文章做不道德的事,后果概不负责

    简介 现在国内外最新的ctf比赛都有这个项目了,列如给你一个照片找地址或者人名,给你一个名字找他的社交账号什么的,考验选手的信息收集与社工能力,这篇文章对这类题型做一个基础的总结,以后遇到这种题型就知 ...

  5. jsx怎么往js里传参数_实践Vue 3.0做JSX(TSX)风格的组件开发

    作者:莫夭 转发链接:https://zhuanlan.zhihu.com/p/102668383 前言 我日常工作都是使用React来做开发,但是我对React一直不是很满意,特别是在推出React ...

  6. 洞态IAST自动检测S2-001漏洞

    一.使用Dongtai-IAST检测S2-001漏洞 1. 启动在线靶场 登陆在线靶场:http://labs.iast.huoxian.cn:8081,启动`S2-001`环境,等待环境启动之后,点 ...

  7. 洞态IAST自动检测S2-007漏洞

    1. 启动在线靶场 登陆 在线靶场,启动S2-007环境,等待环境启动之后,点击访问靶场按钮即可前往靶场环境.该环境来源于vulhub和vulapps 2. 查看检测结果 登陆洞态IAST官方网站,查 ...

  8. 洞态 IAST v1.1.4 新版本来袭,DevSecOps 更进一步

    导语 洞态 IAST 自开源发布以来,一直保持着双周更新一版的节奏不断迭代.项目开启之初,社区小伙伴们参与的积极性很高,为洞态提出了许多建设性意见,也贡献了很多代码,很感谢洞态伙伴们的付出. Dong ...

  9. 洞态IAST Python-agent 内测版 测试

    一.背景 洞态 IAST 首发 Python-agent 尝鲜,验证 Agent 针对路径穿越漏洞的检测能力. 洞态 IAST 的检测方式是扫描运行中的应用程序,将扫描到的漏洞信息发送到云端进行检测处 ...

  10. 用开源组件jcaptcha做jsp彩色验证码

    用开源组件jcaptcha做jsp彩色验证码 key words: jsp验证码 jcaptcha 原文参考 这里 安装 Add jcaptcha-all.jar (provided in bin-d ...

最新文章

  1. 通过mongodb客户端samus代码研究解决问题
  2. python常用指令速查
  3. 运行caffe识别数字的模型mnist
  4. 神奇的事情,不同进程监听同一个端口,居然都成功
  5. java程序员经常使用的Intellij Idea插件
  6. python中什么是关键字参数_如何使用python语言中函数的关键字参数的用法
  7. python 字符串操作速度_强者一出,谁与争锋?与Python相比,C+的运行速度究竟有多快?|python|编程语言|字符串|示例|算法...
  8. 计算机组装与维修考试试卷,计算机组装与维修期末考试试卷..doc
  9. c语言自己建个题库随机出题,自己建个题库随机出题 让学习效率大大提高
  10. AAAI2020-一种生成对抗网络的蒸馏方法(Distilling portable Generative Adversarial Networks for Image Translation)
  11. 微信小程序之轮播图(附带图片)
  12. chrome调试工具使用技巧汇总
  13. java获取response_java response响应设置 java怎么获取response
  14. 写代码时切换insert键,用来解决光标小黑块问题
  15. CSS Gird布局用法
  16. 多多自走棋的各个套路简单分析
  17. 【简短测评】在线音乐播放器,哪一款适合写代码时候使用
  18. Word毕业论文排版经验
  19. 2019CSP-J组题目-加工零件
  20. HAC集群添加新节点

热门文章

  1. 如何将数据转换为时间序列数据
  2. xps15u盘装linux,戴尔XPS 15 9575笔记本安装win10系统的操作教程
  3. 基于django的实验室网站管理平台设计与实现(二)
  4. win10下的MyEclipse2017 ci7 破解教程+全套资源+失败处理
  5. 北京林业大学本科毕业论文答辩和论文选题PPT模板
  6. Android开发之NDK开发之生成so库基础入门
  7. leetcode 刷题录
  8. 打印机如何手动正反面Mac设置黑白打印
  9. java digester_Apache Commons Digester 一 (基础内容、核心API)
  10. 递归:合并两个有序链表