OWASP Top 10漏洞解析(5)- A5:Security Misconfiguration 安全配置缺陷
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 访问控制失效:https://bbs.huaweicloud.com/blogs/400993
- OWASP Top 10漏洞解析(2)- A2:Cryptographic Failures 加密机制失效:https://bbs.huaweicloud.com/blogs/405125
- OWASP Top 10漏洞解析(3)- A3:Injection 注入攻击:https://bbs.huaweicloud.com/blogs/407990
- OWASP Top 10漏洞解析(4)- A4:Insecure Design 不安全的设计:https://bbs.huaweicloud.com/blogs/414812
“安全配置缺陷”缺陷详情
本文的主题是OWASP Top10:2021中的第5条缺陷:Security Misconfiguration 安全配置缺陷,它从上个版本的第6位上升到了2021版本的第5位,因为有90%的应用程序被测试出有某种形式的安全配置缺陷,平均发生率达到4%,并且产生了超过20.8万次的通用缺陷枚举(CWE)。随着越来越多的软件转向高度可配置化,安全配置缺陷这个类别的排名有所上升并不让人赶到吃惊。
Security Misconfiguration 安全配置缺陷一般来说是指在对应用程序、框架、应用程序服务器、web服务器、数据库服务器等执行安全配置时,由于配置不当导致的漏洞,这些漏洞可能让攻击者未经授权访问某些系统数据或功能,甚至完全控制系统。
常见的“安全配置缺陷”缺陷类型
如果应用程序存在以下的情况,那么应用程序可能就因为“安全配置缺陷”存在安全方面的漏洞:
- 应用程序的任何部分缺少适当的安全加固,或者云服务的权限配置不正确。
- 启用或安装了不必要的功能(例如,不必要的端口,服务,页面,账户或权限)。
- 默认账户及其密码处于启用状态且未更改。
- 向用户泄露了堆栈跟踪信息或其他过于详细的错误信息。
- 对于升级过的系统,最新的安全功能被禁用或未安全地配置。
- 应用程序服务器,应用程序框架(例如,Struts,Spring,ASP.NET),库,数据库等的安全设置未设置为安全值。
- 服务器不发送安全标头或指令,或者这些值未设置为安全值。
- 软件过时或存在漏洞。
而且,如果没有一个一致的,可重复使用的应用程序安全配置过程,系统还会面临更高的风险。
如何防止该缺陷的发生
安全的安装过程应该被实施,包括:
- 建立一个可重复的加固过程,支持快速、简单地部署一个适当稳定的环境。开发、测试和生产环境应该配置一致,但每个环境使用不同的凭证。这个过程应该做到自动化。
- 搭建一个最小化平台,不存在任何不必要的功能、组件、文档或样例;移除或不安装任何不使用的功能和框架。
- 创建一个任务,它依据所有安全通知、相关更新、补丁配置,来执行安全审视和配置变更(可参照 A06:2021-易受攻击和已淘汰的组件)。并且也支持审查云存储权限(例如 S3 bucket 的权限)。
- 构建一个可分割的应用程序架构,提供有效和安全的组件或租户之间的分离,使用分段,容器化或云安全组(ACLs)。
- 支持向客户端发送安全指令,例如,安全标头。
- 完善一个自动化的过程,支持验证所有环境中的配置和设置的有效性。
举个栗子
场景1
应用程序服务器自带了一些示例应用程序,这些应用程序没有从生产服务器上移除。不巧且不幸的是,这些示例应用程序存在已知的安全缺陷,那么攻击者就会利用这些缺陷来入侵服务器。假设其中一个应用程序是管理控制台,而默认账户没有被修改过,那么攻击者就可以用默认密码登录,并接管现网服务器。
场景2
服务器没有禁用目录列表功能。攻击者发现他们可以简单地列出目录,因此轻松地找到并下载了编译后的Java类文件,然后对其进行反编译和逆向工程来查看代码。攻击者随后发现了应用程序中一个严重的访问控制缺陷,那么攻击随之就会到来了。
场景3
应用程序服务器的配置允许向用户返回详细的错误信息。比如,堆栈跟踪信息,这可能会暴露出敏感信息或潜在的缺陷,例如已知易受攻击的组件版本。
场景4
云服务提供商(CSP)的默认共享权限对其他CSP用户开放了互联网访问,这使得存储在云存储中的敏感数据被访问。
参考链接
- 点赞
- 收藏
- 关注作者
评论(0)