β

SDL建设-三方依赖库扫描系统

Harries Blog™ 9 阅读

文章 综述

本文主要介绍 Dependency-Check 工具的 工作原理 和使用方法,并提供一个 开源 方案帮助 企业 建设 SDL 中的一环。

Dependency-Check简介

使用 " 存在已知 漏洞 的组件 " 已经成为 OWASP TOP 10 的漏洞之一了。所以,越来越有必要对上线前的项目做好三方依赖库的检测,寻找中已知的漏洞,降低上线后的 安全 风险。 Dependency-Check 就是这样的一款工具。他会分析 软件 构成,检测项目中依赖项的公开披露漏洞。 Dependency-Check 常用于扫描 java .NET 程序,另外还有些实验性的分析器,例如: python 、 ruby 、 php 以及 node js 等,这些作为实验性研究是因为他们的高误报率。如果你公司主要使用 c# , java 开发 程序,那这款工具作为项目上线前的漏洞扫描不乏是个好选择。

Dependency-Check 发行的版本主要有 jenkins 插件 、命令行工具、 maven 插件等,详解介绍可查看 https :// git hub.com/jeremylong/DependencyCheck ,以下是基于命令行工作模式的介绍。

工作原理

  1. Dependency-Check工作的方式是通过分析器对文件进行扫描搜集信息,搜集到的信息被叫做迹象。

  2. 这边共搜集3种迹象,分时是vendor(供应商),product( 产品 )和version(版本)。例如,jarAnalyzer将从jar文件包中的Mainfest、 pom .xml和包名进行信息搜集,然后把各种搜集到的源放到一个或者多个迹象表里。

  3. 通过搜集到的迹象和CPE条目(NVD、CVE 数据 索引 )进行匹配,分析器匹配到了就会给个标志发送到报告。

  4. Dependency-Check 目前不使用hash识别文件,因为第三方依赖从 源码 中的hash值构建通常不会匹配官方发布版本的hash。后续版本中可能会增加一些hash来匹配一些常用的第三方库,例如Spring, Struts等。

常用命令

详细 参数 可使用 ./dependency-check.sh -h 查看,以下列出一些最常用的参数:

  • ./dependency-check.sh -n –project "test" –scan "WEB-INF/ lib /" -o output.html

  • &m; id dot; -n 不更新漏洞库,默认4小时自动拉取

  • · –project 项目名字

  • · –scan 扫描的路径或文件(可以扫 目录 ,也可以直接扫压缩文件, zip ,war,tgz等)

  • /dependency-check.sh -n –project "test" –scan "strusts2.war" –log logfile

  • · 扫描压缩文件

  • · –log 日志记录

  • ./dependency-check.sh – update only

  • · –updateonly 只更新 数据库 ,不做扫描

报告解读

部分报告截图:

SDL建设-三方依赖库扫描系统

SDL建设-三方依赖库扫描系统

关于扫描的准确性,笔者搜集 测试 了 java 三方依赖库。得到的结论是 准确率高、误报率低、 覆盖率 ,适合在实际业务中使用该工具进行上线前的漏洞扫描( java 三方依赖库)。

报告中一些重要字段的含义:

·  Dependency – 被扫描的第三依赖库名字

·  CPE – 所有被识别出来的 CPE.

·  GAV – Maven 组 , Artifact, 版本 (GAV).

·  Highest Severity – 所有关联的 cve 的最高漏洞等级

·  CVE Count – 关联的 cve 个数

·  CPE Confidence – dependency-check 正确识别 cpe 的程度

·  Evidence Count – 识别 CPE 的数据个数

使用场景

在企业中实际应用的场景:

1、项目很多,迭代很块:可以考虑结合 代码 管理 系统,每次新发布前,自动提交进行扫描

2、项目迭代不快,或者只想监控重点项目:可让业务提单,安全人员进行扫描后提供结果和修复建议给到业务方。

(注意点:报告是英文报告,不过很直观,可以根据上面的介绍写个说明文档供业务参考;报告没有修复参考,一般的修复方案是推荐有漏洞的组件更新到最新版。)

根据实际业务场景的 需求 ,笔者把这个 Dependency-Check 二进制版本封装成 web 接口,可供自己和业务方调用。项目地址: http s://github.com/he1m4n6a/dcweb 。项目中还有很多地方可以完善,后续根据需求会补充改造。

例如:

1 、添加接口鉴权

2 、 解析 报告并输出中文漏洞报告到邮件

原文

https://www.secpulse.com/archives/73373.html

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。 PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处: Harries Blog™ » SDL建设-三方依赖库扫描系统

作者:Harries Blog™
追心中的海,逐世界的梦
原文地址:SDL建设-三方依赖库扫描系统, 感谢原作者分享。

发表评论