OWASP 十大漏洞
最新的 OWASP 报告列出了十大漏洞,如下所示:
注入
身份验证中断
敏感数据泄露
XML 外部实体 (XXE)
访问控制中断
安全配置错误
跨站点脚本 (XSS)
不安全的反序列化
使用具有已知漏洞的组件
记录和监控不足
1. 注入
当通过表单输入或其他类型的数据提交到 Web 应用程序来注入不可信的数据时,就会发生注入攻击。常见的注入攻击类型是SQL注入 (SQLi),当网络罪犯将 SQL 数据库代码注入用于明文的在线表单时,就会发生这种情况。
通过对用户提交的数据进行消毒和验证,可以防止此类攻击。数据验证可确保可疑数据被拒绝,数据清理有助于组织清理看起来可疑的数据。数据库管理员还可以设置控制措施,最大限度地减少注入攻击可能暴露的信息量。
2. 身份验证中断
身份验证漏洞使攻击者能够访问用户帐户,包括他们可能用于入侵和完全控制公司系统的管理帐户。
网站通常会遭受身份验证中断,这通常是由于应用程序身份验证机制中的问题造成的。这包括错误的会话管理,攻击者可以使用 暴力技术 来猜测或确认用户帐户和登录凭证。
OWASP Top 10 提供了一系列破碎的身份验证漏洞,其中包括以下 Web 应用程序:
允许凭证填塞等攻击
允许弱密码或默认密码
采用无效的用户凭据和丢失的密码流程
缺少或使用无效的多因素身份验证 (MFA)
在统一资源定位器 (URL) 中暴露会话 ID,不旋转会话 ID,并且在一段时间不活动后不使会话 ID 和身份验证令牌正确无效
这些漏洞通常是由不安全的软件引起的,而软件通常是由缺乏经验的开发人员编写这些软件、缺乏安全测试和匆忙的软件版本引起的。
通过部署 MFA 方法,可以缓解身份验证漏洞破碎,从而更确定用户是他们声称的身份,并防止自动和暴力攻击。这些漏洞还可以通过确保开发人员将最佳实践应用于网站安全来防止,并在应用程序投入生产之前给予适当的时间来正确测试代码。
其他策略包括检查弱密码,确保用户使用强、唯一的密码保护其帐户,以及使用安全会话管理器。
3. 敏感数据泄露
敏感数据泄露或数据泄露是最常见的网络攻击形式之一。如果 Web 应用程序无法有效保护敏感数据,例如信用卡信息、医疗详细信息、社会安全号码和用户密码,则可能会泄露这些数据。能够访问和窃取这些信息的攻击者可以将这些信息用作更广泛的攻击的一部分,或将其出售给第三方。
鉴于欧盟通用数据保护条例 (GDPR) 等数据和隐私法规的严格规则和惩罚,保护敏感数据变得越来越重要。为此,组织必须能够保护静态数据和服务器和 Web 浏览器之间传输的数据。
网站上的数据可以使用SSL (SSL) 证书进行保护,该证书在 Web 浏览器和服务器之间建立加密链接。它还保护服务器或防火墙与 Web 浏览器之间传输时的数据完整性。敏感数据泄露还可以通过安全加密流程加密数据、使用强大的哈希功能保护存储的密码,并确保部署强大的更新算法、密钥和协议来防止。
4. XML 外部实体 (XXE)
XXE 攻击针对解析可扩展标记语言 (XML) 的 Web 应用程序。当包含对硬盘驱动器等外部实体的引用的 XML 输入由配置较弱的 XML 解析器处理时,就会发生这种情况。XML 解析器通常默认易受 XXE 攻击,这意味着开发人员必须手动删除漏洞。
OWASP 十大威胁指出,XXE 攻击通常针对易受攻击的 XML 处理器、易受攻击的代码、依赖关系和集成。
通过确保 Web 应用程序接受不太复杂的数据形式(例如 JavaScript 对象符号 (JSON) Web 令牌)、修补 XML 解析器或禁用外部实体,可以避免 XXE 攻击。组织还可以通过部署应用程序编程接口 (API) 安全网关、虚拟修补和 Web 应用程序防火墙 (WAF) 来防御 XXE 攻击。
5. 访问控制中断
访问控制是指允许用户访问或有权访问的特定数据、网站、数据库、网络或资源。访问控制中断导致用户能够访问超出其要求的资源。这使得攻击者能够绕过访问限制,未经授权的访问系统和敏感数据,并有可能访问管理员和特权用户帐户。
通过部署最低特权访问的概念、定期审计服务器和网站、应用 MFA 以及从服务器中删除非活动用户和不必要的服务,可以降低访问控制中断的风险。组织还可以通过在用户登录 Web 应用程序时使用授权令牌来保护访问控制,并在注销后使其无效。其他建议包括记录和报告访问故障,并使用速率限制来最大限度地减少自动攻击造成的损害。
6. 安全配置错误
安全配置错误被认为是 OWASP 十大漏洞中最常见的漏洞。它们最常由使用默认网站或内容管理系统 (CMS) 配置的组织引起,这些配置可能会无意中揭示应用程序漏洞。常见配置错误还包括未能修补软件缺陷、未使用的网页、不受保护的目录和文件、云存储服务的默认共享权限以及未使用或不必要的服务。
安全配置错误可能发生在整个应用程序堆栈中:应用程序和 Web 服务器、数据库、网络服务、自定义代码、框架、预装虚拟机和容器。
通过更改默认 Webmaster 或 CMS 设置、删除未使用的代码功能以及控制用户评论和用户信息可见性,可以防止安全配置错误。开发人员还应删除不必要的文档、功能、框架和示例,分割应用程序架构,并自动实现 Web 环境配置和设置的有效性。
7. 跨站点脚本 (XSS)
当 Web 应用程序允许用户将自定义代码提交到 URL 路径或公共网站时,就会发生跨站点脚本漏洞。当网络罪犯将恶意脚本注入网站时,就会发生 XSS 攻击,使他们能够修改网站的显示。然后,攻击者依靠受害者从浏览器访问页面来执行代码,通常通过社交工程或将恶意链接嵌入 网络钓鱼 电子邮件来实现这些代码。利用 XSS 漏洞,攻击者可以完全控制浏览器,并将恶意 JavaScript 代码注入网站。
组织可以通过使用 WAF 来缓解和阻止攻击来防止 XSS 漏洞,而开发人员可以通过将不可信的数据与活动浏览器分离来降低 XSS 攻击的可能性。这包括使用通过设计避免 XSS 的框架、部署数据清理和验证、避免不可信的超文本传输协议 (HTTP) 请求数据以及部署内容安全策略 (CSP)。
8. 不安全的反序列化
在数据存储和计算机科学术语中,序列化意味着将对象或数据结构转换为字节字符串。反序列化意味着将这些字节字符串转换为对象。不安全的反序列化涉及攻击者在数据被反序列化之前篡改数据。
OWASP 关于不安全反序列化的保护建议围绕包含用户序列化信息的超级 Cookie。如果攻击者能够成功地对对象进行反序列化,他们就能够为自己提供管理员角色,对数据进行序列化,并破坏整个 Web 应用程序。
通过禁止序列化对象和禁止对来自不可信来源的数据进行反序列化,可以防止这种情况发生。OWASP 还建议监控反序列化活动,对任何序列化对象实施完整性检查,以防止数据篡改,将反序列化代码隔离到低权限环境,确保所有反序列化异常和故障都被记录下来,并限制和监控与数据反序列化容器和服务器的网络连接。
9. 使用具有已知漏洞的组件
框架和库等软件组件通常用于 Web 应用程序中,以提供共享图标和 A/B 测试等特定功能。然而,这些组件通常会导致开发人员不知道的漏洞,为攻击者提供安全漏洞,以发起网络攻击。
这通常是由开发人员不保持应用程序最新、旧代码不从事新更新以及网站管理员担心更新破坏其网站或没有应用更新的专业知识引起的。然而,攻击者不断关注开发人员尚未发现的潜在漏洞,通常称为 零日攻击,他们可以利用这些漏洞。
组织可以通过虚拟修补来避免这种情况,这可以保护过时的网站通过使用防火墙、入侵检测系统 (IDS) 和 WAF 来利用其漏洞。通过保留组件清单并移除任何未使用或未维护的组件,仅使用来自可信来源的组件,并确保所有组件都始终修补和更新,还可以防止漏洞。
10. 记录和监控不足
许多 Web 应用程序不足以检测数据泄露,这使得攻击者不仅可以未经授权的访问其系统,还可以停留数月和数年。组织需要记录和监控其应用程序是否存在异常或恶意行为,以防止其网站受到入侵。
企业还应保留审计日志,使他们能够跟踪任何可疑变更、记录异常活动,并跟踪未经授权的访问或帐户泄露。