当前位置: 首页 > news >正文

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

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

相关文章:

  • 最快1天搭建短视频APP!阿里云短视频解决方案上线
  • CSS3 属性
  • 《重新定义团队》读书笔记及阅读感想2600字
  • Kubernetes — 作业副本与水平扩展
  • BootStack 权限管理平台体验环境正式上线了
  • Windows Server 2016 检查更新时,错误代码8024401C 的解决方案
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 《深入理解JVM》 探究String.intern()方法
  • 大数据全解:定义、价值及挑战
  • spring项目打jar包运行,读取资源文件失败
  • 深度辨析 Python 的 eval() 与 exec()
  • 这题不会!别说你懂值传递与引用传递
  • 换芯 Edge 的新截图曝光,看起来更像 Chrome 了?
  • 如何阅读Java源码?
  • 腾讯云详解宕机故障:光纤挖断后的150秒
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • java8-模拟hadoop
  • leetcode386. Lexicographical Numbers
  • mac修复ab及siege安装
  • Node 版本管理
  • nodejs:开发并发布一个nodejs包
  • passportjs 源码分析
  • Python_网络编程
  • 开发基于以太坊智能合约的DApp
  • 前嗅ForeSpider中数据浏览界面介绍
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 写给高年级小学生看的《Bash 指南》
  • 新书推荐|Windows黑客编程技术详解
  • 中文输入法与React文本输入框的问题与解决方案
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • ​低代码平台的核心价值与优势
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #1015 : KMP算法
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (2)(2.10) LTM telemetry
  • (2)STL算法之元素计数
  • (c语言)strcpy函数用法
  • (function(){})()的分步解析
  • (独孤九剑)--文件系统
  • (小白学Java)Java简介和基本配置
  • **PHP分步表单提交思路(分页表单提交)
  • .aanva
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET 中 GetProcess 相关方法的性能
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .NET值类型变量“活”在哪?
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • :O)修改linux硬件时间