标题 : OWASP 十大 Web 应用安全风险
日期 : 2023-07-26
什么是 OWASP 前 10 名?
开放Web 应用程序安全项目 (OWASP)是一个非营利组织,提供有关如何开发和维护安全软件应用程序的指导。OWASP 以其十大 Web 应用程序安全漏洞列表而闻名,该列表列出了影响 Web 应用程序的最重要的安全风险。
OWASP Top 10 列表基于社区研究,提供有关常见漏洞和漏洞利用的数据。它每隔几年就会进行修订,以反映行业的变化,例如某些攻击的常见程度、其业务影响以及利用的难易程度。
更重要的是,OWASP Top 10 描述了每一类应用程序安全风险,向开发人员展示了如何首先避免这些风险,并提供了修复这些风险(如果已经存在)的最佳实践。
OWASP Top 10 列表的第一版于 2003 年发布。后续更新分别于 2004 年、2007 年、2010 年、2013 年、2017 年和 2021 年进行。
在本文中,我们介绍以下 OWASP Web 应用程序安全风险:
- A1。访问控制损坏
- A2。加密失败
- A3。注射
- A4。不安全的设计
- A5。安全配置错误
- A6。易受攻击和过时的组件
- A7。身份验证失败
- A8。软件和数据完整性故障
- A9。安全日志记录和监控故障
- A10。服务器端请求伪造 (SSRF)
以下信息基于 2021 年 OWASP Top 10 列表。请注意,OWASP Top 10 安全风险按重要性顺序列出,因此 A1 被认为是最严重的安全问题,A2 其次,A10 是前 10 名中最不严重的安全问题。
A1。访问控制损坏
当访问控制被破坏时,攻击者可以获得对用户帐户、管理面板、数据库、服务器、敏感信息、关键业务应用程序和其他敏感资产的访问权限。它可以允许未经授权的用户修改权限以使其有利,并执行破坏性操作,例如篡改数据或销毁数据。
OWASP 建议采取以下缓解措施:
- 最小权限方法
- 使用基于角色的身份验证机制构建强大的访问控制
- 拒绝对除公共资源之外的功能的基本访问
- 通过关闭不必要的服务并删除不活动和不必要的帐户来保持服务器精简
- 如果您有多个接入点,请禁用不必要的接入点。
- 限制 API 和控制器访问速率
- 敏感数据不应存储在根目录中。
- 必须禁用服务器目录列表。
A2。加密失败
加密故障(以前在前 10 名中列为“敏感数据泄露”)从第 3 位移至第 2 位。它强调加密错误或缺乏加密可能导致敏感数据泄露。
OWASP 建议采取以下缓解措施:
- 使用安全且可信的加密算法、密钥和协议对所有静态数据进行加密。
- 使用 TLS 等现代安全协议对传输中的所有数据进行加密。
- 对所有敏感数据识别并实施强有力的安全控制。
- 除非绝对必要,否则不要收集和存储敏感数据。
- 不要缓存敏感数据或数据收集表单。
- 禁用表单自动完成。
- 使用强大且经过验证的哈希函数存储密码。
A3。注射
注入是利用数据库或操作环境其他部分中的漏洞对网站进行的攻击。大多数注入攻击依赖于 Web 应用程序无法区分用户输入和其自身代码。然后,攻击者可以在应用程序上下文中运行恶意代码,从而获得对受保护区域和敏感数据的访问权限。
注入攻击可能使用结构化查询语言 (SQL) 来检索信息或执行不应允许攻击者执行的数据库操作。其他类型的注入包括发生在操作系统级别的命令注入、回车换行 (CRLF) 注入和轻量级目录访问协议 (LDAP) 注入。
OWASP 建议采取以下缓解措施:
- 采用完全绕过解释器的 API、使用参数化查询或转向对象关系映射 (ORM) 方法。
- 对服务器端的输入使用白名单验证。大多数注入攻击依赖于特殊字符,定义允许哪些字符或输入的白名单可以降低风险。然而,它们并非万无一失。
- 在查询中使用 LIMIT 和其他 SQL 约束,以避免在 SQL 注入时暴露大量数据。
A4。不安全的设计
这是 OWASP 在 2021 年推出的新类别。它专注于设计和架构缺陷。避免它们需要仔细的威胁建模,在软件设计阶段考虑安全性,并使用参考架构。
OWASP 建议采取以下缓解措施:
- 从软件开发生命周期 (SDLC) 的一开始就集成安全性。
- 为新应用程序构建面向安全的设计模式、组件和框架的即用型库,并避免从头开始构建。
- 使用威胁建模来设计关键功能,例如访问控制、身份验证、业务逻辑和密钥流。
- 将安全问题和控制添加到作为软件版本的一部分开发的每个用户故事中。
- 将应用程序划分为多个层并识别每个层的攻击场景。
- 使用合理性测试来检查某些输入是否完全可以接受,从前端到后端。
A5。安全配置错误
常见的设置问题(例如不正确的访问控制配置)可能使攻击者能够快速轻松地访问敏感数据和应用程序功能。其中包括不适当的权限、不必要的功能激活、使用默认帐户和密码、错误配置的 HTTP 标头以及详细的错误消息。
OWASP 建议采取以下缓解措施:
- 定义一个清晰、简单的部署流程来强制应用程序强化。
- 使用预配置的模板(每个模板具有不同的凭据),以确保开发、测试和生产环境的配置相同。
- 维护安全配置的容器映像注册表。
- 删除未使用的功能和服务,并以最少的配置部署应用程序。
- 定期更新和修补应用程序。
- 使用自动化工作流程来验证安全配置并检测错误配置,并立即修复任何发现的问题。
A6。易受攻击和过时的组件
大多数 Web 应用程序都使用第三方组件,无论是开源组件还是专有组件。这些组件包含组织无法控制的代码,这可能会导致不良后果,例如违反重音控制和注入攻击。
软件组件可能不安全、软件供应商不再支持或需要安全更新。如果组件包含漏洞,则可能会危及整个应用程序。常用的第三方组件包括应用程序和 Web 服务器、操作系统、数据库管理系统 (DBMS)、API、开源库和运行时环境。
OWASP 建议采取以下缓解措施:
- 维护应用程序使用的所有组件及其版本的最新清单。
- 持续扫描组件、库及其依赖项是否存在漏洞。
- 使所有组件保持最新。如果供应商无法立即提供补丁,则应用虚拟补丁(可以防止被利用的安全策略或规则)。
- 从应用程序中删除已弃用或不需要的组件、功能和依赖项。
- 仅使用来自官方和可信来源的组件和第三方软件。
A7。身份验证失败
与用户身份验证和会话管理相关的功能如果实施不当,可能会向用户暴露安全凭证、授予过多的权限或使用户能够冒充其他身份。
OWASP 建议采取以下缓解措施:
- 强制使用多重身份验证。
- 不要使用默认凭据,尤其是管理员权限。
- 实施强密码策略。
- 部署一个生成定时会话 ID 的安全会话管理器。
- 监控失败的登录尝试并设置限制和延迟。
- 使用强大的用户注册和凭据恢复流程。
A8。软件和数据完整性故障
数据完整性正成为软件安全的首要关注点。这是 OWASP 在 2021 年推出的新类别,重点关注软件更新、关键应用数据和 CI/CD 管道的完整性。当其中任何一个被攻击者篡改并且应用程序中的其他组件未验证其完整性时,就会发生软件和数据完整性故障。
OWASP 建议采取以下缓解措施:
- 使用数字签名或类似机制来验证数据或软件未被篡改并且来自其预期来源。
- 使用 OWASP CycloneDX 和 OWASP Dependency-Check 等软件供应链安全工具来确保组件不存在设计缺陷。
- 确保 CI/CD 管道使用分段、访问控制和参数化来保护从构建到生产部署的代码完整性。
- 不要将未签名或未加密的编译数据发送给不受信任的客户端,除非已采取措施来识别数据的篡改或重复。
A9。安全日志记录和监控故障
当应用程序中出现可疑行为并且日志记录和监控不到位时,安全漏洞更有可能成功。此类别侧重于识别、升级和解决安全事件。如果没有日志记录和监控,检测漏洞几乎是不可能的。
OWASP 建议采取以下缓解措施:
- 使用开箱即用的日志记录和审核软件立即检测可疑活动。
- 确保日志是上下文相关的并且以能够进行深入取证分析的格式提供。
- 实施安全控制以防止攻击者篡改日志数据。
A10。服务器端请求伪造 (SSRF)
此类别于 2021 年被添加到 OWASP Top 10 列表中,因为它是 OWASP Top 10 社区调查中投票选出的顶级漏洞。SSRF 漏洞允许攻击者基于未经身份验证的自定义 URL 访问远程资源上的数据。即使受防火墙或 VPN 保护的服务器如果接受未经验证的用户输入,也可能容易受到此漏洞的影响。
OWASP 建议采取以下缓解措施:
- 始终对用户输入进行验证并清理所有输入。
- 如果应用程序具有远程资源访问功能,请确保它与应用程序的其他方面隔离。
- 使用默认拒绝防火墙策略阻止未经请求的传入流量。
- 防止客户端接收原始响应。
- 创建端口、目标和 URL 方案的允许列表。
- 禁用 HTTP 重定向。
LvBug的应用程序安全
LvBug和黑客技术社区处于使用 OWASP 的最前沿,通过参考 OWASP Top 10 来确定其行动的优先级,从而增强应用程序安全性并让互联网变得更安全。进一步采用这种方法,LvBug全球 10 强可以使应用程序安全团队能够通过及时的见解来提高其效率,这些见解按行业细分,并由道德黑客提交的可利用发现推动。这些发现通常是新的或通过创新技术发现的,不太可能出现在 OWASP 数据库中。OWASP 和 LvBug漏洞利用数据库相结合,可确保在不良行为者开展工作之前发现并修复高严重性漏洞。
|