当前位置: 首页 > 科技观察

OWASP基金会提出十大API风险警告

时间:2023-03-13 03:58:40 科技观察

API(ApplicationProgrammingInterface,应用程序编程接口)是一些预定义的接口(如函数、HTTP接口),或者指软件系统不同组件之间的约定。虽然API为连接软件组件提供了一个有效的框架,但它们经常将后端数据暴露给第三方,使它们成为攻击者的主要目标。不安全的API不断扩大应用程序的攻击面,使黑客更容易进行侦察、收集配置信息和策划网络攻击。日前,OWASP(OpenWebApplicationSecurityProject,一个致力于提高软件安全性的非盈利基金会)列出了十个API漏洞。组织需要警惕这些漏洞的风险,包括:1、损坏的对象级授权API依赖对象级授权来验证合法用户对资源的访问。API端点接收到请求对象的ID后,会在代码层面实现授权检查机制,确保用户被授权执行请求的操作。API通常公开为对象提供标识符的端点。如果没有对象级授权检查或实施不当,攻击者可以操纵所请求对象的API端点,然后无法正确验证提交请求的用户是否具有所需的资源访问权限,从而授予未经授权的访问权限。2.受损的用户身份验证按照设计,API端点必须暴露给外部服务,并由使用用户身份验证的各种代理访问。因此,在API端点上实施的身份验证不充分或不正确可能允许恶意用户暂时破坏合法用户的身份验证令牌以获取对敏感信息的访问权限。API端点的验证受损可能会出现几个问题。导致身份验证受损的一些常见错误配置包括:不安全的内部API弱API密钥和不频繁的密钥轮换API端点使用GET参数发送敏感信息无效令牌访问身份验证/缺少JWT访问令牌使端点容易受到凭证填充和暴力破解攻击的身份验证缺陷强制攻击密码薄弱/管理不善用户身份验证受损API允许恶意黑客冒用合法用户的身份,为更严重和复杂的攻击提供机会。3.数据暴露过度处理用户请求,API通常依赖客户端UI对访问的数据进行过滤。当用户请求访问资源时,API返回存储在应用程序中的完整数据对象。然后客户端应用程序过滤响应以仅显示用户想要查看的信息。不幸的是,开发人员经常错误地将API设置为通用数据源。这允许攻击者直接调用API来访问应该被客户端UI过滤掉的数据。攻击者使用暴露的内容进行破坏,或使用暴露的数据提升权限。4.缺乏资源和速率限制一些API缺乏默认机制来限制来自特定客户端的请求的频率和数量。黑客通过发出上传/修改大文件的请求,或通过向API发送大量请求,使API主机不堪重负来利用此漏洞。在这种情况下,API硬件可能会耗尽内存、网络带宽和CPU,并出现缓冲区溢出。这会增加API的重复时间,减少API可以处理的客户端数量,并且通常会导致拒绝服务。5.批量分配当API在没有适当过滤技术的情况下将客户端提供的数据绑定到应用程序时,就会发生批量分配。开发者使用绑定的方式,通过函数将用户输入绑定到内部对象和代码变量上,从而加快开发周期。攻击者可以通过评估API结构和对象关系来查找批量分配漏洞,以更新和修改旨在隐藏的对象属性。攻击者一旦修改了敏感对象的属性,往往会进行提权、绕过安全检查、篡改敏感数据等操作。6.安全配置错误API资源、应用程序基础设施和传输协议可能包含可能导致安全事件的错误配置。这些错误配置可能存在于API资源、传输协议或应用程序基础架构中。这包括:使用没有验证或弱验证的默认配置不强制执行HTTPS不必要的HTTP方法配置错误的HTTP标头未经处理的输入导致数据损坏数据泄漏广泛开放的云存储冗长的错误消息跨域资源共享的临时配置7.恶意注入API端点通常使用用户数据作为请求参数,或者在他们的URL中。当API端点没有任何内置机制来区分不受信任的用户数据时,攻击者可以将恶意输入注入应用程序。攻击者还可以将这些不受信任的数据作为命令/查询的一部分,诱使应用程序执行它们,从而获得对敏感数据的访问权限。缺乏对输入数据的适当验证可能导致注入攻击,包括数据泄露、特权升级或拒绝服务。常见的命令注入漏洞包括:带API参数的SQL注入、操作系统命令注入和跨站脚本。8.资产管理不当由于现代应用程序开发的交付周期很短,DevOps团队经常将更多API部署到生产环境中,这会产生资产管理问题。首先,向后兼容性要求迫使DevOps团队保持旧版本API的运行。攻击者经常觊觎这些旧版本,利用安全检查中的漏洞。其他API可能不遵守数据治理策略,使它们成为数据暴露的关键入口点。9.日志记录和监控不充分大多数API攻击发生在一段时间内,攻击者需要花时间寻找漏洞并规划合适的攻击策略。通过正确的日志记录和监控机制,开发团队可以第一时间发现恶意活动。不幸的是,大多数组织都为服务器和网络事件实施了适当的日志记录,但通常缺乏对API的足够日志记录监控。造成这种情况的一个关键原因是开发人员对API的使用没有深入的了解。因此,开发人员会错过安全事件,例如输入验证失败、身份验证检查失败以及其他指示无效访问的应用程序错误。在没有此类警报的情况下,攻击者可能会长时间未被发现,从而能够充分利用系统。10.功能级授权失败功能级授权失败是指应用程序未能将敏感功能限制给授权用户。与损坏的对象级授权不同,此缺陷专门指未经授权的用户何时可以访问他们不应访问的敏感或受限功能。例如,当一个用户可以修改另一个用户的帐户或普通用户可以访问网站上的管理功能时,未经授权的用户可以访问敏感功能。这些问题是由访问控制缺失或配置错误引起的。参考链接:https://crashtest-security.com/owasp-api-top-10/