随着越来越多的组织依赖 Web 应用程序和连接服务提供的自动化和规模,应用程序编程接口 (API) 安全性已变得势在必行。仅去年一年,针对客户 API 的独特攻击者就增长了 400%,这证明组织必须采取主动方法来保护这些日益有价值的服务。
但考虑到 API 技术的快速发展和威胁数量的不断增加,了解从何处以及如何开始保护 API 可能会令人难以承受。幸运的是,像开放 Web 应用程序安全项目 (OWASP) 这样的组织一直在努力识别企业应优先考虑的最常见和最危险的 API 安全风险。
OWASP 前 10 名是什么?
开放 Web 应用程序安全项目 (OWASP) Top 10因其全面性和准确性而受到认可,是一份详细列表,每一到两年更新一次,突出显示企业应了解的关键 Web 应用程序安全风险。OWASP 是一个由数万名贡献者组成的非营利社区,致力于通过创建框架、工具和教育计划等各种措施来促进软件安全。
随着时间的推移,数字威胁不断演变。因此,OWASP列表会根据API安全特定的数据趋势及时更新,有助于开发人员和安全专业人员优先考虑对策。最近,2023年,OWASP发布了需要警惕的10大API安全风险的更新列表。
从列表底部开始,这些是组织在 2023 年需要注意的OWASP Top 10API 安全风险以及可以采取的缓解这些风险的具体措施。
10. API 的不安全使用
当应用程序无法验证、过滤或清理从外部 API 接收的数据时,就会发生 API 的不安全使用。这可能会导致注入攻击或数据泄露等安全漏洞。随着组织越来越依赖第三方 API 来提供关键功能,确保安全使用对于防止攻击者利用这些集成变得更加重要。
缓解策略:
- 在处理或存储之前验证和清理从外部 API 接收的所有数据。这有助于确保您的应用程序中仅使用有效且安全的数据。
- 使用允许列表和严格的数据类型限制实施输入验证,以防止您的应用程序处理潜在有害的数据。
- 使用安全的 API 网关来过滤和监控传入的 API 请求,从而针对针对您的 API 的恶意流量添加一层保护。
9、库存管理不当
库存管理不当与组织使用的 API 缺乏足够的控制有关。这可能会导致未经授权的访问和增加攻击面,从而将敏感数据暴露给恶意方。随着组织使用的 API 数量不断增加,跟踪其功能、端点和可访问性指令以维护对 API 生态系统的整体保护至关重要。
缓解策略:
- 维护组织内所有 API 的最新清单,包括其用途、端点和访问控制。这可以帮助您识别潜在的安全漏洞并确保所有 API 都得到充分保护。
- 定期审查和更新 API 文档,以确保其准确反映 API 的当前状态。清晰准确的文档对于开发人员和安全专业人员有效理解和保护 API 至关重要。
- 停用未使用或已弃用的 API,以最大程度地减少攻击面。删除不必要的 API 可以降低攻击者发现和利用易受攻击端点的可能性。
8. 安全配置错误
当 API 未安全配置时,就会发生安全配置错误,从而使其面临各种安全风险。安全配置错误的示例包括使用默认凭据、未能关闭不必要的功能或忽略及时应用安全补丁。
缓解策略:
- 在开发的早期阶段使用安全配置设置您的 API。
- 定期审查和更新 API 配置,以确保它们持续应用最佳安全实践。
- 使用自动化工具通过持续监控来检测和修复安全配置错误。
7. 服务器端请求伪造(SSRF)
服务器端请求伪造 (SSRF) 是一个漏洞,允许攻击者操纵服务器端请求,可能导致未经授权访问内部资源或远程执行代码。这可能会导致敏感数据暴露、关键系统中断甚至整个系统受损。
缓解策略:
- 验证和清理服务器端请求中使用的用户提供的输入。这有助于确保您的应用程序仅处理合法请求,并降低 SSRF 攻击的风险。
- 限制 API 可以访问的请求类型和资源。实施严格的访问控制有助于防止未经授权的操作并限制 SSRF 攻击的潜在影响。
- 实施网络分段和防火墙规则以限制对内部系统的访问。您可以通过将敏感资源与面向公众的 API 隔离来降低 SSRF 攻击成功的可能性。
6. 不受限制地访问敏感业务流程
当 API 未能实施适当的访问控制时,就会出现对敏感业务流的不受限制的访问,从而允许未经授权的用户执行敏感操作或访问机密数据。
缓解策略:
- 为所有 API 端点实施强大的身份验证和授权机制。
- 应用最小权限原则,授予用户执行任务所需的最低权限。
- 定期审核和监控API访问日志,以检测和响应潜在的安全事件。
5. 功能级别授权被破坏
功能级授权损坏本质上是指由于不安全的直接对象引用 (IDOR) 问题,普通用户可以执行应为管理员保留的任务的情况。当用户的分级权限系统不完整或出现故障时,就会发生这种情况。
缓解策略:
- 对所有 API 端点实施严格的授权检查。
- 使用基于角色的访问控制 (RBAC) 来管理用户权限。
- 定期审查和更新访问控制策略。
4. 资源消耗不受限制
当攻击者利用 API 漏洞消耗过多的系统资源(例如内存、CPU 或网络带宽)时,就会发生无限制的资源消耗或拒绝服务 (DoS) 攻击。这可能会导致受影响的服务降级或完全不可用。
缓解策略:
- 监视和限制资源使用。
- 实施速率限制以控制来自客户端的请求数量。
- 使用缓存来减少后端系统的负载。
3.破坏对象属性级别授权
损坏的对象属性级别授权是一种安全风险,当攻击者可以访问或修改他们不应访问的对象的属性时,就会发生这种安全风险。如果 API 在授予对象属性访问权限之前未正确验证用户权限,则可能会发生这种情况。
缓解策略:
- 对所有对象属性实施适当的访问控制检查。
- 在授予对对象属性的访问权限之前验证用户权限。
- 使用基于属性的访问控制 (ABAC) 定义精细的访问规则。
2. 认证失效
当身份验证协议不够强大或执行不正确时,就会出现安全问题。这为攻击者在未被发现的情况下破坏 API 敞开了大门。身份验证弱点可以通过多种方式表现出来,包括但不限于不良的密码创建最佳实践、受损的密码存储系统以及基于令牌的身份验证框架中的漏洞。
缓解策略:
- 实施强密码策略。
- 使用安全密码存储方法,例如 bcrypt 或 Argon2。
- 尽可能实施多重身份验证 (MFA)。
1. 对象级授权被破坏
由于验证数据对象访问的授权控制存在缺陷,当用户可以访问其他用户的数据时,就会出现对象级授权损坏 (BOLA) 漏洞。BOLA 漏洞通常是由不安全的编码实践引起的,例如在授予对象访问权限之前未能正确验证用户输入或检查权限。当 API 使用过于宽松的访问控制或 API 资源没有得到充分保护时,就会发生这种情况。
缓解策略:
- 采用随机、通用唯一标识符 (UUID)。
- 建立强大的授权协议。
- 采用零信任安全框架。
确保API 安全
确保 API 的安全需要采用整体方法,涵盖从身份验证和授权到访问控制和资源管理的所有内容。通过采取必要的步骤来确保API 并采用最佳安全实践,可以保护应用程序和数据免受潜在攻击,同时受益于强大的 API 驱动架构的优势。