摘要: 随着针对API的攻击日益严重,OWASP组织也推出了OWASP API Security TOP 10项目,对目前API最受关注的十大风险点进行了总结,本文将结合实例对这十大风险进行解析。 近年来,越来越多的攻击者开始将目标对准API,由接口引起的攻击事件或数...
随着针对API的攻击日益严重,OWASP组织也推出了OWASP API Security TOP 10项目,对目前API最受关注的十大风险点进行了总结,本文将结合实例对这十大风险进行解析。
近年来,越来越多的攻击者开始将目标对准API,由接口引起的攻击事件或数据泄漏事件频频发生,严重损害了企业和用户的利益, 受到各方的高度关注。
例如:
- Facebook 5 亿用户数据泄漏,涉及信息包括用户昵称、邮箱、电话、家庭住址等信息,事后被判定为业务接口泄漏。
- 社交平台LinkedIn领英,超过7亿用户数据在暗网出售,涉及用户的全名、性别、邮件以及电话号码、工作职业等相关个人信息,部分数据也是通过 API 泄露获取。
那么什么是API呢?
API全称应用程序编程接口(Application Programming Interface),是通过定义函数、协议、数据结构等方式来明确应用程序中各个组件之间的通信与数据交互模式,将web应用、操作系统、数据库,以及计算机硬件或者软件以接口形式提供给外部使用。如果没有对接口进行安全防护,便可能存在安全风险。
API 既可以连接服务又可以用来传输数据,它独特的运行模式可能导致其面临着凭据失陷、越权访问、数据篡改、违规爬取、数据泄露等诸多安全风险。OWASP组织也推出了OWASP API Security TOP 10项目,对目前API最受关注的十大风险点进行了总结。
API安全风险Top1:失效的对象级别授权 (Broken Object Level Authorization)
01 概念
对象级授权是一种通常在代码层面实现的访问控制机制, 用于校验用户仅能访问其有权访问的对象,攻击者可以在发送的请求中改变对象的ID来攻击存在“失效的对象级授权”漏洞的API。这将导致敏感数据的未授权访问,最严重能够导致整个账户被控制,该问题在基于API的应用中非常普遍,因为服务器通常不会完整地跟踪用户的状态,而是依赖用户请求参数中的对象ID来决定访问哪些目标对象。
02 案例
Shopify网站20年存在的一则API漏洞,前后台交互通过改变链接中的id值来控制API返回不同用户数据,但是因为没有完善的权限控制机制,导致了攻击者可以通过修改id值来遍历用户数据,存在水平越权问题从而造成敏感信息泄漏。
API安全风险Top2:失效的用户身份验证 (Broken User Authentication)
01 概念
身份验证机制的实现往往不严格或者安全方案考虑不完整,使得攻击者能够破坏身份验证令牌,或利用漏洞临时或永久地盗用其他用户的身份, 破坏了系统识别客户端/用户的能力,损害API的整体安全性。
02 案例
某数据交互接口,后台服务器验证url令牌来确认来确认请求合法性,而令牌生成逻辑放在前端由js生成,攻击者便可以从js中提取出令牌构造逻辑生成合法令牌对接口发起恶意请求。
API安全风险Top 3:过度的数据暴露 (Excessive Data Exposure)
01 概念
API在对查询进行响应的时候返回了过多的敏感信息,通过敏感数据爬取分析工具对API的响应进行分析是否存在不应该返回给用户的多余敏感信息。
02 案例
某用户名查询接口,本应设计为只返回用户名,但实际向接口发起数据查询时,接口将用户所有信息均返回给客户端,造成数据泄露。
API安全风险Top 4:资源缺乏和速率限制 (Lack of Resources & Rate Limiting)
01 概念
API请求会占用网络、CPU、内存和存储等资源,如果没有对客户端/用户可以请求的资源大小或数量施加限制,不仅会影响API服务器的性能,从而导致拒绝服务(DoS),还为诸如暴力破解之类的身份验证漏洞敞开了大门。
02 案例
某数据查询接口,通过传入参数值控制返回内容,但未对传入的数据做限制,将原始传入参数size=10修改为size=999999,再放入burp批量发送请求,便形成dos攻击,服务器崩溃。
API安全风险Top 5:失效的功能级授权 (Broken Function Level Authorization)
01 概念
攻击者利用漏洞将合法的API调用发送给他们不应访问的API ,可能会暴露给匿名用户或常规的非特权用户。由于API更加结构化,并且更易于预测访问API的方式,因此更容易发现API中的这些缺陷(如,将HTTP方 法从GET替换为PUT,或将URL中的 “用户”字符串更改为“管理员”)。
02 案例
top5问题和top1问题相似,但top5侧重于权限提升相关,如垂直越权,以下案例来自Nord Security,修改传入id值向api发起请求,可以得到不同权限账户的敏感数据。
API安全风险Top6: 批量分配 (Mass Assignment)
01 概念
当 API 将客户端提供的数据绑定到应用程序,又没有适当的过滤技术时,就会发生批量分配。开发人员使用绑定方法,通过函数将用户输入与内部对象和代码变量绑定,以加快开发周期。攻击者可以通过评估 API 结构和对象关系,检测批量分配漏洞,更改和修改隐藏起来的对象属性。一旦攻击者成功修改了敏感对象的属性,往往会提升权限、绕过安全检查并篡改敏感数据。
这个漏洞通俗的理解就是 API 存在用户可控的参数实现攻击。
02 案例
一个乘车共享应用程序为用户提供了编辑更新个人资料基本信息的选项。在此过程中,将使用以下合法的JSON对象将 API 调用发送到PUT/ API /v1/users/me
随后查看个人信息时:GET/ API /v1/users/me,包含了一个附加的新属性:credit_balance属性
攻击者使用以下payload重放第一个请求:
{"user_name":"attacker","age":60,"credit_balance":99999},由于端点受批量分配参数可控缺陷影响,攻击者绕过充值检查即可修改信用余额。
API安全风险Top7:安全配置错误(Security Misconfiguration)
01 概念
安全配置错误是最常见的安全问题,这通常是由于不安全的默认配置、不完整的临时配置、开源云存储、错误的HTTP标头配置以及包含敏感信息的详细错误信息所造成的。安全配置错误不仅会暴露敏感用户数据,还包括系统细节,而这些细节可能导致服务器完全被控制。
这些错误配置可能存在于 API 资源、传输协议或应用程序基础架构中。包括如:未强制执行HTTPS、不必要的HTTP方法、错误配置的HTTP标头、未净化处理的输入导致数据受损、数据泄露、敞开的云存储、详细冗长的错误消息、临时配置、跨域资源共享、缺少安全补丁等。
02 案例
案例中呈现了多个安全配置错误的问题,第一未使用https协议,应用程序服务器管理员控制台自动重置页面没有做访问限制,公网可以直接访问进行重置管理员账号密码。
API安全风险Top 8:注入(Injection)
01 概念
API 端点通常将用户数据作为请求参数或者URL来使用,当 API 端点没有任何过滤机制来检测不受信任的用户数据时,攻击者可以将恶意输入注入应用程序。攻击者还可以将这些不受信任的数据作为命令/查询的一部分,诱使应用程序执行,从而进行注入攻击。缺乏安全的输入数据检测过滤就会导致黑客注入 API 端执行恶意代码,包括数据泄露、权限提升或拒绝服务。常见的命令注入漏洞包括:带 API 参数的SQL注入、操作系统命令注入和跨站脚本等。
02 案例
案例1
应用上的 API 接口接受一个主体来与服务器的AppServ对象进行交互。由于输入验证不充分,攻击者可以滥用该SCEN_ID参数将任意SQL语句注入到WHERE底层SQL语句的子句中。这会导致SQL盲注入漏洞,进而导致服务器上的远程代码执行。
案例2
通知电子邮件存在问题,当我更改警报通知电子邮件时发送了此PUT请求。其中提供的HTML标签将由电子邮件生成器呈现。这可能允许攻击者在这些警报电子邮件的标题下嵌入任意HTML代码或者链接。
API安全风险Top 9:资产管理不当(Improper Assets Management)
01 概念
如字面意思,就是 API 资产管理不当的问题, API 的非生产版本 API 接口,如未下线的历史接口、暴露测试接口地址。而此类接口的发现,大概有三种方式,一是通过检测所有流量包来查找;二是通过JS等信息收集方式发现去寻找并构造 API ;三是通过猜解、遍历方式去获取接口。
02 案例
一个本地搜索服务商在重新设计了他们的应用程序后留下了一个没有保护且运行中的旧 API 版本( API .someservice.com/v1)并且其能访问用户数据库。而针对最新发布的一版应用程序,攻击者发现了 API 地址( API .someservice.com/v2)。将URL中的v2替换为v1使攻击者能够访问旧的、不受保护的 API ,从而暴露超过1亿用户的个人身份信息(PII)。
API安全风险Top 10:日志和监控不足(Insufficient Logging&Monitoring)
01 概念
这个主要对于 API 的访问记录和攻击日志做日志记录,攻击者利用缺乏日志记录和缺少攻击行为监控,在未被监测的情况下滥用系统和攻击系统。如果没有日志和监视,或者日志和监视不足,那么就几乎不可能跟踪可疑活动并及时响应攻击。主要是以资产拥有方的角度出发的,和日常安全测试关系不大。
02 案例
视频共享平台遭到了“大规模”的 API 登录接口撞库攻击,尽管登录失败,但在攻击期间没有触发任何警报和安全拦截。
总结
随着数字化技术的发展,API呈现出爆发性式增长, API已经成为了企业和组织的重要流量入口。作为基础支撑平台的API承载的业务也越来越重要、越来越复杂,同时针对API的攻击在快速增长,API 面临的安全威胁逐步超越传统Web页面,成为黑客眼中的首要攻击点。
通过OWASP API Top10安全风险的分析可以看到,API安全和传统的Web安全还是有很大区别,一方面需要在设计和开发阶段,对API的安全性进行良好的构建和设计;另一方面还需要在进入运维阶段后,针对API进行专项型的防护,根据API的特点构建全生命周期的防护体系,从而更好地应对各类风险,做到未雨绸缪、防患于未然。
稿源:瑞数信息