5种典型 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 攻击及预防建议的更多相关文章
- Web常见几种攻击与预防方式
DoS和DDoS攻击 DoS(Denial of Service),即拒绝服务,造成远程服务器拒绝服务的行为被称为DoS攻击.其目的是使计算机或网络无法提供正常的服务.最常见的DoS攻击有计算机网络带 ...
- XSS与CSRF两种跨站攻击比较
XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery) 在那个年代,大家一般用拼接字符串的方式来构造动态SQL 语 ...
- 总结 XSS 与 CSRF 两种跨站攻击
前言 在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了 ...
- 总结XSS与CSRF两种跨站攻击
XSS:跨站脚本(Cross-site scripting),实际应是"CSS",但由于和层叠样式表CSS名称冲突,故改为"XSS" CSRF:跨站请求伪造(C ...
- XSS与CSRF两种跨站攻击总结
在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了.但是 ...
- 简单总结几种常见web攻击手段及其防御方式
web攻击手段有几种,本文简单介绍几种常见的攻击手段及其防御方式 XSS(跨站脚本攻击) CSRF(跨站请求伪造) SQL注入 DDOS XSS 概念 全称是跨站脚本攻击(Cross Site Scr ...
- 简单地总结几种常见web攻击手段及其防御方式
web攻击手段有几种,本文简单介绍几种常见的攻击手段及其防御方式 XSS(跨站脚本攻击) CSRF(跨站请求伪造) SQL注入 DDOS XSS 概念 全称是跨站脚本攻击(Cross Site Scr ...
- 几种常见web攻击手段及其防御方式
XSS(跨站脚本攻击) CSRF(跨站请求伪造) SQL注入 DDOS web安全系列目录 总结几种常见web攻击手段极其防御方式 总结几种常见的安全算法 XSS 概念 全称是跨站脚本攻击(Cross ...
- 总结几种常见web攻击手段及其防御方式
本文简单介绍几种常见的攻击手段及其防御方式 XSS(跨站脚本攻击) CSRF(跨站请求伪造) SQL注入 DDOS web安全系列目录 总结几种常见web攻击手段极其防御方式 总结几种常见的安全算法 ...
- ref:一种新的攻击方法——Java Web表达式注入
ref:https://blog.csdn.net/kk_gods/article/details/51840683 一种新的攻击方法——Java Web表达式注入 2016年07月06日 17:01 ...
随机推荐
- Exchange备份和日志清除
最近新部署Exchange 2019,虽然变化不大,但是也遇到了一些小问题.随着深入研究,就能发现一些以前被忽视的点.Exchange完成备份后,数据库日志并没有被清除,依然存在.https://ww ...
- Exchange 2019中的Unified Messaging(UM)
前天,刚刚安装了测试用的Exchange 2019.安装过程和之前的2016一样,非常顺利.但是在用ECP管理服务器的时候遇到了一个报错.The term 'Get-UMService' is not ...
- es证书生成方式
./bin/elasticsearch-certutil ca --pem # 生成一个名字叫做elastic-stack-ca.zip的文件 unzip elastic-stack-ca.zip A ...
- 几篇关于MySQL数据同步到Elasticsearch的文章---第二篇:canal 实现Mysql到Elasticsearch实时增量同步
文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484377&idx=1&sn=199bc88 ...
- gitlab添加新用户
添加用户的时候没法给用户设置密码,可以等用户添加后,编辑用户的时候给用户设置密码 新用户首次登陆后需要重置密码 新用户登陆后是英文界面,设置成中文界面
- PVC-U排水管的断管与接管
1. PVC-U管的常用切割工具 2. PVC-U管的胶粘剂 3. 用胶粘剂粘接PVC-U管与管件
- 12. Fluentd部署:多Workers进程模式
介绍如何使用Fluentd的多worker模式处理高访问量的日志事件.此模式会运行多个worker进程以最大利用多核CPU. 原理 默认情况下,一个Fluentd实例会运行一个监控进程和一个工作进程. ...
- Java问题之超过数值表示范围(例如64位)结果是什么 (阶乘)
关于老师在课上所提及的这个问题 我做了验证 截图如下 只是一个简单的计算阶乘的代码 在运行时得到了如下结果 可以看到,对于部分数字如果超出范围会从64位处自动截断,而这时由于是二进制表示,首位默认是符 ...
- FastJson序列化对象复杂时出错问题解决
FastJson序列化对象复杂时出错问题解决 针对复杂的对象,如Map<String, List<Map<String, XxxObject<A, B, C>>&g ...
- 【软件学习】怎么在Word里面设置MathType分隔符,使公式按照章节自动编号
前提 确保已安装好了MathType,且在设置为Word加载项 若没有安装或设置为加载项,请转至博客另一篇文章: [软件学习]如何下载安装Mathtype,并将其加载至Word 第一步 点击MathT ...