这种类型的安全漏洞非常普遍。 基于组件的开发模型意味着大多数开发团队都不知道其应用程序或 API 中使用的组件,更不用说使它们保持最新状态了。 如退休像JS这样的扫描程序很好,但需要额外的时间来研究这些漏洞是否可以被利用。
虽然对某些已知漏洞的影响很小,但当今许多最严重的安全事件都利用了组件中的已知漏洞。 根据您保护的资产,风险水平可能很高。
1. 漏洞的原因。
开发者只关注自己的开发,并不关心自己使用的第三方的安全。
开发人员并不知道他们使用或依赖的所有组件(包括:服务器和客户端)。
使用易受攻击且不再维护的软件。 这包括:0S、Web 服务器、应用程序服务器、数据库管理系统 (DBMS)、应用程序、API 以及所有组件、运行时环境和库。 进行漏洞扫描,并订阅不时使用的组件的安全公告。
基于风险,未能及时修复或升级底层平台、框架和依赖,软件工程师未对较新、升级或修补的组件进行兼容性测试。 该组件没有安全配置。 (请参阅“A6:2017 - 安全配置错误”) )
2. 漏洞影响。
漏洞继承。 数据丢失。
信息泄露。 攻击者可以利用组件中的漏洞进行进一步的攻击。
虽然对某些已知漏洞的影响很小,但当今许多最严重的安全事件都利用了组件中的已知漏洞。 根据用户尝试保护的资产类型,风险级别可能很高。
3.如何防守。
应该有一个补丁管理流程:
删除未使用的依赖项、不需要的功能、组件、文件和文档;
版本、依赖项检查、停用等漏洞利用JS 和其他工具,用于持续记录客户端和服务器端及其依赖库的版本信息。 持续监控 CVE 和 NVD 是否发布已使用组件的漏洞信息,这些信息可以使用软件分析工具自动执行。 订阅有关组件使用中的安全漏洞的电子邮件警报;
从官方来源安全地获取组件,并使用签名机制来降低组件被篡改或添加恶意漏洞的风险。
使应用程序保持最新状态;
监视不再维护或未修补的库和组件。 如果无法修补,请考虑部署虚拟修补程序来监视、检测或保护。
每个组织都应该制定一个计划,以在整个软件生命周期中监视、审查、升级或更改配置。