5种典型 API 攻击及预防建议

典型,api,攻击,预防,建议 · 浏览次数 : 503

小编点评

**API 滥用** API 滥用是指在 API 设计中犯错或设计缺陷的情况下,利用 API 的能力进行攻击的行为。 **API 攻击/漏洞** API 攻击是指利用 API 的漏洞执行恶意行为的现象。 **OWASP 攻击/漏洞** OWASP 攻击/漏洞是指在 API 安全模型中出现漏洞的行为。 **API 滥用案例** * Facebook 利用 Facebook API 收集用户大量数据,引发了数据泄露事件。 * Venmo 是一种移动支付服务,在 2019 年发生严重的数据抓取问题,导致了国家安全问题。 **API 安全** * 确保 API 设计严谨,以防止攻击。 * 使用授权取代过时和不安全的认证方法。 * 添加输入验证机制避免执行特殊字符全面的日志记录、监控和警报。 * 对 API 进行漏洞扫描。

正文

API 帮助跨多个设备互连多个应用程序或软件系统,定义它们可以发出的调用或请求的种类、调用的方式、应使用的数据格式以及应遵守的约定。API 已经发展成为重要的互连,支持不同应用程序架构之间的通信,促进新服务的更快集成和部署。软件开发程序也依赖 API 来提供服务、平台管理和持续部署。涉及移动设备、云数据系统和微服务设计模式的现代应用程序架构需要使用多个 API 作为网关,以促进不同 Web 应用程序之间的互操作性。
 

在 API 安全领域,“攻击”和“漏洞”这两个词经常互换使用,许多人并不了解 API 攻击/漏洞的真正含义。API 攻击/漏洞是一种威胁类别,在很大程度上未被行业现有的 API 安全框架和指南解决。为了保持基于 API 的安全和可信度,必须改进应对的思维和工具,以应对公司现在面临的各种 API 威胁——以及 API 威胁形势的快速发展。
 

什么是 API 滥用?

任何设计和代码都难以避免错误,安全技术也是如此。有时软件的结构,哪怕是根据相应规范设计的,都可能有被滥用技术利用的风险。
 

OWASP 这样定义软件 “滥用(abuse)”:

创建误用和滥用案例以滥用或利用软件功能中控件的弱点来攻击应用程序。使用应用程序的滥用案例模型,作为识别直接或间接利用滥用场景的具体安全测试的媒介。

 
简 而言之,滥用案例模型在某种程度上是威胁建模。API 对于构建坚固且持续的通信桥梁至关重要,该桥梁使设备能够无缝传递所需信息。然而黑客采用多种方式来利用 API 并破坏目标设备,这种 API 开发是对 API 安全的潜在威胁。如果在 API 设计的威胁建模阶段没有考虑到执行锁定端口,并且没有添加补偿控制,那么这些 API 就有可能被“滥用”。API 滥用是指错误处理 API、获得未经批准的访问和修改关键功能的行为,以便 API 可用于攻击服务器或使服务器超载等敌对过程。它是在机器人、网络钓鱼攻击或手动插入恶意代码的帮助下执行的。
 

API 滥用很常见,但原因不总是因为 API 本身设计不佳。有时 API 具有可预测的设计结构,这也让攻击者有机会滥用 API。API 滥用包括:

  • 出于恶意原因以未经批准的方式使用 API。在这些情况下,API 在技术上按设计使用,但被错误的人或出于错误的原因使用。比如数据抓取。
  • 利用应用程序逻辑中的漏洞。这些滥用是特定于特定业务的,在许多情况下,并没有通过 OWASP 框架来解决。
     

API 滥用的严重影响

企业往往会因为他们的 API 通过了漏洞评估而觉得企业的 API 是安全且“完美”的。但最大的 API 保护缺口是对向合作伙伴开放的 API 的保护,这些 API 很容易被滥用。即使 API 编写得非常完美且没有漏洞,也可能以意想不到的方式被滥用,从而暴露共享它们的组织的核心业务功能和数据。
 

最典型的例子就是 2018 年剑桥分析公司 (CA) 丑闻。在该事件中,CA 利用 Facebook 的开放 API 收集了至少 8700 万用户的大量数据。这是通过使用 Facebook 测验应用程序来实现的,该应用程序利用了一个允许第三方应用程序收集有关测验者的信息的许可设置,以及他们所有朋友的兴趣、位置数据等。这些信息随后被出售给各种政治活动。其全部影响可能永远不得而知,但公认的影响对2016年美国总统大选和英国“脱欧”公投产生了重大影响。该事件还导致 Facebook 的市值立即遭受超过 1000 亿美元的打击,罚款超过数十亿美元,并在数年后一直成为政府监管机构的目标。
 

所有这些都不涉及利用 Facebook API 基础设施中的基础设施漏洞。Facebook 暴露了一个最终被滥用的核心业务 API,而 CA 只是简单地以创建它时未打算或未预料到的方式使用了 Facebook 的公共 API。
 

API 滥用实例及预防建议

以下是一些常见的 API 滥用案例,以及如何预防的建议。
 

失效的对象级授权 (BOLA)

BOLA 指对对象访问请求的验证不充分,允许攻击者通过重用访问令牌来执行未经授权的操作。根据 OWASP 的 API 安全项目,BOLA 是当今最严重且最常见的 API 攻击,占所有 API 攻击的40%。
 

预防 BOLA 的建议:

  • 实施依赖于用户策略的授权机制,验证登录用户是否有权执行请求的操作。
  • 使用随机和不可预测的值作为记录 ID 的 GUID。
  • 编写评估授权的测试。

分布式拒绝服务攻击 (DDoS)

DDoS 是一种常见的攻击类型,恶意攻击者通过故意使用来自多个设备和 IP 地址的大量机器人流量使 API 过载。对于企业而言,关键业务服务因此面临风险,例如登录服务、会话管理和其他为用户提供应用程序正常运行时间和可用性的服务。
 

执行 DDoS 活动的攻击者通常使用不对称技术,通过这种技术发送少量数据来生成 API 调用,这通常会导致服务器严重超载,因为他们必须使用大量数据来响应此类 API 调用。此类攻击会严重占用系统资源并大大增加系统所有用户的服务器响应时间。
 

企业可以采取以下措施来阻止 DDoS 攻击:

  • 流量分析
  • 速率限制(例如,每个客户端/资源的请求数、请求负载大小)。
  • 自动缩放资源(确保为阈值报告打开警报)。
     

安全配置错误

应用程序中安全设置的不当配置可能会导致通过帐户接管(ATO) 的方式被利用和攻击。
 
防止这种情况的几种方法是:

  • 盘点和管理所有 API,特别留意影子 API 和僵尸 API。
  • 扩大数据治理范围,从应用程序扩展到所涉及的 API 的数据。
     

数据泄露

这种威胁通常被认为是通过开放的 API 意外泄露机密信息造成的。Venmo 是 PayPal 旗下的移动支付服务。在 Venmo 中,交易在设计上和默认情况下都是公开的。这种开放策略在 2019 年导致了严重的数据抓取问题,2 亿 Venmo 用户的私人信息被抓取。此外,还发现了美国总统拜登的 Venmo 账户。 无论是有意还是无意的数据泄露,在被大量滥用时都可能引发国家安全问题。
 
缓解或消除数据泄露风险的两种方法是:

  • 在 API 而非客户端级别执行信息过滤
  • 避免在功能不需要时发送敏感信息
     

API 注入

API 注入指恶意代码连同 API 请求被注入。注入的命令执行后,这种恶意代码(不仅仅是 SQLi)可以从服务器删除用户的整个站点。恶意攻击者通常以此来获取对私人数据的访问权限。
 

以下是一些避免注入的方法:

  • 参数化查询
  • 保证安全的上下文,可在时间线上查看所有 API 活动。
  • 用授权取代过时和不安全的认证方法。
  • 在服务器端添加输入验证机制
  • 避免执行特殊字符
  • 全面的日志记录、监控和警报

 

参考链接:
https://cheatsheetseries.owasp.org/cheatsheets/Abuse_Case_Cheat_Sheet.html
 
https://apiacademy.co/2018/06/how-the-facebook-api-led-to-the-cambridge-analytica-fiasco/
 
https://salt.security/blog/api-security-fundamentals
 
https://www.buzzfeednews.com/article/ryanmac/we-found-joe-bidens-secret-venmo

与5种典型 API 攻击及预防建议相似的内容:

5种典型 API 攻击及预防建议

API 帮助跨多个设备互连多个应用程序或软件系统,定义它们可以发出的调用或请求的种类、调用的方式、应使用的数据格式以及应遵守的约定。API 已经发展成为重要的互连,支持不同应用程序架构之间的通信,促进新服务的更快集成和部署。软件开发程序也依赖 API 来提供服务、平台管理和持续部署。涉及移动设备、云

一文搞懂5种内存溢出案例,内含完整源码

本文分享自华为云社区《10分钟搞懂各种内存溢出案例!!(含完整源码,建议收藏)》,作者:冰 河。 作为程序员,多多少少都会遇到一些内存溢出的场景,如果你还没遇到,说明你工作的年限可能比较短,或者你根本就是个假程序员!哈哈,开个玩笑。今天,我们就以Java代码的方式来列举几个典型的内存溢出案例,希望大

5种GaussDB ETCD服务异常实例分析处理

摘要:一文带你细数几种ETCD服务异常实例状态。 本文分享自华为云社区《【实例状态】GaussDB ETCD服务异常》,作者:酷哥 。 首先确认是否是虚拟机、网络故障 虚拟机故障导致ETCD服务异常告警 问题现象 管控面上报etcd服务异常告警,虚拟机发生重启,热迁移、冷迁移,HA等动作。 问题分析

【23种设计模式】单例模式(一)

## 前言: 单例模式是创建型模式5种中的第1种,**关注对象的创建, 保证一个类仅有一个实例,并且提供一个全局访问点**。在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。如何绕过常规的构造器,提供一种机制来保证一个类只创建一个实例

Redis最常见的5种应用场景

Redis作为当今最流行的内存数据库,已经成为服务端加速的必备工具之一。对于Redis为什么那么快?以及Redis采用单线程,但为什么反而获得更高的性能的疑问,在之前的Redis为什么那么快?一文中,已经有所介绍。 今天通过这篇,我们来了解一下Redis最常见的5种应用场景。您可以通过视频来学习,如

Python图像处理丨5种图像处理特效

摘要:本篇文章主要讲解了图像常见的特效处理,从处理效果图、算法原理、代码实现三个步骤进行详细讲解,涉及图像素描特效、怀旧特效、光照特效、流年特效、图像滤镜等。 本文分享自华为云社区《[Python图像处理] 二十五.图像特效处理之素描、怀旧、光照、流年以及滤镜特效》,作者: eastmount。 一

[转帖]阿里架构师进阶专题:Redis集群的5种使用方式,各自优缺点分析

https://www.toutiao.com/article/6611108111048507908/ 本文主要针对 Redis 常见的几种使用方式及其优缺点展开分析。 一、常见使用方式 Redis 的几种常见使用方式包括: Redis 单副本 Redis 多副本(主从) Redis Sentin

[转帖]谁写的!? - 调试I/O源头的通用逻辑

https://zhuanlan.zhihu.com/p/511093857 本文从一个实际例子触发, 总结了5种定位I/O来源的方法. 现象描述 客户环境报dd写入速度慢, 写入10M数据花了30秒钟 #dd if=/dev/zero of=test bs=1M count=10 conv=fda

Java 方法中循环调用具有事务的方法

本文简要介绍了Java 方法中循环调用具有事务的具体方法示例,虽然@Transactional是Spring中最常用和推荐的方式,但是本文还简要介绍了其他5种方法可以实现类似的功能。

(二)Redis 数据类型与结构

1、值的数据类型 Redis “快”取决于两方面,一方面,它是内存数据库,另一方面,则是高效的数据结构。Redis 键值对中值的数据类型,也就是数据的保存形式有5种:String(字符串)、List(列表)、Hash(哈希)、Set(集合)和 Sorted Set(有序集合)。这5种数据类型由6种底