更多网络安全干货内容:点此获取
———————
这种安全漏洞非常普遍。基于组件开发的模式使得多数开发团队根本不了解其应用或API中使用的组件,更谈不上及时更新这些组件了。 如Retire.js之类的扫描器可以但这类漏洞是否可以被利用还需花费额外的时间去研究。
虽然对于一些已知的漏洞其影响很小,但目前很多严重的安全事件都是利用组件中的已知漏洞。根据你所要保护的资产,此类风险等级可能会很高。
1、漏洞产生原因
- 开发者只关注自己开发的代码,不关心使用的第三方代码安全。
- 开发者不知道自己所有使用的组件或依赖的组件版本信息(包括: 服务端和客户端)。
- 使用了易受攻击,不再维护的软件。这包括: 0S、Web服务器应用程序服务器、数据库管理系统 (DBMS) 、应用程序、API和所有的组件、运行环境和库。不定期做漏洞扫描和订阅所使用组件的安全公告。
- 未基于风险并及时修复或升级底层平台、框架和依赖库软件工程师没有对更新的、升级的或打过补丁的组件进行兼容性测试。没有对组件进行安全配置。(请参考“A6:2017-安全配置错误。)
2、漏洞影响
- 漏洞继承
- 数据丢失
- 信息泄露
- 攻击者可以利用组件含有的漏洞实施进一步的攻击
虽然对于一些已知的漏洞其影响很小,但目前很多严重的安全事件都是利用了组件中的已知漏洞。根据用户所要保护的资产类型,此类风险等级可能会很高。
3、如何防御
应该制定一个补丁管理流程:
- 移除不使用的依赖、不需要的功能、组件、文件和文档;
- 利用如versions、DependencyCheck 、retire.js等工具来持续的记录客户端和服务器端以及它们的依赖库的版本信息。持续监控如CVE 和 NVD等是否发布已使用组件的漏洞信息,可以使用软件分析工具来自动完成此功能。订阅关于使用组件安全漏洞的警告邮件;
- 从官方渠道安全地获取组件,并使用签名机制来降低组件被篡改或加入恶意漏洞的风险;
- 及时更新应用程序至最新版本;
- 监控那些不再维护或者不发布安全补丁的库和组件。如果不能打补丁,可以考虑部署虚拟补丁来监控、检测或保护。
- 每个组织都应该制定相应的计划,对整个软件生命周期进行监控、评审、升级或更改配置。