本文分享自华为云社区《OWASP Top 10漏洞解析(6)- A6:Vulnerable and Outdated Components》。作者:gentle_zhou
Web应用程序安全一直是一个重要的话题,它不但关系到网络用户的隐私,财产,而且关系着用户对程序的新人。随着Web应用程序功能持续增加,复杂性不断提高,这些程序也面临着越来越多的安全威胁和挑战。
为了帮助这些应用程序的开发团队和安全人员了解和防范这些威胁,提高安全意识,编写更安全的代码,OWASP(Open Web Application Security Project,开放式Web应用程序安全项目)发布了一份标准指南,称为OWASP Top 10。
这是一份关于Web应用程序安全风险的标准指南,它基于全球范围内的安全专家和数据提供者的共识,列出了当前最严重、最关键的10种Web应用程序安全风险,并提供了相应的防范措施和建议。OWASP Top10 每隔几年会更新一次(目前已经发布了六个版本,分别是2004年、2007年、2010年、2013年、2017年和2021年),最新的版本是在2021年发布的OWASP Top10:2021。
已解析的OWASP漏洞
- OWASP Top 10漏洞解析(1)- A1:Broken Access Control 访问控制失效:bbs.huaweicloud.com/blogs/40099...
- OWASP Top 10漏洞解析(2)- A2:Cryptographic Failures 加密机制失效:bbs.huaweicloud.com/blogs/40512...
- OWASP Top 10漏洞解析(3)- A3:Injection 注入攻击:bbs.huaweicloud.com/blogs/40799...
- OWASP Top 10漏洞解析(4)- A4:Insecure Design 不安全的设计:bbs.huaweicloud.com/blogs/41481...
- OWASP Top 10漏洞解析(5)- A5:Security Misconfiguration 安全配置缺陷: bbs.huaweicloud.com/blogs/42005...
"易受攻击的和已淘汰的组件"缺陷详情
本文的主题是OWASP Top10:2021中的第6条缺陷:Vulnerable and Outdated Components 易受攻击的和已淘汰的组件,该问题在社区调查中排名第二,但有足够的的缺陷扫描啥数据支持这个缺陷进入前10,排名第6位。该缺陷是我们在测试和评估风险时所面临的一个已知问题,也是唯一一个没有映射到任何公共漏洞和暴露(CVEs)CWEs的类别,因此在评估排名的时候使用了默认的利用/影响权重 5.0机制(exploits/impact weight of 5.0)。值得注意的CWE包括CWE-1104:使用未维护的第三方组件,以及2013年和2017年十大安全漏洞中的两个CWE。
从下图也可以感受到在2017版本中,该缺陷还被称为"Using Components with Known Vulnerabilities",当时排名是第九,到了2021版本升到了第6.
常见的"易受攻击的和已淘汰的组件"缺陷类型
如果存在以下的情况,那么应用程序可能就存在"易受攻击的和已淘汰的组件"安全方面的漏洞:
- 如果用户不知道其所有使用的组件的版本(包括用户端和服务器端),这其中也包括用户直接使用的组件以及嵌入的相关套件(nested dependencies)。
- 如果软件容易受到攻击、已没有支持或已淘汰被淘汰,这其中包括作业系统、网页/应用程式服务器、资料库管理系统 (DBMS)、应用程式、 API以及所有组件、执行环境和库(libraries)。
- 如果用户没有定期执行缺陷扫瞄并订阅与使用组件相关的咨询。
- 如果用户没有凭借基于风险的方式及时修补或升级底层平台、框架和相关套件,这通常发生在每月或每季度周期性时间范围的变更控制修补工作的环境中,会使组织数天甚至数月不必要地暴露于可修补的漏洞风险中。
- 如果软件开发人员未测试更新、升级或修补库的兼容性。
- 如果用户没有安全防范组件的配置(可以参考参阅 OWASP Top 10漏洞解析(5)- A5:Security Misconfiguration 安全配置缺陷)。
如何防止该缺陷的发生
相关组织应该建立起补丁管理流程,包括如下措施:
- 移除未使用的依赖,不必要的功能、组件、文件和文档。
- 持续使用版控工具(例如versions、OWASP Dependency Check、retire.js)来盘点客户端和服务器端组件(例如框架、库)及依赖组件的版本。持续监控 CVE 和 NVD 等来源来确认组件是否存在的漏洞。使用软体组合分析工具(SCA)来自动化该流程。还可以订阅和使用组件相关安全漏洞的邮件提醒。
- 仅通过安全链接从官方来源获取组件。优先选择签名包,以降低更新包被加入恶意组件的可能。
- 监控不再维护或不为旧版本创建安全补丁的库和组件。 如果无法修补补丁,可以考虑部署虚拟补丁来监控、检测或保护免受发现问题的影响。
每个组织都必须确保有一个持续的计划,在应用程序或组合(portfolio)的生命周期内做到监控、分类、应用更新或更改配置变化。
举个栗子
场景1
组件通常以应用程序本身一样的权限来运行,因此任何组件中的缺陷都可能会导致严重后果。这些缺陷可能是意外的(例如编码错误)或故意的(例如组件中的后门)。一些已发现的可利用组件漏洞包括:
- CVE-2017-5638:这是一个 Struts 2 远端程式码执行漏洞,可以在服务器上执行任意代码,已被归咎于重大漏洞。
- 虽然物联网 (IoT) 设备通常很难或无法修补,但修补它们仍具有很高的重要性。 (例如,生物医学设备)。
有一些自动化工具可以帮助攻击者找到未修补或配置错误的系统。例如,Shodan IoT 搜索引擎可以帮助我们找到仍然受到 Heartbleed 漏洞影响的设备(该漏洞已于 2014 年 4 月修补)。