对象级别授权失效 (Broken Object Level Authorization, BOLA) 漏洞是指应用程序或 API 未能正确验证用户是否有权访问特定数据。
应用程序或 API 中的漏洞允许攻击者通过操纵和迭代对象标识符(例如用户 ID 或订单 ID)来绕过授权检查并访问潜在的敏感信息。
漏洞可能在任何时候发生,包括在原始应用程序的部署中。然而,对身份验证和授权策略的更改或升级也可能会引入这些漏洞。
BOLA 漏洞与账户接管一样危险。成功利用 BOLA 漏洞允许攻击者访问或更改他们不应拥有所有权的数据。
当 Cloudflare 检测到利用 BOLA 攻击中常见的两个不同信号时,会将端点标记为具有 BOLA 风险:Parameter pollution(参数污染) 和 Enumeration(枚举)。
Cloudflare 会跟踪每个会话如何与每个端点进行交互,并标记那些成功请求的唯一数据点明显多于该端点基线的会话。
枚举示例
端点:GET /api/v1/users/{userId}/credit-cards
- 正常行为:用户仅使用自己的
userId请求信用卡。 - 攻击行为:攻击者通过暴力迭代通过其他方法找到的
userId,在每个会话中请求数百个userId值。 - 结果:如果此端点的源站授权策略已失效,攻击者将获得他们请求的每个用户账户的信用卡信息。
Cloudflare 会检测以下成功的请求:在预期位置(路径、查询字符串、标头或 cookie)找到的参数值在未预期的相似位置被重复传递。这种行为可能表明攻击者试图混淆 API 的授权系统并绕过安全控制。
参数污染示例
端点:GET /api/v1/orders/{orderId}
- 正常行为:
orderId在路径变量中发送,例如GET /api/v1/orders/12345。 - 攻击者行为:
orderId同时也作为查询参数发送,从而触发了在查询参数中查找订单且恰好缺少授权检查的旧版未公开代码:GET /api/v1/orders/12345?orderId=67890。 - 结果:通过传入虚假订单或攻击者拥有的订单 (
12345),他们能够触发旧版未公开代码,并访问他们不拥有的订单 (67890)。
API Shield 通过学习访问者流量模式并识别对特定对象的异常访问来检测 BOLA 攻击。受影响的端点会自动标记以下风险标签:
cf-risk-bola-enumeration:当端点经历成功响应,且不同用户会话请求的唯一元素数量存在巨大差异时自动添加。cf-risk-bola-pollution:当端点经历成功响应,且在请求的多个位置中发现参数(与 API 架构的预期相反)时自动添加。
如果您在 API 端点上看到这些标签之一,请与您的开发团队一起审查其授权策略,以找出任何授权漏洞。您也可以联系 Cloudflare 以获取包含攻击者标识符的报告,以确认攻击范围和影响。
BOLA 攻击信息可以在您的安全概述、安全分析和端点详细信息中找到。
如果您的端点上检测到 BOLA 漏洞,您可以通过 Cloudflare 仪表板查看攻击摘要和缓解建议。
-
在 Cloudflare 仪表板中,前往 Security(安全性) 页面。
Go to Overview ↗ -
前往 API 滥用 或 所有建议。
-
根据攻击类型,选择 Review traffic from potential BOLA enumeration attacks(审查来自潜在 BOLA 枚举攻击的流量) 或 Review traffic from potential parameter pollution attacks(审查来自潜在参数污染攻击的流量),以查看攻击的详细信息和建议的操作。
-
选择 View all affected endpoints(查看所有受影响的端点) 或在特定端点上选择 View details(查看详情),以在 Web 资产中审查可疑会话。
Cloudflare 会评估您的会话请求是否存在枚举和参数污染攻击,并为您提供风险端点列表以及检测到攻击的异常会话数量。您可以遵循建议的操作来解决您的 BOLA 漏洞并防止未来针对您的端点的攻击。
您可以在 Cloudflare 仪表板中查看您区域的流量配置分析,以及与枚举或参数污染攻击相关的可疑请求。
Go to Analytics ↗根据您区域中检测到的攻击类型过滤请求(包括在攻击中找到的哈希会话 ID 和相应的 BOLA 漏洞风险标签),以查看过去七天请求活动的分析。此过滤器包含来自可疑攻击者会话的所有流量,因此您可以评估他们在您区域中采取的其他操作。
这不会按特定端点进行过滤。
审查受攻击影响的托管 API 端点、路径和值、源 IP、源用户代理以及源指纹的首要统计数据和详细信息。
审查您的流量配置文件以查找异常模式,例如唯一对象请求激增或非预期的参数位置。
您可以在 Web 资产中展开端点详细信息,以访问有关端点上可疑会话活动的信息,包括枚举攻击和参数污染攻击详细信息。
Go to Web assets ↗在 Security overview(安全概述) 下,选择 View attacks(查看攻击) 以审查受影响的会话以及关联的 IP 地址和 JA4 指纹(有助于识别发出请求的软件的 TLS 客户端指纹)。
您可以导出包含所有或仅特定会话的所有 IP 地址和 JA4 指纹的 .csv 文件。
详细信息指定了受影响的参数、参与攻击的会话数量以及它们的行为偏离基线的程度。
如果获得了对参数的未经授权访问,请考虑对您的应用程序、用户和数据的潜在影响。作为最佳实践,请通过审查您的 API 源站日志中滥用会话的 IP 地址和 JA4 指纹,与您的应用程序和 API 开发人员进行沟通以确认未经授权的访问。
您可以在安全分析中查看攻击数据。
Go to Analytics ↗托管端点将自动在过去七天的请求活动中被过滤。您也可以按攻击详情中找到的可疑 IP 地址和指纹进行过滤。
对象级别授权失效漏洞检测仅适用于企业版客户。如果您是对该产品感兴趣的企业版客户,请联系您的账户团队。