SAP发布了Vulnerability Assessment Tool的源代码,这是一个软件组合分析(SCA)工具,已经在内部测试了两年,对600多个项目进行了20,000次扫描。

Vulnerability Assessment Tool侧重于检测脆弱的组件,如OWASP-Top 10 2017 A9所述的那些。这个工具会扫描软件包中的直接依赖项和间接依赖项,然后将每个依赖项与已知源(如国家漏洞数据库或CVE列表)进行比较,确定每个软件包是否存在已知的漏洞。在开发过程中,这些知识可以告诉开发人员何时应该升级某些组件。在运营期间,当发现新的漏洞时,可以使用这些信息来定位需要采取行动的应用程序。

2017年,Equifax未能对Apache Struts及时打上CVE-2017-9805补丁导致数据泄露,自从这次事件之后,SCA就成了软件行业的关键一环。这次数据泄露事件总共丢失了1.43亿条记录,预计总损失超过6亿美元。Apache软件基金会先前发布了“Apache Struts有关Equifax数据泄露的声明”,其中就提到了一些Vulnerability Assessment Tool需要解决的问题,例如:

了解软件产品中使用了哪些支持框架和库,以及它们的版本,并跟踪影响这些产品和版本的安全公告。

建立一个流程,以便在需要更新支持框架或库时可以快速推出软件产品的安全补丁。最好是以小时或几天为单位,而不是几周或几个月。我们所知道的大多数漏洞都是由于没有更新软件组件造成的,而这些组件在数月甚至数年内都是已知的易受攻击源。

SAP的新工具不仅仅是列出文件,它还会执行一定级别的静态代码安全性测试(SAST),以评估每个组件的使用情况。这是为了在可能存在脆弱但不在使用中的组件的情况下最小化误报。例如,一个工具将JRE本身标记为容易受到applet漏洞攻击,比如CVE-2016-0636,但JRE主要用于服务器端,applet从未被使用。

很多组织都会执行静态代码分析,作为在发布前检测代码级别漏洞的安全措施。具体来说,PCI安全软件标准的8.4.b章节和NIST 800-53的SA-4章节提到了代码审查,以及其他分析代码的检测机制,比如二进制分析。另一个选项是通过集成应用程序安全性测试(IAST)持续监控应用程序行为。

项目文档解释了安全测试静态分析领域的几个限制。具体来说,它提到了对非静态信息(如Java 9的多JAR)缺少支持。这个Java特性提供具有相同名称空间的多个类文件,JRE会在运行时选择适当的类和行为。在静态上下文中,如果没有运行时,有关此决策的信息将会丢失,因此分析程序必须选择所有路径,或者默认选择主类位置。SAP的工具选择了后者,并为Java提供了一个类似于IAST的动态工具,以弥补静态安全分析的不足,并检测哪些文件被使用过。

SAP Vulnerability Assessment Tool发布在GitHub上,由Henrik Plate、Serena E. Pontona、Antonio Sabetta、Cedric Dangremont和Alessandro Pezze负责维护。

查看英文原文:SAP Open Sources Java SCA Tool

SAP开源Java SCA工具,提供静态代码安全性测试功能相关推荐

  1. Arthas - 开源 Java 诊断工具

    转载自  Arthas使用 Authas - 开源的java诊断工具 下载安装 authas是一个jar包,可以直接下载后运行 wget https://alibaba.github.io/artha ...

  2. 「技术工具」阿里开源Java在线诊断工具 Arthas 进阶教程

    Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 本教程会以一个普通的Spring Boot应用为例,演示Arthas命令的详细用法. Github: https://githu ...

  3. TuGraph开源JAVA客户端工具TuGraph-OGM,无缝对接JAVA开发生态

    (预计阅读时间:7分钟) TuGraph 图数据库提供了 JAVA.C++.Python 等多种语言的 SDK 支持,方便客户在各种场景下使用.用户使用 SDK 向TuGraph服务器发送Cypher ...

  4. 免费开源JAVA报表工具对比 BIRT报表VS润乾报表之初体验

    前一段时间,被导师安排对报表开发工具做调研,之后就一度泡在各大博客.论坛里,尽可能全面的搜集了几款报表工具的优缺点,攒成了<java报表工具报表软件选型经验总结分享>.不过大多都是直接抄的 ...

  5. Java基础-day08-static·static静态代码块·final 关键字·多态·汽车设计综合案例·异常

    day09 1.static 是java中的一个关键字 用于修饰成员(成员变量和成员) 1.static是一个关键字 2.static可以修饰成员变量和方法,被修饰的资源就是静态资源 3.静态资源优先 ...

  6. Java中的static静态代码块

    一.与静态方法的比较 一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要 ...

  7. java加载类时静态代码块、构造代码块、构造方法执行顺序

    构造代码块作用:https://blog.csdn.net/hspingcc/article/details/54893853 package com.spring.partise;class A{A ...

  8. 配置Eclipse支持java和xml文件的代码补全功能

    本文介绍如何配置Eclipse,使得在编写代码时无论是*.java还是*.xml文件都能够通过使用ALT+/快捷键实现代码不全的功能. 本文实验环境为:Windows 7 + Eclipse 一.配置 ...

  9. 开源 java CMS - FreeCMS2.6 静态化管理

    2019独角兽企业重金招聘Python工程师标准>>> java 开源论坛系统http://javabbs.javaz.cn 项目地址:http://www.freeteam.cn/ ...

最新文章

  1. WCF中服务继承多个契约的使用
  2. CentOS查看主板型号、CPU、显卡、硬盘等信息
  3. mysql数据库表的连接查询_mysql数据库多表连接查询问题
  4. [UWP小白日记-14]正则表达式
  5. Android studio删除sdk的方法(图文教程)
  6. 【转】ABP源码分析十一:Timing
  7. 别用Excel做数据可视化了!这款报表工具不比它香100倍?
  8. 华为云AI斩获2019数博会“黑科技”等四大奖项
  9. navicat的字符集和排序规则
  10. WordPress Platinum SEO插件跨站脚本漏洞
  11. Python源码学习笔记:Python万物皆对象
  12. SWI-Prolog的下载与使用
  13. 嵌入式开发培训靠谱吗,嵌入式开发培训怎么样?
  14. Could not load file or assembly 'XXXXXXXX' or one of its dependencies. 试图加载格式不正确的程
  15. 测试期货系统的软件,期货交易系统测试怎么做?不会软件执行一样可以!
  16. d3.js学习笔记(5)drag拖拽操作数据
  17. 通过rgb值判断颜色深浅
  18. 驱动开发:Win10内核枚举SSDT表基址
  19. 计算机控制的缺点,计算机控制简答题.pdf
  20. duoyinzi_pinyin

热门文章

  1. 利用Kubernetes名称空间来管理内存和CPU资源(二)
  2. 并查集 (Union-Find)算法
  3. ZooKeeper(五) 使用Zookeeper有序临时节点实现分布式锁
  4. mysql命令_MySql常用命令
  5. python 清空文件夹_python读写文件
  6. Ribbon负载均衡原理,Feign是如何整合Ribbon的?
  7. RabbitMQ学习笔记-RabbitMQ简介
  8. 40张图全面解析TCP 三次握手和四次挥手
  9. Netty是如何解决粘包和拆包问题的
  10. 少说话多写代码之Python学习009——字典的创建