自动依赖扫描

如今应用程序依赖的第三方库和框架数量越来越多,也越来越复杂,比如SSL、Spring、Rails、.Net等等,此外还有各种第三方认证系统等,我们暂且统一把它们称之为第三方依赖。通常情况下,在开发应用程序的时候会提前选定好某个第三方依赖的版本,并且在较长一段时间内都不会主动去更新,原因是更新的成本一般都比较高,比如新库和新框架更改了API的使用方法和使用流程,可能导致系统进行大规模重构。但是往往这些依赖为了添加新的功能和修复各种当前的问题——包括安全问题,却会经常发布新版本。这些依赖库和框架的安全问题只要被发现,通常都会被公布到互联网上,比如NVD、乌云等漏洞平台,而此时官方修复补丁很可能还没有发布,因此存在一个相当危险的真空期,导致很多人都可以利用这些漏洞去攻击使用这些依赖的应用程序。

对应用程序使用到的这些第三方依赖进行管理是很有必要的,但是挑战在于,这些依赖的数量是如此的庞大,而且每天都会有各种各样的关于依赖的安全漏洞被公布到网上,人工手动管理的难度相当大,此时就需要借助自动化来完成这一任务了。自动化依赖扫描就是通过扫描当前应用使用到的所有依赖(包括间接依赖)及其版本,并和网上公布的安全漏洞进行匹配,如果当前某个依赖存在某种危险级别(需要自己定义)的漏洞,就立即发出警告(比如阻止CI构建成功等)来通知开发人员或者系统管理员,从而在最短的时间内启动应对措施,达到防止攻击,避免或者减少损失的目的。