用DependencyTrack管理第三方组件安全(三)

用DependencyTrack管理第三方组件安全(三)

在上一篇文章里,我介绍了OWASP DependencyTrack(下文简称DT)的搭建和最基本的使用步骤。在这篇文章里,我将介绍DT的几个特色功能。


DT特色功能

DT功能丰富,不过我觉得最有特色的应该是下面这几个:


特色功能1:跨团队漏洞趋势统计追踪

在管理第三方组件安全这件事上,开发团队只需要知道当前依赖有没有安全问题,以及有哪些安全问题就足够了,但安全团队还额外掌握更多信息,例如需要了解当前各个开发团队使用的第三方组件的整体安全状态如何(例如有多少第三方组件存在已知安全问题、相关团队占比多少等)。

DT提供了Dashboard视图,把所有接入DT扫描的团队或者说应用程序所使用到的第三方组件、第三方组件中存在的安全漏洞等信息以可视化的图表方式呈现了出来。很好的满足了安全团队的需求。在日常安全运营过程中,这些统计数据、趋势分析数据可以作为某种指标,能够告诉安全团队当前第三方组件安全风险是在持续降低还是升高,相关的安全控制措施实施之后,也能通过这些指标来观察措施产生的效果到底如何。

仪表板

特色功能2:多漏洞数据库

大多数依赖安全检查工具只使用一个漏洞数据库,例如NVD。大多数情况下是没有什么问题的,但毕竟是单一漏洞数据库,有可能会出现漏报或者误报的情况。而DT则是一口气集成了4个漏洞数据库,一定程度上有助于解决或者避免这个问题。

DT默认集成的漏洞数据库有:


特色功能3:从组件进行审计

安全团队肯定碰到过这样的情况,某天,某个第三方组件爆出了安全问题,安全团队紧急联系各个开发团队,要求他们立即排查确认是否有用到这个第三方组件,而开发团队其实也难以第一时间给出答案,他们还需要到CI上去翻看DC的扫描报告,或者自己手动排查整个依赖树。一来一去时间可能就浪费了,错过了宝贵的漏洞响应时间。而对于没有使用这个第三方组件的团队而言,这种做法又给他们增加了信息噪音。

在DT的帮助下,这个故事可以有另一个结局。DT除了记录了各个开发团队的应用程序所使用的各种第三方依赖信息,可以方便的从团队或者应用程序的视角去深挖用到了哪些依赖,它还反过来提供了Component视图,使得我们可以从第三方组件的维度出发,去查看有哪些开发团队用到了某个第三方组件。这个功能简直是安全团队的福音,如此一来,安全团队就可以以最快的速度直接通知对应的团队采取应对措施了。

查看某个组件被哪些团队使用了

特色功能4:消息提醒

在日常使用DT对依赖进行例行性的安全扫描操作的时候,可能会产生一些漏洞告警信息,另外,每当DT主动监控发现某个依赖存在新爆出来的安全漏洞的时候,也会产生告警信息。这些信息都可以通过DT提供的消息提醒功能及时的传递给安全团队、开发团队。

需要特别说明的是,从组件进行审计的功能再结合消息提醒功能,就可以实现依赖安全的持续自动化监控和提醒机制。

DT提供Console、Email、Microsoft Teams、Slack以及Webhook这5种通知提醒模式,提醒内容也可以定制,可以说还是很方便的。更多关于通知提醒功能的介绍,可以移步官网:https://docs.dependencytrack.org/integrations/notifications/


DependencyTrack vs DependencyCheck

我先假设你已经知道甚至已经用过同是OWASP出品的检测第三方组件安全的开源工具DependencyCheck,如果你不知道这个工具,请移步这里(https://owasp.org/www-project-dependency-check/)先行了解。

相比DependencyCheck(下文简称DC),DT更像是一个可以对第三方组件进行安全检测,并且能够支撑软件供应链安全管理的平台。这两个工具都可以检测出第三方组件的安全问题,不过本质区别在于,DC只能对第三方组件做安全检测并生成报告,仅此而已,而DT会保存历次第三方组件安全检测结果,你可以通过Dashboard了解或者追踪第三方组件的安全变化趋势。与此同时,DT还提供了很多额外的功能,例如漏洞通知、全局审查第三方组件、审计第三方组件软件授权协议、API等等。

下面这个表格详细对比展示了DC和DT的区别:

DependencyCheck和DependencyTrack的区别

总结

我用3篇文章介绍了OWASP DependencyTrack,希望你看到这里的时候,能够对它有大致的了解。总的来说,DependencyTrack是个还不错的管理第三方组件安全的平台,它的最大受益者我相信应该是安全团队,当然这不意味着开发团队就不是平台的用户。如果你来自安全团队,正在寻找一个能帮助你管理第三方组件安全的工具,那就试试DependencyTrack吧。