随着API在全球范围内呈现爆发式增长,API已经成为了各种应用程序的重要组成部分,同时也成为了黑客攻击的新目标。近年来,API攻击呈现出明显的上升趋势,攻击者可以通过API暴露的漏洞或者安全弱点,轻易地获取用户信息、业务逻辑或者系统访问权限,给企业和⽤户带来重大的损失。
为了强调API安全的重要性和独特性,OWASP在2019针对API安全首次发布了OWASP API TOP 10,也就是API安全性的十大风险清单。旨在帮助开发人员和安全专家更好地了解和处理API应用程序中存在的安全漏洞和攻击,从而提高API应用程序的安全性。
来看一下OWASP API TOP10在2023年的最新发布:
API1:2023 - Broken Object Level Authorization 不安全的对象授权
与19年版相同,不安全授权的对象在API仍然是第一风险。API 多半以公开方式处理,因此极易被攻击。由于验证数据对象访问的授权控制存在缺陷,当用户可以访问其他用户的数据时,就会出现对象级授权损坏 (BOLA) 漏洞。OWASP建议对象授权应考虑在每项功能设计中,以防未授权的数据泄露、数据被窜改或破坏。
API2:2023 - Broken Authentication 无效身份认证
身份认证在API中是另一个相对复杂和重要的机制。身份验证机制若实施不当,能使攻击者破坏或利用身份验证token,暂时或永久地冒用其他用户的身份。无效身份认证会破坏系统识别用户的能力,会损害 API的整体安全。
API3:2023 - Broken Object Property Level Authorization 对象属性级别授权失效
在23年版本中,这个风险结合了19年的API3:2019 Excessive Data Exposure(资料暴露不当)和API6:2019 - Mass Assignment (批量配置不当)。因为这两个风险的根本原因都是对象属性级别的授权验证缺失或不当,不能确保用户只能存取对应权限的资源或资料。对象属性级别授权失效会导致数据泄露或被未授权者篡改。
API4:2023 - Unrestricted Resource Consumption 不受限的资源消耗
API常设计用来供查询数据,因此API请求需要网络带宽、CPU、内存等资源,还有其他资源,如电子邮件、短信或生物识别验证等。API由服务提供者提供,并按请求对这些资源付费。成功的攻击者可能利用这项风险,造成导致服务负载过高或增加运营成本。
API5:2023 - Broken Function Level Authorization 无效功能权限控管
复杂的存取控制策略涉及不同的层级、组态和角色,并且在管理和常规功能之间没有明确的分离,往往会导致授权漏洞。攻击者将API请求发送到他们本来不应该存取,但暴露给匿名使用者或没有权限的一般使用者的端点。利用这些问题,攻击者可以存取其他用户的资源或管理功能。
API6:2023 - Unrestricted Access to Sensitive Business Flows 不受限地存取敏感商务流程
易受此风险影响的API可能是自动化流程过度使用的功能,容易发生在购买票(车票、门票类)或评论的相关功能,这不一定是程序端的缺陷也可能是设计上的缺陷。
API7:2023 - Server Side Request Forgery 服务器端请求伪造
当API在未验证使用者提供的 URI 的情况下获取远端资源时,可能会出现服务器端请求伪造 (SSRF) 缺陷。这使攻击者能够强制应用程式将精心设计的请求发送到意想不到的目的地,即使该目的地已经受到防火墙或 VPN 的保护。
API8:2023 - Security Misconfiguration 安全组态错误
API系统通常包含复杂的配置,主要让API更具弹性及定制化。软件和DevOps工程师可能会忽视这些配置,或在配置方面未遵循安全最佳实践方案,因而打开攻击大门。
API9:2023 - Improper Inventory Management 库存管理不当
API通常比传统Web应用程式暴露更多的端点,因此确认和更新文档非常重要。对主机和API版本进行适当的管理也很重要,以减少如废弃的API版本和暴露的测试端点等运维问题。
API10:2023 - Unsafe Consumption of APIs API的不安全使用
开发人员一般会更信任来自合作厂商API的资料,因此对合作厂商采取较弱的安全标准。为了破坏API,攻击者会攻击合作厂商服务,而不是直接尝试破坏目标API。