构建高效API的10个API设计最佳实践
剖析 Edulog 家长门户网站 API 漏洞,化解 BOLA 威胁
Edulog 家长门户平台发生了什么?
2023 年 9 月 13 日,Tenable 的研究人员发现 Edulog 的家长门户 API 中存在一个漏洞,该漏洞允许任何创建帐户的人绕过学校注册保护措施并“不受限制地访问”任何可用信息。
这个 API 缺陷暴露了什么?
- 学生姓名
- 指定公交车的 GPS 位置
- 家长联系信息
攻击者如何利用该漏洞?
任何创建帐户的人都可以手动直接向 API 端点提交请求。这样他们就可以从上面检索任何信息,甚至无需注册学校。
对象级授权失效
请求验证失败允许攻击者通过重复使用访问令牌执行未经授权的操作。Tenable 研究人员利用此漏洞从其他用户那里获取信息。
身份验证失败
破坏的用户身份验证允许攻击者冒充合法用户。Tenable 研究人员通过手动向 API 端点提交请求来实现这一点。API 将研究人员视为帐户所有者。
如何防止这种情况发生在你身上
Edulog 不是第一个拥有易受攻击的 API 的教育平台,当然也不会是最后一个,但有一些措施可以防止类似的事情发生。以下是您可以采取的措施来保护您的公司免受 BOLA 和 Broken Authentication 的侵害:
实施强大的授权机制
实施强大的授权机制是任何组织对抗 BOLA 漏洞应采取的第一步。
许多组织认为他们的 API 是安全的,因为他们有强大的身份验证。但当涉及到 BOLA 漏洞时,这实际上并没有多大帮助。
为了保证 API 的安全,您需要强大的身份验证机制,但更大的挑战是确保您拥有良好控制的授权策略,并进行严格、持续的测试,以确保它们没有逻辑缺陷或漏洞。
使用随机通用唯一标识符 (UUID)
下一步是重新定义在 API 生态系统中生成和管理 ID 的过程。自动递增 ID 绝对必须取消。
作为替代方案,在创建和访问 API 时使用随机 ID。这些 ID 通常称为 UUID,专门设计用于让网络犯罪分子或未经授权的用户难以猜测。
UUID 由字母、数字和符号组合组成,没有固有含义或模式,因此几乎不可能猜测或进行逆向工程。
使用 UUID 可最大限度地降低恶意篡改的风险,这是 BOLA 漏洞的根本原因之一。
专注于您的业务逻辑层
BOLA 漏洞非常棘手,因为它们通常潜伏在API 的业务逻辑层中。
这意味着什么?这意味着 BOLA 漏洞通常是由于 API 合法功能设计缺陷而发生的,而不是恶意代理使用复杂的漏洞侵入您的系统。
这就是为什么要仔细测试您的业务逻辑层以发现每次发布时无法使用漏洞扫描程序可靠解决的漏洞至关重要。
“BOLA 已经位居 OWASP API 安全前 10 名榜单之首,这是有充分理由的。API 提供商在确保用户通过 API 身份验证方面做得很好,因此他们希望确保合法用户能够访问。但经常被忽视的第一件事是授权,确保用户 A 无法访问用户 B 的资源。隐藏资源 ID 是一回事,但重要的因素是用户 A 根本不能访问、交互或更改用户 B 的资源。”
– Corey Ball,网络安全咨询经理兼《Hacking API》作者
实施零信任安全模型
实施零信任安全模型是组织通常采取的另一个措施,以保护 API 免受 BOLA 漏洞的攻击。
在传统的安全模型中,经过授权和认证的用户默认是受到信任的。
但在零信任安全模型中,所有用户在访问任何资源之前都必须经过身份验证和授权。此外,授权用户会受到持续监控,以防止内部威胁。
基于此模型,每个 API 调用都必须经过身份验证和授权才能执行。用户通过身份验证后,现有的授权机制将确定用户是否被允许访问所请求的资源。
如果用户未获得授权,则不会执行 API 调用,这使得攻击者更难以利用 BOLA 漏洞。
确保持续进行 API 安全测试
这可以说是保护 API 免受 BOLA 漏洞攻击的最有效方法。然而,问题就在这里。
传统的 API 安全测试工具并不可靠,因为漏洞扫描程序没有考虑到 API 的独特架构,而渗透测试无法扩展以确保每次更新都完全覆盖。
APIsec 是一种行业领先的解决方案,它利用人工智能的力量来剖析您的 API 并生成旨在识别业务逻辑漏洞的定制攻击场景。
APIsec 是自动保护您的 API 免受 BOLA 漏洞和最重要的业务逻辑缺陷侵害的唯一可靠方法,同时确保全面覆盖并消除人为错误。
文章来源:Edulog Parent Portal Breach: Unraveling the API Vulnerability and Safeguarding Against BOLA Threats