OWASP API SECURITY TOP 10

news/2024/5/3 1:57:33/文章来源:https://blog.csdn.net/quandaquan/article/details/127927868

目录

1. API 安全风险

2. 细说TOP10

1. Broken Object Level Authorization

2. Broken User Authentication

3 Excessive Data Exposure

4 Lack of Resources & Rate Limiting

5 Broken Function Level Authorization 

6 Mass Assignment

7 security misconfiguration

8 injection

9 Improper Assets Management

10 Insufficient Logging & Monitoring



1. API 安全风险

api 安全风险从几个方面综合评估,包括可利用行,技术影响,业务硬,发现可能性。。。

2. 细说TOP10

1. Broken Object Level Authorization

简单来说,就是用户只能访问被授权的对象,否则呢。。就是这个漏洞了。。

例子:

  1. /shops/{shopName}/revenue_data.json.- 如果没有正确实施访问控制机制 如果user替换了shopname,试图访问别的shop,甚至可能访问成千上万个shop的数据

  2. 一个可穿戴设备,head中有 HTTP request header X-User-Id: 54796., 如果攻击者可以更改id并且成功访问,那就iu可以访问更改别人的数据了。 X-User-Id value with 54795

如何预防呢?

  • 基于用户政策实施正确的授权机制

  • 使用鉴权机制来检查login的用户是否有权限来执行请求中的action

  • 对于record id 使用随机数GUID

  • 测试

2. Broken User Authentication

对于认证,忘记密码,重置密码实施合理的认证,保护。否则就有这个问题了

  • 允许攻击者对同一个用户暴力破解,没有lockout机制

  • 允许弱密码

  • 在url中发送认证细节,例如 token,key,密码

  • 没有验证token的真实性

  • 使用明文,弱哈希密码

  • 弱加密key

就是说如果认证需要sms的六位验证码,攻击者大量重放,遍历,暴力之后成功认证了,就是这么个情况。

如何预防呢:

1 了解认证机制如何工作如何使用

2 不要重造轮子,自己去搞认证,token生成,密码存储。使用标准的东西

3 忘记密码,重置密码跟认证是一样的,要防止暴力破解,实施lockout 机制

4 MFA

5 实现反暴力破解机制,以减少凭据填充、字典攻击和暴力破解对身份验证端点的攻击。这个机制应该比常规更严格API上的限制机制。

6  实施账户lockout /captcha 

3 Excessive Data Exposure

说明 :The API returns sensitive data to the client by design. This data is usually filtered on the client side before being presented to the user. An attacker can easily sniff the traffic and see the sensitive data.

简单来说就是:返回了过多的信息,

例如 /api/articles/{articleId}/comments/{commentId} 返回了评论者的敏感信息,这个就是PII ,

如何预防

  • 不要依赖client端来过滤敏感信息

  • review response 确保只含有必须的信息

  • 避免使用 generic methods such as to_json() and to_string(). Instead, cherry-pick specific properties you really want to return.

  • 识别敏感信息PII, review所有返回,看是否存在问题

  • 4 Lack of Resources & Rate Limiting

没有实施rate limit限制可能导致dos攻击,导致没反应,影响可用性。

以下item不加限制均可导致此类漏洞

  1. 执行超时

  2. 最大可分配内存

  3. 进程数量

  4. payload size

  5. 每个client的请求数

  6. 每个request 每页的最大record数量

例子:

  1. 攻击者通过向/api/v1/images发出POST请求上传大图片。当上传是完成后,API会创建多个不同大小的缩略图。由于上传图片的大小,可用的内存在创建缩略图期间耗尽,API变得无响应。

  2. 我们有一个应用程序,它在每个页面限制200个用户的UI上包含用户列表。用户列表为

  3. 使用以下查询从服务器检索:/api/users?page=1&size=200。攻击者将size参数更改为200000,导致数据库出现性能问题。同时,API变得无响应,无法处理来自此或任何其他客户端(也称为DoS)的进一步请求。同样的场景也可能引发Integer Overflow或Buffer Overflow错误。

预防

  1. docker 容易限制 memory,CPU,重启数量,

  2. 实施client在固定时间内访问的次数限制

  3. 访问超过limit的时候通知用户,

  4. server端validation 查询字符串和请求body参数,尤其是控制record数量的参数

  5. 定义并强制所有传入参数和有效负载(如maximum)上的数据的最大值,字符串的长度和数组中元素的最大数量

Broken Function Level Authorization 

跟object level的区别是 :a用户有权限访问这个资源,但是没有权限删除,或者edit,
普通用户可以访问admin的endpoint。明明这个endpoint是只对admin可见的。a组的用户访问了B组用户才有的功能
例子: GET /api/admin/v1/users/all. 本来仅对admin可见的,而且没做访问控制,就把敏感信息暴露了
Broken function level authorization (BFLA) is somewhat similar to broken object level authorization (BOLA), but it differs from BOLA as it targets API’s function instead of the objects that APIs interact with as in the case of BOLA.
影响:信息泄露,攻击者违法执行delete操作
预防:

deny by default

admin的功能实施鉴权

6 Mass Assignment

api endpoint 自动把client输入转为内部object属性,么有考虑敏感信息泄露的情况,所以攻击者可以利用来update目标属性

说人话就是把不该暴露的给暴露出去了

Examples for sensitive properties:

• Permission-related properties: user.is_admin, user.is_vip should only be set by admins.

• Process-dependent properties: user.cash should only be set internally after payment verification.

• Internal properties: article.created_time should only be set internally by the application.

例子: credit balance不该暴露的,攻击者可以重放并且篡改。。。

A ride sharing application provides a user the option to edit basic information for their profile. During thisprocess, an API call is sent to PUT /api/v1/users/me with the following legitimate JSON object:{"user_name":"inons","age":24}The request GET /api/v1/users/me includes an additional credit_balance property:{"user_name":"inons","age":24,"credit_balance":10}The attacker replays the first request with the following payload:{"user_name":"attacker","age":60,"credit_balance":99999}Since the endpoint is vulnerable to mass assignment, the attacker receives credits without paying.

预防

  • 避免使用自动的绑定用户输入

  • 属性白名单,只接受应该接受的

  • 明确定义payload

  • 7 security misconfiguration

说明: 包括 unpatched flaws,未加密的文件,未授权的访问。

原因

  • 没有加固,没有正确实施加固

  • 没有升级patch

  • enable没用的feature

  • tls missing

  • cors policy

  • error message 包换stack track

例子:history文件中有运维的api

预防

  • hardening process
  • review configuration, orchestration files,api组件,cloud services
  • 自动化流程持续评估配置有效性
  • 定义api response apyload schemas,包括error response

8 injection

可能导致信息泄露,dos,
  • client数据没有验证,净化,过滤
  • client数据直接到sql,ldap,os,xml解析
  • 外部系统的数据没有经过api验证 
The following command allows the attacker to shut down any device with the same vulnerable firmware:
$ curl -k "https://${deviceIP}:4567/api/CONFIG/restore" -F
'appid=$(/etc/pod/power_down.sh)'
预防
  1. 数据验证,使用值得信任的library
  2. 客户提供的数据要验证,过滤,净化
  3. 参数化输入
  4. 限制返回记录的数量,

Improper Assets Management

旧的api 版本,没有patch,
没有文档,没有退役计划,没有清单,旧的api没patch继续服役。。。
这个是管理的问题
预防:
  • api 清单,在哪个环境,什么网络,什么版本。。。
  • 全面清晰的文档。。。
  • 文档自动化
  • 新的api,执行风险分析,

10 Insufficient Logging & Monitoring

没有log,log level不对,没有足够的信息
log完整性不能保证
没有持续监控log
预防措施
  • log 所有的认证失败,拒绝访问,输入验证失败
  • 格式化的log信息,能够给到log 管理平台来识别恶意的攻击者
  • log也是敏感信息
  • SEIM系统来管理,lo
  • 配置看板,alert,有可疑活动可以报警。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_224150.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【原创】使用Golang的电商搜索技术架构实现

作者:黑夜路人 时间:2022年11月 一、背景: 现在搜索技术已经是非常主流的应用技术,各种优秀的索引开源软件已经很普遍了,比如 Lucene/Solr/Elasticsearch 等等主流搜索索引开源软件,让我们搭建一个优秀的…

【FLASH存储器系列十】Nand Flash芯片使用指导之一

目录 1.1 芯片简介 1.2 功能框图 1.3 存储结构 1.4 信号定义 1.5 双平面(plane)操作 1.6 Die间交错操作 1.7 错误管理 今天以MT29F8G08AJADAWP芯片为例,说明nand flash的操作方法。 1.1 芯片简介 这是一款镁光的容量8Gb,总…

liunx集成jmeter进行压测实践

首先liunx环境需要部署jdk 1,获取jmeter免安装包:点击我获取免安装包 2,获取jmeter-manger工具,用于生成报告,日志等 点击我获取工具 3,在服务器上新建一个文件夹存放jmeter,推荐在/usr/local/下面,我这里由于权限问…

E 排队(排列组合)[牛客小*白月赛61]

题面如下: 思路 or 题解: 对于一个长度为 nnn 的 排列组合 如果存在一对 逆序对 (x,y)(x, y)(x,y) xxx 在 yyy 的前面有 n∗(n−1)2\frac{n * (n - 1)}{2}2n∗(n−1)​ 种情况 剩下 n−2n - 2n−2 个位置可以随意填数进去,不会影响到逆序对 …

狗屎一样的面试官,你遇到过几个?

做了几年软件开发,我们都或多或少面试过别人,或者被别人面试过。大家最常吐槽的就是面试造火箭,进厂拧螺丝。今天就来吐槽一下那些奇葩(gou)一样的面试官 A 那是在我刚工作1年的时候,出去面试前端开发。 那…

Python编程 元组的创建

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.元组知识点 二.元组(tuple) 1.元组介绍(掌握) 2.元组创建(掌握) 3.…

鉴源论坛 · 观模丨浅谈随机测试

作者 | 黄杉 华东师范大学软件工程学院博士 苏亭 华东师范大学软件工程学院教授 首发 | 鉴源论坛 观模 01 什么是随机测试 (Random Testing) 随机测试是一种使用随机、相互独立的程序输入来对计算机程序进行测试的黑盒软件测试(在完全忽…

Springboot常用参数注解

访问路径为http://localhost:8080/ PathVariable GetMapping("/get/{id}/blank/{name}")public Map getValue(PathVariable("id") Integer id,PathVariable("name") String name,PathVariable Map<String,String> kv){Map map new Hash…

大一新生HTML期末作业 学生个人网页设计作业 HTML5响应式个人简历网站模板 web前端网页制作课作业

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

CNN (吴恩达 2021

week1-2 02_边缘检测例子_哔哩哔哩_bilibili ​ ​ 我们之前在说面部识别介绍过&#xff0c;要识别面部&#xff0c;都是从细微的边缘入手&#xff0c;一层一层聚类&#xff0c;最终实现人脸的识别。神经网络由浅层到深层&#xff0c;分别可以检测出图片的边缘特征 、局部特…

web前端大一实训 HTML+CSS+JavaScript王者荣耀(60页) web课程设计网页规划与设计 HTML期末大作业 HTML网页设计结课作业

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

【MySQL进阶】深入理解B+树索引底层原理

【MySQL进阶】深入理解B树索引底层原理 文章目录【MySQL进阶】深入理解B树索引底层原理一、前言——没有索引的查找1、在一个页中的查找2、在很多页中查找3、总结二、索引1、一个简单的索引方案2、InnoDB中的索引方案3、B 树4、聚簇索引5、二级索引6、回表7、联合索引三、InnoD…

【MySQL数据库笔记 - 进阶篇】(二)索引

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;暂定 &#x1f4dd;视频地址&#xff1a;黑马程序员 MySQL数据库入门到精通 &#x1f4e3;专栏定位&#xff1a;这个专栏我将会整理 B 站黑马程序员的 MySQL…

linux备份mysql8.0数据库脚本

文章目录环境要求步骤1、创建一个.sh文件编写shell脚本2、添加定时任务环境要求 linux系统&#xff0c;安装了mysql8.0 步骤 1、创建一个.sh文件编写shell脚本 创建文件的命令&#xff1a; vim ***.shshell文件文件参考自文章 链接 export LANGen_US.UTF-8 #注意&#xf…

Python如何爬取免费爬虫ip

做过大数据抓取的程序员应该都知道&#xff0c;正常市面上的爬虫ip只分为两种&#xff0c;一种是API提取式的&#xff0c;还有一种是账密形式隧道模式的。往往因为高昂费用而止步。对于初学者觉得没有必要&#xff0c;我们知道每个卖爬虫ip的网站有的提供了免费IP&#xff0c;可…

webpack5 Preload / Prefetch解决按需求加载速度

代码分离 | webpack 中文文档webpack 是一个模块打包器。它的主要目标是将 JavaScript 文件打包在一起&#xff0c;打包后的文件用于在浏览器中使用&#xff0c;但它也能够胜任转换&#xff08;transform&#xff09;、打包&#xff08;bundle&#xff09;或包裹&#xff08;pa…

PDPS软件:机器人控制输送带运行虚拟仿真操作方法

目录 概述 旋转台设备运动机构介绍 旋转台设备模型导入与安装 旋转台设备操作创建 机器人控制旋转台设备离线程序命令添加 仿真运行 概述 旋转台也是工业机器人生产线中常用的外围设备&#xff0c;工件安装在旋转台的夹紧机构上&#xff0c;旋转台通过旋转实现工作位置的…

最新最全面的Spring详解(二)——classpath扫描和组件管理

前言 本文为 【Spring】classpath扫描和组件管理 相关知识&#xff0c;下边将对Component 和及其派生出的其他注解&#xff0c;自动检测类和注册beanDifination&#xff0c;组件命名&#xff0c;为自动检测组件提供scope&#xff0c;使用过滤器自定义扫描&#xff0c;在组件中定…

我说MySQL里每张表不要超过100w数据,面试官让我回去等通知?

V-xin&#xff1a;ruyuanhadeng获得600页原创精品文章汇总PDF 目录 1、面试题2、面试官心理分析3、面试题剖析 1、面试题 事务的几个特点是什么&#xff1f;数据库事务有哪些隔离级别&#xff1f;MySQL的默认隔离级别&#xff1f; 2、面试官心里分析 用mysql开发的三个基本…

深度学习项目:男女性别识别【附完整源码】

性别分类对于人机交互应用和计算机辅助生理或心理分析等商业领域的许多应用至关重要&#xff0c;因为它包含有关男女特征差异的广泛信息。 本次案例收集了接近二十万的男女数据集图片。 文章目录性别分类简介使用 Python 进行性别分类的机器学习项目导入相关库和数据模型搭建…