OWASP TOP10系列之#TOP9# A9-使用具有已知漏洞的组件
前言
组件密集型开发模式可能导致开发团队甚至不了解他们在应用程序或 API 中使用了哪些组件,更不用说让它们保持最新状态。
可能发生问题的情况
- 如果您不知道您使用的所有组件(客户端和服务器端)的版本。这包括您直接使用的组件以及嵌套的依赖项。
- 如果软件易受攻击、不受支持或已过期。这包括操作系统、Web/应用程序服务器、数据库管理系统 (DBMS)、应用程序、API 和所有组件、运行时环境和库。
- 如果您不定期扫描漏洞并订阅与您使用的组件相关的安全公告。
- 如果您没有以基于风险的方式及时修复或升级底层平台、框架和依赖项。这通常发生在修补是受变更控制的每月或每季度任务的环境中,这使组织面临许多天或数月不必要地暴露于固定漏洞的风险。
- 如果软件开发人员不测试库的兼容性。
如何预防
应该有一个补丁管理流程来:
- 删除未使用的依赖项、不必要的功能、组件、文件和文档。
- 使用版本、DependencyCheck、retire.js等工具持续清点客户端和服务器端组件(例如框架、库)及其依赖项的版本。持续监控CVE和NVD等源以查找组件中的漏洞。使用软件组合分析工具来自动化该过程。订阅与您使用的组件相关的安全漏洞的电子邮件警报。
- 仅通过安全链接从官方来源获取组件。首选签名包以减少包含修改后的恶意组件的机会。
- 监控未维护或未为旧版本创建安全补丁的库和组件。如果无法打补丁,请考虑部署虚拟补丁来监控、检测或防止发现的问题。