威斯尼斯人(wns2299cn·China认证)官网-Make Life Better

安全报告 | 2021 OWASP TOP 10 新榜解读

2021-12-01 来源:威斯尼斯人wns2299cn公众号

       OWASP(开放式Web应用程序安全项目)是一个开放的社区,该项目由非营利组织OWASP基金会支持,致力于改进Web应用程序的安全性,OWASP总结了10种最严重的Web应用程序安全风险,警告全球所有的网站拥有者,应该警惕这些最常见、最危险的漏洞,也就是我们熟知的“OWASP TOP 10”榜单

       2021年新的OWASP TOP 10榜单有三个新类别,还有四个类别名称和范围发生了变化,还对一些类别进行了合并,下图是2017版与2021版的榜单变化图。

top10.jpg

2021 OWASP TOP 10 新榜详解

A01访问控制失效(Broken Access Control)

       从第五位上升到了第一位。94%的应用程序都经过了某种形式的访问控制失效测试。映射到访问控制失效的34个CWE在应用程序中的出现频率比其他任何类别都要多。

      A01解读:

       访问控制是指对经过身份验证的用户执行超出其权限级别的操作的限制。当此类限制未正确配置时,就会出现访问控制中断。这可能导致对敏感信息未授权访问以及修改或破坏。
       访问控制的一些常见漏洞是:
  • 授予对角色、功能和能力的自由访问权限,这些权限应受最小特权原则的限制并默认被拒绝;

  • 篡改参数和强制浏览(即修改URL或HTML页面)或修改API请求以避免访问控制检查;

  • 提供不安全的直接对象引用(即唯一标识符),允许查看和修改用户的帐户;

  • 由于错误或设计缺陷导致的特权提升;

  • 篡改元数据,例如JWT访问控制令牌、cookie、隐藏字段和滥用JWT失效;

  • 强制浏览以访问经过身份验证或特权的页面;

  • 由于跨域资源共享(CORS)配置错误,允许来自不受信任/未经授权的来源的API访问;

  • 在没有POST、PUT和DELETE访问控制的情况下访问API。


A02加密失败(Cryptographic Failure)

       此前名为“敏感数据暴露”(Sensitive Data Exposure),这一名称只是描述了广泛的症状而非根本原因——上移到了榜单第二位。此处需要重新关注与密码学相关的故障,这些故障通常会导致敏感数据暴露或系统受损。
       A02解读:
      这种类型的故障适用于传输和静止数据的保护和保密。此类数据通常包括身份验证信息,例如用户名和密码,还包括个人身份信息,例如个人和财务信息、健康记录、商业机密等。出现漏洞的原因有多种,漏洞通常是通过中间人攻击来利用的。
加密缺陷的常见原因包括:
  • 以明文形式存储或传输敏感数据;

  • 使用过时或弱的加密算法和协议;

  • 使用默认或弱加密密钥,不使用密钥管理和轮换;

  • 没有强制加密;

  • 未正确验证服务器证书和信任链;

  • 忽略或重用初始化向量或使用不安全的操作模式;

  • 攻击者可以利用这些漏洞来访问敏感数据。


A03注入(Injection)

       注入下滑到第三位。94%的应用程序都测试了某种形式的注入,注入类别中如今包括跨站脚本。映射到该类别的33个CWE在应用程序中出现次数第二多。
A03解读:
       最常见的注入攻击是SQL注入和跨站点脚本(XSS)攻击,还有代码注入、命令注入、CCS注入等。
当存在以下一种或几种情况时,应用程序容易受到注入攻击:
  • 用户提供的数据未经验证、过滤或删除;

  • 解释器直接使用动态查询或非参数化调用,无需转义;

  • 恶意数据被直接使用、连接或在对象关系映射(ORM)搜索参数中;

  • 当注入攻击成功时,攻击者可以查看、修改、删除数据,并可能获得对服务器的控制。


A04不安全设计(Insecure Design)

      2021年出现的新类别,并且一出场就高居第四位。此处需要重点关注与设计缺陷相关的风险。如果我们真的想作为一个行业“左移”,就需要更多地使用威胁建模、安全设计模式和原则以及参考架构。
A04解读:
      此类漏洞侧重于设计和架构缺陷相关的风险。不安全的设计部分是指在软件开发中缺乏安全控制和业务风险分析,从而没有确定所需的安全设计程度。
如何防止不安全的设计:
  • 与应用程序安全专家一起实施安全的开发生命周期,以评估设计安全和隐私相关要求;

  • 引入并使用安全的设计模式库或准备使用的组件;

  • 将威胁建模方法应用于关键身份验证、访问控制、业务逻辑和关键流;

  • 使安全语言和控制成为用户故事的一部分;

  • 在系统的每一层执行从前端到后端的合理性检查;

  • 通过单元和集成测试验证关键流对威胁模型的抵抗力;

  • 为应用程序的每一层编译使用和误用案例;

  • 根据暴露和保护要求,在系统上分离层和网络层;

  • 通过设计在所有层中稳健地分离租户;

  • 限制用户或服务的资源消耗。


A05安全配置错误(Security Misconfiguration)

      从上一版的第6位上升到了第5位。90%的应用程序都经过了某种形式的错误配置测试,随着转向高度可配置软件的趋势不可逆,看到这一类别排名上升也就不足为奇了。此前版本的XML外部实体注入(XXE)类别现在也被合并为该类别的一部分。
A05解读:
      安全配置错误是指安全控制不安全或配置不正确。
此漏洞通常是由于以下原因之一造成的:
  • 应用程序未做安全加固;

  • 错误配置的云服务权限;

  • 允许或安装不必要的功能,例如端口、服务、页面、帐户或权限;

  • 默认帐户/密码已启用或未更改;

  • 向用户显示的错误消息包含堆栈跟踪或其他敏感信息;

  • 未正确启用或实施最新的安全功能;

  • 服务器、框架、库或数据库的安全设置未设置为安全值;

  • 安全标头或指令不是由服务器发送或未设置为安全值;

  • 使用老旧软件,未更新到最新版本


A06易受攻击和过时的组件(Vulnerable and Outdated Component)

       此前名为“使用具有已知漏洞的组件”(Using Components with Known Vulnerabilities)——也从第6位一跃进入第6位。该类别是唯一一个没有任何CVE映射到所含CWE的类别,因此默认的漏洞与影响权重计5.0分。
A06解读:
       此类别以前称为“使用具有已知漏洞的组件”。
组件漏洞可能出现在以下情况之一:
  • 如果您不知道您使用的客户端和服务器端组件的版本;

  • 如果软件易受攻击、不受支持或已过期;

  • 这包括操作系统、Web/应用程序服务器、数据库管理系统(DBMS)、应用程序、API和任何组件、运行时环境和库;

  • 如果您没有定期扫描漏洞并关注有关您使用的组件的安全新闻;

  • 如果您在补丁发布时没有修复或升级您的平台、框架和依赖项;

  • 如果您的开发人员没有对更新、升级或修补的库的兼容性进行测试;

  • 如果您的组件配置不安全。


如何避免使用易受攻击或过时的组件:
  • 删除任何未使用的依赖项、不必要的功能、组件、文件和文档;

  • 通过使用OWASP Dependency-Check、retire.js等定期清点客户端和服务器端组件的版本及其依赖项;

  • 关注常见漏洞和暴露(CVE)和国家漏洞数据库(NVD)等来源),并订阅电子邮件警报以接收有关组件中任何漏洞的新闻;

  • 要自动化该过程,请利用软件组合分析工具;

  • 仅使用官方来源和安全链接来获取组件,选择签名包;

  • 留意未维护且没有旧版本安全补丁的库和组件,如果您无法打补丁,请部署一个虚拟补丁来监控、检测或防范已知漏洞


A07识别与认证失败(Identification and Authentication Failure)

      此前称为“身份验证失效”(Broken Authentication)——排名从此前的第2位降到了第7位,而且该类别目前包含更多与识别失败相关的CWE。虽然该类别仍然位列Top 10榜单,但标准化框架的可用性增加似乎有助于解决这一问题。

A07解读:

如何避免识别和认证漏洞?

OWASP建议的预防措施包括:

  • 尽可能实施多因素身份验证,以防止凭证填充、暴力破解和被盗凭证重用攻击;

  • 永远不要使用默认凭据进行交付或部署,尤其是对于管理员级别的用户;

  • 执行弱密码检查;

  • 使用密码策略来确定密码长度、复杂性和轮换策略;

  • 通过对所有结果使用相同的消息,强化注册、凭证恢复和API途径以抵御帐户枚举攻击;

  • 限制或逐步延迟失败后的重复登录尝试,但避免创建拒绝服务场景;

  • 记录和监控失败的尝试,并在检测到凭据填充、暴力破解或其他类型的攻击时通知管理员;

  • 利用服务器端、安全和内置的会话管理器,在登录后生成具有高熵的新随机会话ID。不要保留URL中标识的会话,并确保在注销、空闲和绝对超时后安全存储和失效。


A08软件和数据完整性故障(Software and Data Integrity Failure)

       2021年新增的一个类别,主要关注缺乏完整性验证情况下做出与软件更新、关键数据和持续集成/持续交付(CI/CD)流水线相关的各种假设。CVE/CVSS数据最高加权影响之一映射到该类别中的10个CWE。此前版本中的“不安全反序列化”(Insecure Deserialization)类别如今也被归入这一更大类别。

A08解读:

       类似的漏洞故障可能是大多数应用程序的自动更新功能,这些功能不一定含有软件的完整性及可用性检查。

如何防止软件和数据完整性故障?

为了防止不安全的反序列化,OWASP建议执行以下步骤:

  • 使用数字签名等机制来验证来自源的软件或数据未被篡改;

  • 确保库和依赖项仅使用受信任的存储库,或者考虑托管一个内部已知良好的存储库,如果您的风险较高;

  • 使用软件供应链安全工具确保组件没有任何已知漏洞;

  • 为代码和配置更改制定审查流程,以降低将恶意代码或配置插入软件管道的风险;

  • 对CI/CD管道实施彻底的隔离、配置和访问控制,以保证流经构建和部署过程的代码的完整性;

  • 确保没有未签名或未加密的序列化数据发送到不受信任的客户端,而无需事先进行完整性检查或数字签名以检测数据的篡改或重放。


A09安全日志与监测失败(Security Logging and Monitoring Failure)

      此前名为“日志记录和监控不足”(Insufficient Logging & Monitoring)——从最后一名上升至第9位。而且该类别已扩展纳入了其他类型的故障,虽然这些故障难以测试,并且在CVE/CVSS 数据中没有得到很好的体现,但却会直接影响可见性、事件警报和取证。

A09解读:

      这一类别至关重要,会影响到问责、可见性、事件警报和相关取证等。

在以下情况下会发生日志记录、检测、监控和操作响应失败:

  • 不记录登录、登录失败、高价值交易和其他类型的可审计事件;

  • 警告和错误生成的消息不充分、不清楚或没有消息;

  • 不检查 API 和应用程序日志的可疑活动;

  • 您只在本地存储日志;

  • 警报阈值和响应升级流程尚未制定或无效;

  • 动态应用安全测试工具不会通过渗透测试或扫描触发警报;

  • 应用程序无法实时或接近实时地检测、升级或警告主动攻击;

  • 如果用户或攻击者可以看到日志记录和警报事件,您的应用程序可能会进一步暴露在信息泄漏的风险中。


如何防止安全日志记录和监控失败?

      为了防止由于这些故障而可能出现的漏洞,OWASP 建议根据风险的严重程度实施以下一些控制措施。

具体实施措施为:

  • 使用足够的用户上下文记录所有登录、访问控制和服务器端输入验证失败,以发现可疑或恶意帐户;

    将它们存储足够长的时间以进行延迟取证分析;

  • 确保日志采用日志管理解决方案可以轻松使用的格式;

  • 通过正确编码日志数据,避免对日志记录或监控系统的注入或攻击;

  • 对高价值事务(例如仅追加数据库表)实施具有完整性控制的审计跟踪,以防止篡改或删除;

  • 建立有效的监控和警报以检测可疑活动并快速做出响应;

  • 引入或采用事件响应和恢复计划。

A10服务器端请求伪造(Server-Side Request Forgery)

      2021年新增的类别。虽然数据显示其发生率相对较低,但测试覆盖率却高于平均水平,并且漏洞利用和影响潜力的评级也高于平均水平。该类别是行业安全专家为我们预警的一种重要场景,尽管目前并没有数据能够证实其危险性。

A10解读:

       当Web应用程序在获取远程资源时未验证用户提供的URL时,就会出现服务器端请求伪造问题。这使攻击者能够强制应用程序发送精心设计的请求,即使受到防火墙、VPN或某些其他类型的网络访问控制列表(ACL)的保护。
       获取URL是Web应用程序中的常见功能,这导致SSRF漏洞大大增加。此外由于架构和云服务的复杂性不断增加,这些问题也变得越来越严重。
       如何防止服务器端请求伪造?
网络层预防:

  • 实行站库分离来减少SSRF的攻击影响;

  • 通过制定“默认拒绝”网络策略或网络访问控制规则来阻止除基本流量之外的所有流量;

  • 根据应用程序引入防火墙规则的所有权和生命周期;

  • 在防火墙上记录所有接受和阻止的网络流。

应用层预防:
  • 所有输入数据都必须经过验证;

  • 使用“白名单”列表来强制执行URL架构、端口和目标;

  • 不要向客户端发送原始响应;

  • 禁用HTTP重定向;

  • 通过验证URL一致性来避免DNS重新绑定和“检查时间、使用时间”(TOCTOU)竞争条件等攻击;

  • 不要使用拒绝列表或正则表达式来缓解SSRF,这些方法可以通过多种方式绕过。

其他防御措施:

  • 控制前端系统的本地流量,而不是部署其他安全服务;

  • 对于非常高的保护需求,在具有专用和可管理用户组的前端独立系统上使用网络加密。

结语

       OWASP TOP 10榜单目的是为了让网络安全行业更了解漏洞和漏洞利用趋势,以便更好地迎接和应对未来挑战。

部分参考来源:OWASP、Google、Freebuf


ISO9001

质量管理体系认证

ISO14001

环境管理体系认证

ISO27001

信息安全管理体系认证

ISO20000

信息技术服务管理体系认证

信息系统

安全运维服务资质