OWASP 十大 API 安全风险概述和最佳实践

API 在现代应用架构中发挥着关键作用,这一 OWASP 项目侧重于引发对常见 API 安全漏洞的认识。

OWASP(开放式 Web 应用程序安全项目)编写十大 API 安全风险列表的目的是为了给 API 开发和维护人员提供相关信息,并加强对常见 API 安全弱点的认识。越来越多的攻击者将 API 视为攻击对象,而 OWASP 的 API 安全项目就将重点放在策略和解决方案层面,从而掌握与 API 相关的独特漏洞和安全风险并予以缓解。

什么是 API?

API(应用编程接口)是开发现代应用的基础,因为它们有利于提升应用与其他应用、服务或平台进行通信和交换数据的能力。API 是应用现代化策略的关键组成部分,也是移动应用的基础。它们让企业能够轻松与外部平台和第三方服务集成,并通过连接各种组件构建全面的解决方案。由此便催生出一种模块化方法来开发应用,让开发人员能够利用现有服务和功能、促进代码重用、缩短开发周期并提高生产力。

API 同时会扩大风险面,会专门引入不可预见的风险,原因在于它们在多云架构中具有相互依赖性。与 Web 应用一样,API 也容易受到漏洞利用、自动威胁的滥用、拒绝服务、错误配置以及绕过身份验证和授权控制的攻击。

就本质而言,API 会泄露关键业务逻辑和敏感信息(如用户数据、身份验证凭据和金融交易),并且将其视为目标的攻击变得愈发频繁,特别是登录、创建帐户、添加到购物车和转账功能。API 可以成为攻击者试图利用漏洞或弱点,或泄露底层基础设施和资源的切入点。

有哪些 API 安全最佳实践?

完善的 API 安全措施必不可少,如此可以保护数据免受未经授权的访问、操纵或泄露,从而确保隐私且维持用户和利益相关者的信任,同时还可以确保 API 的机密性、完整性和可用性。API 安全最佳实践包括以下内容:

  • 实施强身份验证和授权。强制执行适当的授权检查,确保经过身份验证的客户端具有访问特定资源或执行某些操作的必要权限。使用精细访问控制来限制对敏感 API 端点或数据以及相关对象和功能的访问。
  • 验证输入和输出编码。验证和净化从 API 客户端收到的所有输入,防止注入攻击,并对输出进行适当编码,以防止执行恶意脚本。
  • 使用安全通信。采用安全协议在 API 客户端和服务器之间传输数据,并对传输中和静态的敏感信息进行加密,确保数据的机密性和完整性。
  • 实施速率限制和节流。对 API 客户端在指定时间范围内可以发出的请求数量进行限制,防止过度使用或进行未授权访问尝试,例如分布式拒绝服务 (DDoS)和暴力破解攻击。
  • 定期进行安全测试和审计。定期进行安全评估、渗透测试和代码审查,从而识别和解决 API 中的潜在漏洞,并进行安全审计,以便检测弱点并确保符合行业标准和要求。由于 API 与底层框架和库之间存在相互依赖性,务必要重视这一点。
  • 强制执行架构和协议合规性。通过 OpenAPI 规范自动创建和强制执行主动的安全模型,这是确保一致安全策略的重要工具。
  • 动态发现并持续评估 API。API 激增会导致难以明确所有 API 的位置或难以维护所有 API,包括影子 API。安全控制需要使用零信任和最低访问权限范式不断清点和保护 API,从而缓解第三方相互依赖项的不可预见风险。
  • 全面的威胁检测。API 受制于并需要防范各种威胁,包括漏洞利用、错误配置、Bot、欺诈和滥用。

2023 年 OWASP 十大 API 安全风险

2023 年 OWASP 十大 API 安全风险旨在加强对常见 API 安全漏洞的认识,并帮助开发人员、设计师、架构师、经理和其他参与 API 开发和维护的人员采用一种主动的方式来保护 API 的安全。

2023 年 OWASP 十大 API 安全风险具体如下:

  1. 对象级别授权失效(Broken object level authorization)。当应用未能在对象或数据级别正确强制执行访问控制,从而允许攻击者操纵或绕过授权检查,并对应用中的特定对象或数据授予未授权访问权限时,就会出现此安全漏洞。这可能是由于授权检查实施不当、缺乏适当的验证或绕过访问控制所致。接收对象 ID 并对对象执行任何操作的每个 API 端点都应实施对象级授权检查,从而验证登录的用户是否有权对请求的对象执行所请求的操作。
  2. 身份认证失效(Broken authentication)。通常是 API 中的身份认证机制发生实施不正确的问题,允许攻击者获得对用户帐户或敏感数据的未授权访问,或执行未经授权的操作。通常是由于身份认证流程实施不当或配置不当、弱密码策略、会话管理缺陷或身份认证工作流程中的其他弱点所致。
  3. 对象属性级别授权失效(Broken object property level authorization)。当 API 未能在对象属性级别正确实施访问控制和授权检查时,就会发生此威胁。如果 API 端点会暴露属于敏感信息且不得由用户读取的对象属性,则容易受到上述攻击,这种漏洞有时被称为过度数据暴露。API 端点如果允许用户更改、添加或删除敏感对象属性的值,则也容易受到上述攻击,这种漏洞有时被称为批量分配。
  4. 未受限制的资源消耗(Unrestricted resource consumption)。这种攻击也称为资源耗尽,涉及利用 API 实施中的弱点,故意消耗过多的资源(如 CPU、内存、带宽或其他系统资源)。这种拒绝服务 (DoS) 会降低 API 或底层系统的性能或可用性,并可能导致停机。
  5. 功能级别授权失效(Broken function level authorization)。当 API 未能在功能或操作级别正确强制执行授权检查,从而允许攻击者访问未经授权的功能时,就会发生此威胁。由于现代应用可以定义许多类型的功能角色和组,并涉及攻击者可以操纵的复杂用户层级,因此很难实施正确的授权检查。
  6. 敏感业务访问无限制(Unrestricted access to sensitive business flows)。当 API 缺乏适当的访问控制或授权检查时,就会发生此攻击,从而使攻击者能够自动访问由 API 支持的敏感业务流程。这些业务流程可以为大批量购买货少高价的产品(如门票或运动鞋)提供支持,而这些产品可以在二级市场上以高于原价的价格转售。攻击者常会使用精密的自动化工具包重新调整攻击,如果目标的 Web 应用受到反自动化防御的充分保护,则他们可能会改弦易辙,向 API 背后的业务逻辑下手。
  7. 服务端请求伪造(Server-Side Request Forgery,即 SSRF)。当攻击者识别出易受攻击的 API 端点(接受用户提供的 URL 或对外部资源执行服务器端请求)时,就会产生此漏洞。攻击者会特制恶意请求,指定被攻击者视为攻击目标的内部资源或系统的 URL。在未辨别恶意请求的情况下,服务器就会对指定的 URL 执行服务器端请求,可能会暴露敏感信息或服务。
  8. 安全配置错误(Security misconfiguration)。攻击者会试图查找未修补的缺陷、常见端点、使用不安全的默认配置运行的服务,或未受保护的文件和目录,以获得对 API 的未授权访问。当 API 堆栈的任何级别(从网络到应用级别)缺少适当的安全强化,或者云服务上的权限配置不当时,都可能导致此漏洞。错误配置会影响 Web 应用和 API,并且随着架构不断分散并分布在多云环境中,风险也与日俱增。
  9. 存量资产管理不当(Improper inventory management)。随着时间的推移,API 可能会发生变化和更新,但过时或不安全的 API 版本可能会保留在生产环境中,或者较旧的端点可能会在未修补的状态下运行或使用较弱的安全要求,从而增加安全漏洞风险。由于缺乏适当的库存管理,因此很难跟踪正在使用的版本、过时或弃用的版本以及已解决的漏洞。影子和僵尸 API 存在极大的风险,而这也凸显了持续发现和自动保护的重要性。
  10. API 的不安全使用(Unsafe consumption of APIs)。开发人员倾向于信任从第三方 API 接收的数据,特别是从知名公司提供的 API 接收的数据,并且在输入验证和清洗或传输安全性方面,会对这些数据采用较弱的安全要求。当通过不安全的协议访问 API 或未使用适当的加密机制时,也可能发生不安全的消耗使用情况,从而导致窃听、数据拦截和对敏感信息的未授权访问。

集成型安全控制措施的案例

F5 如何应对 OWASP 提出的安全风险

F5 与 OWASP基金会站在同一阵营,且支持其致力于提高软件安全性,并在多个层面提高对 Web 应用安全风险和漏洞认识的这一宗旨。其实应用和 API 面临着同样的安全风险,在实施安全解决方案时需要考虑这些风险,例如:

  • 身份验证/授权控制薄弱
  • 配置错误
  • 业务逻辑滥用(撞库攻击或帐户接管)
  • 服务端请求伪造(Server-Side Request Forgery,即 SSRF)。

F5 的解决方案可以缓解 OWASP 十大 API 安全风险,并且这些解决方案可以随着应用的发展和 API 部署的增加,保护不断扩大的攻击面和新兴威胁。F5 Web 应用和 API 防护 (WAAP) 解决方案通过 WAF、API 安全、L3 到 L7 DDoS 缓解以及针对自动化威胁和欺诈的 Bot 防御在内的全方位保护措施来防御现代应用的整个攻击面。无论托管位置如何,分布式平台都可以轻松在整个应用和 API 资产中部署一致的策略和扩展安全性,并将保护措施集成到 API 生命周期和更广泛的安全生态系统中。

F5 提供混合安全架构,可始终如一地持续保护从核心到云再到边缘的应用和 API。F5 解决方案使用威胁情报、基于机器学习的安全和零信任原则,动态发现并自动保护 API 背后的关键业务逻辑,提供必要的弹性和敏捷性,助力在以 API 为动力的数字经济中占据竞争优势。

F5 Web 应用防火墙解决方案还可以阻止和缓解 OWASP Top 10(得到广泛认可的最关键 Web 应用安全风险列表)中所提及的更多风险。API(如 Web 应用)容易受到错误配置和自动化威胁的影响,并可能成为漏洞利用、SSRF 和试图绕过身份验证和授权控制攻击的目标。F5 WAF 解决方案会结合规则和行为保护,包括来自 F5 Labs 的威胁情报和基于机器学习的安全措施,从而有效防范新兴威胁;这些解决方案还可以与专门用于 Bot 防御的控制措施进行集成。

这些解决方案减轻了在云、本地和边缘环境中持续保护应用所带来的负担和复杂性,同时通过集中式 SaaS 基础设施简化管理。F5 WAF 还可以将保护措施集成到开发框架和 CI/CD 流水线中,并提供核心安全功能、集中协调,以及通过单一仪表板对分布式应用的应用性能和安全事件进行 360 度全方位监控,从而简化应用安全保护。

F5 还提供解决 OWASP 对 Web 应用的自动化威胁项目中概述的风险。F5 分布式云 Bot 防御能够防止可绕过现有 Bot 管理解决方案的欺诈和滥用,并提供实时监控和情报以及基于机器学习的回顾性分析,从而保护组织免受自动化攻击,不会对用户造成干扰或阻碍客户体验。无论攻击者如何调整,无论攻击是从 Web 应用转向 API,还是试图通过伪造遥测数据或使用人工 CAPTCHA 识别器来绕过反自动化防御措施,分布式云 Bot 防御都能提供有效的御防。

F5 还可以针对高级的线上安全提供多层 DDoS 防护,作为一种云交付型托管式缓解服务,可实时检测并缓解大规模网络、协议和以应用为目标的攻击;同样的防护也可以作为本地硬件、软件和混合解决方案的形式进行使用。F5 分布式云 DDoS 缓解可在容量耗尽攻击和特定于应用第 3 到第 4 层及高级的第 7 层攻击到达网络基础设施和应用之前,便对其进行防御。