API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。虽然API为连接各软件组件提供了一套有效的框架,但它们通常将后端数据暴露给第三方,因而成为攻击者的主要目标。 不安全的API会持续扩大应用程序攻击面,让黑客更容易进行侦察、收集配置信息以及策划网络攻击。日前,OWASP(Open Web Application Security Project,开放式Web应用程序安全项目,一个致力于提高软件安全性的非营利基金会)列出了十大API漏洞,组织需要警惕这些漏洞风险,具体包括:
1、损坏的对象级授权
API依靠对象级授权来验证合法用户的资源访问权限。API端点收到所请求对象的ID后,在代码级实施授权检查机制,以确保用户有权执行所请求的操作。API通常会暴露为对象提供标识符的端点。如果没有对象级授权检查或实施不当,攻击者可以操纵所请求对象的API端点,之后无法正确验证提交请求的用户拥有所需的资源访问权限,从而授予未经授权的访问权。
2、受损的用户身份验证
按照设计,API端点必须暴露给外部服务,并由各种代理使用用户身份验证来访问。因此,API端点实施的验证不充分或不正确,会让恶意用户可以暂时破坏合法用户的验证令牌,以访问敏感信息。API端点受损的验证可能会出现多个问题。导致验证受损的一些常见错误配置包括如下:
-
不安全的内部API
薄弱的API密钥,密钥又不经常轮换
使用GET参数发送敏感信息的API端点
无效的令牌访问验证/JWT访问令牌缺少验证
使端点容易受到凭证填充攻击和蛮力攻击的授权缺陷
弱密码/管理不善的密码
用户验证受损的API允许恶意黑客冒充合法用户的身份,从而为更严重、更复杂的攻击提供机会。
3、数据暴露过度
处理用户请求时,API通常依赖客户端UI过滤访问的数据。用户请求访问资源时,API返回存储在应用程序中的完整数据对象。然后,客户端应用程序过滤响应,仅显示用户想要查看的信息。遗憾的是,开发人员常常错误地将API设置为通用数据源。这样一来,攻击者可以直接调用API,以访问客户端UI应过滤掉的数据。攻击者根据暴露内容进行破坏,或使用暴露的数据来提升权限。
4、缺乏资源和速率限制
一些API缺少默认机制以限制来自特定客户端的请求频次和数量。黑客利用这个空子,发出上传/修改大文件的请求,或者向API发出大量请求,从而使API主机不堪重负。在这种情况下,API硬件可能耗尽内存、网络带宽和CPU,并遇到缓冲区溢出。这增加了API的复发时间(relapse time),减少了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、功能级授权失效
功能级授权失效是指应用程序未能将敏感功能限制给授权用户。与损坏的对象级授权不同,此缺陷特指未经授权的用户何时可以访问他们不应访问的敏感或受限功能。例如,当一个用户可以修改另一个用户的账户或普通用户可以访问站点上的管理功能时,未经授权的用户就可以访问敏感功能。这些问题由缺少或错误配置的访问控制引起。
转载请注明:IT运维空间 » 安全防护 » OWASP基金会提出十大 API 风险警告
发表评论