learning center banner

BOLA是什么?

BOLA:一种关键的API漏洞,因缺乏足够的对象访问验证,使攻击者能够执行未经授权的操作,从而危及数据安全和用户隐私。

破损的对象级授权(BOLA)是一种访问控制漏洞,允许攻击者通过操纵请求中的对象ID来访问他们没有权限访问的资源。这个漏洞通常发生在API中,因为服务器通常依赖客户端发送的对象ID来确定用户可以访问哪些对象,而没有进行适当的权限检查。

让我们想象一个在线银行应用程序,允许用户查看他们的账户信息。用户可能会这样请求查看他们的账户:GET /account/12345。但如果该应用程序没有检查用户是否被允许查看该账户,这可能会造成问题。一个坏人可能会尝试更改请求以查看其他人的账户。例如,他们可能会尝试GET /account/67890。银行应用程序需要确保每个用户只能查看自己的账户信息;否则,可能导致信息泄露。

在最新的OWASP Top 10中,破损的访问控制已从2017年的第五位上升至2021年的第一位,成为最关键的Web应用安全风险。这种漏洞发生在用户能够执行超出其预期权限的操作时,可能导致未经授权的信息披露、修改或数据销毁。

BOLA漏洞造成的常见问题是什么?

BOLA漏洞可能引发的问题包括:

  1. 数据泄露:攻击者可以访问其他用户的数据。例如,在医疗保健应用程序中,攻击者可能通过修改患者ID来访问其他患者的病历。
  2. 账户接管:在某些情况下,未授权访问对象可能导致整个账户的接管。例如,攻击者可能通过修改车辆识别号码(VIN)来访问和控制不属于他们的车辆。
  3. 数据丢失或损坏:BOLA漏洞还可能导致数据的更改或删除。例如,攻击者可能通过修改文档ID删除云存储服务中属于其他用户的文件。
  4. 业务流程中断:在电子商务平台中,攻击者可能操纵商店名称以访问成千上万家在线商店的销售数据,从而干扰正常的业务运营。
  5. 运营成本增加:攻击者可能利用BOLA漏洞进行拒绝服务攻击,通过大量未授权请求消耗API资源,导致服务提供商成本增加。

BOLA漏洞攻击的原则是什么?

BOLA漏洞发生的原因:

  1. API端点接收对象ID:API端点接收一个对象的ID,该ID可能通过URI、请求头或请求体传递。如果API在执行操作之前没有检查调用者对该资源的权限,则可能存在BOLA漏洞。
  2. 缺乏适当的权限检查:API在执行请求操作之前没有验证登录用户是否有权对所请求的对象执行操作。这通常发生在服务器组件没有完全跟踪客户端状态,而是依赖于客户端发送的诸如对象ID等参数来确定可以访问哪些对象时。
  3. 易于利用:一旦攻击者识别出BOLA漏洞,使用简单的脚本进行利用通常很容易。攻击者只需将自己的资源ID替换为另一个用户的资源ID即可。
  4. 导致敏感信息泄露:BOLA漏洞可能导致向未经授权的第三方泄露敏感信息、数据丢失或数据篡改。在某些情况下,未经授权访问对象也可能导致整个账户的接管。

总之,缺乏全面的用户身份验证和参数加密使得某些用户能够利用漏洞,任意修改访问权限。下图显示了用户A只能访问资源A。当程序的身份验证不完整时,用户可能构造一个API来访问资源B,从而获得访问甚至修改资源B的权限。

UserA not allowed to access UserB data

如何防止BOLA漏洞?

以下是防止BOLA漏洞的一些关键措施。通过实施这些预防措施,可以显著降低BOLA漏洞的风险,保护API免受未授权访问和操作。

序号预防措施描述
1实施对象级授权检查在每个API端点执行操作之前,验证用户是否有权限对特定对象进行操作。
2使用随机且不可预测的ID避免使用顺序整数或容易猜测的ID,以减少攻击者预测或操控资源标识符的机会。
3限制自动API创建避免使用自动生成API端点的工具,确保每个端点遵循访问控制模型。
4跟踪和管理API端点定期进行安全审计和渗透测试,以识别和修复潜在的安全漏洞。
5使用API网关安装API网关作为所有API请求的单一入口,以应用安全策略。
6实施强身份验证和授权使用行业标准的身份验证协议,如OAuth 2.0、JWT等,并实施基于角色的访问控制。
7使用Web应用防火墙(WAF)WAF为企业API提供额外的保护层,以抵御常见的Web应用攻击。
8数据验证过滤服务器接受的所有内容,并使用XML或JSON架构验证参数。
9速率限制限制用户或IP地址在特定时间内可以发出的请求数量,以防止暴力破解和DoS攻击。
10安全测试定期进行API安全测试,如渗透测试、注入测试和用户身份验证测试,以识别和解决漏洞。
11监控和修补定期监控API中的异常网络活动,并更新API以使用最新的安全补丁、错误修复和新功能。
12敏感数据加密使用SSL/TLS加密协议保护API与客户端应用程序之间的通信,并加密存储的敏感数据。
13访问控制列表(ACL)使用ACL控制用户对特定资源的访问。
14最小权限原则确保用户仅拥有完成任务所需的最低权限,避免过多的权限。
15教育与培训为开发人员提供安全意识培训,以确保他们理解如何安全地设计和实现API。

结论

BOLA是一种常见的安全缺陷,可能导致敏感数据泄露或未经授权的操作。在设计和构建应用程序时,开发人员需要确保他们对所有对象进行正确的访问控制,以防止此类问题。我们需要在开发和测试过程中更加努力地解决和预防这些问题。另一种选择是选择强大的第三方解决方案来帮助我们解决这些问题。

Tencent EdgeOne提供强大的Web攻击保护,有效拦截各种威胁。凭借广泛的攻击特征数据库,它可以减少Web攻击、利用、特洛伊木马、后门和其他安全问题的风险。我们现在推出了免费试用,欢迎您注册联系我们以获取更多信息。

常见问题解答

Q1: BOLA与IDOR有什么关系?

A1: BOLA与IDOR(不安全的直接对象引用)密切相关。它们基本上指的是同一种类型的漏洞,攻击者由于授权检查不足,可以访问或操纵其他用户的对象。

Q2: 为什么BOLA被认为是重大安全风险?

A2: BOLA在OWASP API前十名列表中排名第一。它是API中最普遍的漏洞之一,可能暴露敏感数据并允许未经授权访问用户信息。

Q3: 能否提供BOLA漏洞利用的例子?

A3: Peloton安全事件就是一个BOLA利用的例子。由于缺乏对象级授权,攻击者能够查看其他用户的所有数据,包括私人信息。

Q4: 开发人员如何防止BOLA漏洞?

A4: 为了防止BOLA漏洞,开发人员应实施适当的对象级授权检查。这包括验证用户对每个对象访问请求的权限,并确保用户只能访问他们被授权查看或修改的对象。