在API安全发展的过程中,除了各大安全厂商和头部互联网企业在 奔走呼吁之外,还有一家公益性安全组织,即开放式Web应用程序安全 项目(Open Web Application Security Project,OWASP)。OWASP是一 个开源的、非盈利的全球性安全组织,主要致力于应用软件的安全研 究,它有很多开源项目,OWASP API安全Top 10就是其中的一个。

在OWASP API安全Top 10中,OWASP延续了Web安全的传统,收 集了公开的与API安全事件有关的数据和漏洞猎人赏金平台的数据,由 安全专家组进行分类,最终挑选出了十大API安全漏洞的类型,以警示 业界提高对API安全问题的关注。这十大API安全漏洞类型的含义分别如下。

API1-失效的对象级授权:攻击者通过破坏对象级别授权的API, 来获得未经授权的或敏感的数据,比如通过可预测订单ID值来查询所有订单信息。

API2-失效的用户认证:开发者对API身份认证机制设计存在缺陷 或无保护设计,导致身份认证机制无效,比如弱密码、无锁定机制而被暴露破解、Token未校验或Token泄露导致认证机制失效等。

API3-过度的数据暴露:在API响应报文中,未对应答数据做适当 的过滤,返回过多的、不必要的敏感信息。比如查询用户信息接口时却返回了身份证号、密码信息;查询订单信息时也返回了付款银行卡号、 付款人地址信息等。

API4-缺乏资源和速率控制:在API设计中,未对API做资源和速 率限制或保护不足,导致被攻击。比如用户信息接口未做频次限制导致 所有用户数据被盗;文本翻译接口没有速率限制导致大量文件上传耗尽 翻译服务器源。

API5-失效的功能级授权:与API1类似,只不过此处主要指功能 级的控制,比如修改HTTP方法,从GET改成DELETE便能访问一些非 授权的API;普通用户可以访问api/userinfo的调用,直接修改为 api/admininfo,即可调用管理类API。

 API6-批量分配:在API的业务对象或数据结构中,通常存在多个 属性,攻击者通过篡改属性值的方式,达到攻击目的。比如通过设置user.is_admin和user.is_manager的值提升用户权限等级;假设某API的默 认接口调用参数为{"user_name":"user","is_admin":0},而恶意攻击者修 改请求参数,提交值为{"user_name":"attacker","is_admin":1},通过修改参数is_admin的值来提升为管理员权限。

API7-安全性配置错误:系统配置错误导致API的不安全,比如传 输层没有使用TLS导致中间人劫持;异常堆栈信息未处理直接抛给调用 端导致敏感信息泄露。

API8-注入:与OWASP Web安全注入类型相似,主要指SQL注 入、NoSQL注入、命令行注入、XML注入等。

API9-资产管理不当:对于API资产的管理不清,比如测试环境 的、已过期的、低版本的、未升级补丁的、影子API等接口暴露,从管 理上没有梳理清楚,导致被黑客攻击。

API10-日志记录和监控不足:对API缺失有效的监控和日志审计 手段,导致被黑客攻击时缺少告警、提醒,未能及时阻断。比如没有统 一的API网关、没有SEIM平台、没有接入Web应用防火墙等。 OWASP API安全Top 10的发布,第一次在公众视野中理清了API安 全的常见问题类型,同时也从API生命周期管理、纵深防御的安全设计 思想上,为API安全的综合治理提供了指导方向。当然,作为API安全 的第一个版本,也会有它的不足,比如笔者认为API1与API5对问题成 因的阐述,没有传统的Web安全中对水平越权、垂直越权的描述清晰, 容易导致问题归类划分的混乱,但仍有理由相信,OWASP API安全Top 10对业界的重大意义,未来的版本发布更值得期待。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐