所有文章 > API安全 > API安全漏洞: OWASP 十大漏洞
API安全漏洞: OWASP 十大漏洞

API安全漏洞: OWASP 十大漏洞

无论规模大小,每个组织都有安全策略,概述开发人员应采取哪些措施来确保其应用程序的安全。如果公司有良好的 API 安全策略,那么这对保护用户数据和阻止外部攻击大有裨益。例如,使用令牌对用户进行身份验证可防止暴力攻击。

这篇文章介绍了 API安全漏洞 和 OWASP 十大漏洞,其中列表定义了我们认为当今 Web 应用程序中最大的风险,并作为构建安全应用程序和鼓励安全编码实践的起点。这篇文章还将提供有关如何减轻每种风险的建议。

在介绍 OWASP 的十大漏洞之前,我们首先来了解一下什么是 API安全漏洞。

什么是 API安全漏洞?

API安全漏洞是实施API安全策略的过程中出现的遗漏点。

构建API安全策略的常见策略:

  • 身份验证:这是用户在被授予访问特定资源的权限之前提供身份证明的过程。
  • 授权:这是您通过身份验证授予用户访问特定资源的权限的方式。在用户与您的服务之间的每次交互中,您都会检查授权。
  • 会话管理:我们通过将会话与用户的请求关联来识别用户会话。这可能包括 Cookie、设备、IP 地址和其他标识符。

什么是 OWASP?

开放 Web 应用程序安全项目 ( OWASP ) 是一个致力于提高软件安全性的非营利组织。 OWASP 的目标是提高人们对软件安全的认识,从而帮助个人和组织对真正的软件安全风险做出明智的决策。

OWASP 对 API 安全的定义是“保护 API 免受未经授权的访问、使用或修改”。

虽然 API 安全很重要,但它并非万无一失。攻击者可以通过多种方式绕过安全措施并访问数据或 API 功能。

现在让我们来看看 OWASP 列出的十大API安全漏洞。

OWASP 十大API安全漏洞解析

OWASP 已发现影响公司 Web 应用程序的各种安全漏洞。OWASP 发布了需要解决的顶级漏洞列表,以便更好地了解开发人员的日常问题。API安全漏洞列表基于安全专业人员和企业的贡献。

OWASP 2021 年列表中出现最多问题的 10 个关键领域如下:

1. 访问控制失效

2. 加密失败

3.注入攻击和命令注入攻击

4.不安全的设计

5. 安全配置错误

6. 易受攻击和过时的组件

7. 身份识别和认证失败

8. 软件和数据完整性故障

9. 安全日志记录和监控失败

10. 服务器端请求伪造

1. 访问控制失效

此API安全漏洞允许攻击者获取信息或执行仅限特定用户的操作。有多种方式可以实现此目的。

访问控制失效的一个例子是应用程序没有正确限制对敏感数据的访问。例如,给定一个 API 端点api/address/user/user_id,该端点根据user_id列出用户地址,则任何有权访问该数据的人都可以查看或修改它(即,通过尝试不同的user_id,尤其是在 ID 自动递增的情况下)。

缓解措施

不要让您的 API 用户“猜测”您使用的身份验证机制。避免使用硬编码的令牌、机密和密钥。尝试使用更安全的方法,例如OAuth 2.0令牌和带有加密(散列)凭据的 cookie。

使用基于角色的授权——这样,您可以管理哪些用户可以访问哪些功能,并确保没有第三方应用程序可以访问您的系统。

2. 加密失败

当您的应用程序无法正确使用加密功能(例如哈希、加密和数字签名(公钥或对称))时,就会出现加密API安全漏洞。这种常见错误使黑客能够执行许多攻击,例如欺骗。

欺骗是攻击者获得系统访问权限后采取的第一步。他们会创建一个域,然后尝试获取用户的身份验证凭据。如果成功,他们会尝试在使用相同机制的其他应用程序中执行相同操作。

缓解措施

使用适当的加密技术。理想情况下,使用公钥基础设施 (PKI) 并确保每个用户都有证书。这将解决欺骗问题,因为如果域是可信的,用户将不会接受其他人提供的任何证书。

不要以明文形式存储敏感数据。如果您需要将数据从一个系统传输到另一个系统,请使用 XMLHttpRequest(或者更好的是,HttpWebRequest),对其进行加密,然后通过 HTTPS 发送。

3.注入攻击和命令注入攻击

这些攻击是通过意外的输入方法运行恶意代码(例如,使用外部输入重载变量)或将恶意代码输入合法网站,这是一种非常严重的API安全漏洞。这些类型的攻击在 Web 应用程序中最为常见。它们可能导致数据被盗或会话被劫持,从而导致冒充或特权提升攻击。

缓解措施

  1. 在适用的情况下通过允许列表限制输入。
  2. 对不受信任的数据使用输出编码技术。
  3. 启用数据库的参数化查询。

4.不安全的设计

这是开发人员没有将应用程序安全性纳入其系统设计中,或者在设计时没有正确完成的一个方面,从而引发API安全漏洞,例如API接口文档的某类查询设计依赖隐私字段。在设计新框架时,您应该始终努力尽可能地将安全性集成到整个应用程序中。否则,您将在应用程序的设计和维护阶段重复自己。

缓解措施

  1. 将安全关键函数作为处理它们的类上的方法,而不是控制器内部的方法。
  2. 切勿向第三方公司提供超出您权限范围的数据;如果这样做,请制定处理政策。

该漏洞涉及安全机制的不当配置,可公开访问,甚至是内部网络,从而可能导致未经授权访问敏感数据。

5. 安全配置错误

此API安全漏洞涉及安全机制的不当配置,这些机制可公开访问,甚至可进入内部网络,从而导致未经授权访问敏感数据。这可能包括错误设置防火墙,允许黑客从防火墙内部进入并造成损害。

缓解措施

  1. 正确配置所有安全机制。
  2. 检查并修复任何薄弱或缺失的安全机制。
  3. 审查适用库的配置以确保良好的设计实践。
  4. 确保根据您为应用程序设置的策略正确设置防火墙。

6. 易受攻击和过时的组件

此领域包括使用易受攻击的组件,例如那些已知存在安全漏洞的组件。此外,过时的组件可能会导致更高的攻击风险,因为它可能没有及时更新安全补丁。当依赖第三方软件或组件时,您无法控制其内部结构。但您可以确保根据最新更新更新它们,从而降低应用程序的风险,避免引发API安全漏洞。

缓解措施

  1. 根据发布日期更新所有组件。
  2. 每六个月或在发布安全补丁时升级所有组件。
  3. 在生产中安装组件之前,请先测试系统中的组件以确保它们是安全的。

7. 身份识别和认证失败

我们认为此API安全漏洞与无法正确验证用户或访问凭证有关。它可能包括密码弱点、弱会话标识符、弱会话令牌、重放攻击或用于身份验证的弱密码。

缓解措施

  1. 使用不易受到重放攻击的会话。
  2. 使用强会话标识符。
  3. 对 Web 应用程序使用身份验证令牌。
  4. 确保cookies不容易受到注入攻击(例如,不要在cookies本身中设置不安全的值或敏感信息)。

8. 软件和数据完整性故障

这个领域涉及软件漏洞,例如缓冲区溢出攻击、内存损坏问题和数据完整性问题,例如弱校验和或缺少数字签名和散列算法,这些问题很容易被利用 – 即使是对您的数据感兴趣但没有进行实际“黑客攻击”的普通黑客也可以利用。

缓解措施

  1. 确保代码使用安全校验和来检测和防止篡改。
  2. 验证完整性检查是否正在执行。
  3. 启用敏感数据加密,防止其被窥探。

9. 安全日志和监控失败

此API安全漏洞是由于未能在应用程序中包含安全日志或未对其进行监控而导致缺乏历史数据,而这些数据可能有助于确定攻击/漏洞是如何发生的。日志记录为开发人员和安全专家提供了关键信息,他们可以从政策或技术角度重现造成此类损害的事件。

缓解措施

  1. 在您的应用程序中启用安全日志记录并定期监控。
  2. 确保日志包含对系统完整性至关重要的数据。
  3. 使用日志关联工具关联分布式应用程序或组件之间的事件。
  4. 如果需要调试,请确保您没有泄露日志本身的隐私信息。

当受害者点击恶意链接或提交网络表单后,这可能会导致攻击者采取未经授权的操作。

10. 服务器端请求伪造

这一领域存在两个问题:一是未能实施安全的请求伪造响应。二是系统间发送请求时未使用安全的 HTTP 协议。这可能导致攻击者在受害者点击恶意链接或提交 Web 表单后执行未经授权的操作。

减轻

  1. 主动检查传出的请求并阻止任何看起来可疑的请求。
  2. 确保标头中不包含任何可能引发其他攻击的敏感信息。

结论

OWASP Top 10 API安全漏洞 是一项宝贵的资源,它可以帮助您通过识别和解决系统中最常见的漏洞来构建安全的 Web 应用程序。遵循上述准则并使用一些可靠的API 安全测试工具可以最大限度地减少应用程序面临的安全风险,并降低遭受攻击的可能性。

 原文链接:API Security: OWASP’s Top 10 Vulnerabilities Explained

#你可能也喜欢这些API文章!