什么是 BOPLA?

对象属性级授权 (BOPLA) 失效是应用程序编程接口 (API) 中的一个安全漏洞。由于权限检查不足,它可能允许黑客查看或操纵敏感对象的属性。这可能会导致数据丢失、敏感数据泄露、权限升级或帐户接管等问题。BOPLA 在 2023 年版的 OWASP 十大 API 安全问题列表中位列第三。

什么是 BOPLA 漏洞?

Web 应用程序会通过查询 API 以获取有关数据库记录或文件等对象的信息来检索数据并填充前端页面上的字段。每个对象通常都包含多个数据点或“属性”。例如,与用户帐户关联的个人资料可能包含 first_name、last_name、email_address、password、SSN_number 以及表明用户是否具有管理权限的 is_admin 等属性。

在 API 调用期间,API 通常会在 API 响应中发送多于技术上所需的信息,这使得客户端应用程序需要自行提取所需的数据,然后再为用户渲染视图。此漏洞通过两种不同的方式在 API 端点中引发风险:

数据泄露过多。当 API 响应包含的信息多于 API 调用所请求的信息,并且响应中可能还包含了用户或应用程序本不应该有权访问的敏感信息(在此示例中为 password 和 SSN_number)时,会发生这种情况。对于在网站或应用程序中显示的 API 响应来说,一些过多的数据仅存在于 API 响应本身中,并且可以轻松进行提取。

批量分配。当 API 端点允许未经授权的用户更改、添加或删除对象属性的值时,会发生这种情况。在上述记录示例中,当 API 响应不必要地暴露了存在 is_admin 属性时,攻击者便可以通过将 is_admin 属性更改为 TRUE 来实现未经授权的权限提升。这也可能让他们能够更改其他属性或访问他们本无权访问的其他对象。

BOPLA 首次出现在 2023 年版的 OWASP 十大 API 安全问题列表中。它合并了分别出现在先前列表中的数据泄露过多和批量分配这两种威胁。

BOPLA 与 BOLA 有什么区别?

BOPLA 与对象级授权失效 (BOLA) 相关,后者在 OWASP 十大 API 安全问题列表中位列第一。但是,BOLA 是指对访问整个对象的授权,而 BOPLA 是指影响对象内各个属性的漏洞。

Illustration showing that BOPLA refers to a property inside an object BOPLA 是指对象内的一个属性

“对象级授权失效”(BOLA) 与 BOPLA 之间的根本区别在于:BOLA 是指整个对象,而 BOPLA 是指对象内的一个属性。

即使 API 会实施足够的对象级授权来防止 BOLA 攻击,但这些措施可能不足以抵御 BOPLA 攻击。为了抵御 BOPLA 漏洞,团队必须采用更精细的授权来涵盖对象及其特征。并且,他们还必须考虑 API 对象内的不同访问级别,因为这些对象通常具有公共和私有属性。

BOPLA 攻击会造成什么损害?

针对 BOPLA 漏洞的攻击可能使攻击者能够:

  • 更改他们本无权访问的对象的属性
  • 查看本应禁止其访问的敏感数据
  • 提升权限以接管帐户

为什么 BOPLA 漏洞难以检测?

传统上,安全团队一直依靠 Web 应用程序防火墙API 网关来保护 API 免受威胁的侵扰。但是,WAF 和 API 网关安全并未考虑业务逻辑和 API 上下文,因此无法发现通过 API 发送的敏感数据,也无法理解各项数据资产所面临的暴露程度。这些 API 防护解决方案也并非总能将合法调用与恶意活动区分开来。例如,对 WAF 或 API 网关来说,一个将 PUT 方法与附加参数结合使用以发送请求的恶意 API 调用看起来就像是正常的 API 调用。

为了检测 BOPLA 漏洞,安全团队需要能够识别并报告 API 请求和响应中可能包含的各种敏感数据类型的技术。出色的解决方案还应跟踪异常活动。在这些活动中,攻击者使用了未经授权的参数来操纵 API 请求。为每个端点和用户的 API 访问建立基准并进行跟踪的能力有助于识别过度使用,并发现 API 调用中的附加参数超出正常行为范围的实例。API 安全防护措施还应当能够检测在攻击研究阶段探测 API 的攻击者,因为攻击者试图了解 API 的结构和业务逻辑。

如何防范 BOPLA 攻击?

确保代码是安全的,并确保对象属性权限不存在任何问题,这应该是开发人员的高优先级事项。但是,BOPLA 漏洞越来越多地出现在安全团队无法掌控的第三方 API 中。

为了防范 BOPLA 攻击,安全团队可以采取以下几个基本步骤。

对开发人员进行安全代码方面的培训。安全团队必须帮助开发人员了解正确分配属性级别权限的必要性,同时还必须对所有 API 端点实施标准化授权策略。安全代码必须考虑所有参考资源的用户授权级别和授权要求。安全策略必须严格控制哪些字段可通过允许列表进行编辑。此外,开发人员还应对 API 响应中所返回数据的量和类型持保守态度,并且应仅包含被充分理解的应用场景所必需的数据。

Zero Trust。最小权限原则是 Zero Trust 安全方法的基本要素。实施此原则可将用户的访问权限限制在所需的最低级别,从而帮助防止 BOPLA 攻击或减轻它们可能造成的损害。

发现。通过识别易受攻击的 API 端点,团队可以针对所发生的问题向开发人员发出告警,并告知供应商其 API 存在漏洞。

监控API 安全工具可以监控利用 BOPLA 漏洞发起的攻击(包括批量分配)的流量。

强授权。在 API 端点中暴露某个对象时,授权流程应确保用户确实被允许访问对象属性。采用基于角色的访问控制 (RBAC) 可确保只有获得授权的个人才能访问特定属性。

审计和更新。持续检查和更新权限有助于确保这些权限始终是最新且准确的。

常见问题 (FAQ)

应用程序编程接口 (API) 是一组支持截然不同的软件程序和组件进行通信、交换数据和共享功能的协议及定义。通过定义应用程序的交互方式,API 使不同的软件系统能够请求和共享为电子商务、移动支付、社交媒体云服务和许多其他计算领域中的重要功能提供支持的信息。

开放全球应用程序安全项目 (OWASP) 是一个旨在提高软件安全性的非营利组织。OWASP 每年都会发布针对 Web 应用程序和 API 的十大安全风险列表。该报告由来自世界各地的安全专家所组成的团队共同编写。

对象级授权失效 (BOLA) 是一种安全漏洞。根据 2023 年版的 OWASP 十大 API 安全风险列表,它被视为应用程序编程接口 (API) 所面临的头号威胁。BOLA 漏洞是 Web 应用程序的访问控制机制中的一个缺陷,它使用户能够访问或操纵 IT 环境内的“对象”,即数据库记录、文件或其他资源。当应用程序的机制未能正确实施访问控制时,未经授权的用户便能够对其本无权访问的对象执行操作。

客户为什么选择 Akamai

Akamai 是一家致力于支持并保护在线商业活动的网络安全和云计算公司。我们卓越的安全解决方案、出色的威胁情报和全球运营团队可提供深度防御,保护各地的企业数据和应用程序。Akamai 的全栈云计算解决方案可在海外分布广泛的平台上提供高性能和经济实惠的服务。全球多家企业坚信,Akamai 能够提供卓越的可靠性、扩展性和专业技术,助其从容拓展业务。

探索 Akamai 的所有安全解决方案