云存储AccessKey泄露漏洞(oss AK/SK)

文章目录

  • 前言
  • [1. 块存储/文件存储/对象存储](#1. 块存储/文件存储/对象存储)
  • [2. 权限管理](#2. 权限管理)
  • [3. 上传文件到OSS](#3. 上传文件到OSS)
  • [4. AK/SK泄露](#4. AK/SK泄露)
    • [4.1 后端生成签名](#4.1 后端生成签名)
    • [4.2 前端生成签名](#4.2 前端生成签名)
  • 参考

前言

经常会听说什么oss存储桶漏洞、什么key泄露,要怎么怎么挖......ak/sk和oss是绑定地吗?为什么ak/sk泄露可以接管应用的对象存储空间?本文将捋清楚这些概念及其运作原理

  • 什么是对象存储
  • 什么是AK/SK
  • 什么时候会发生AK/SK泄露

1. 块存储/文件存储/对象存储

提到存储,脑海中浮现的就是电脑里的硬盘。硬盘的读写,都是以块为单位的,这是由其物理构造决定的。无论什么存储架构,实际的数据落盘,都是把数据写到磁盘的块里。我们把硬盘看作一个线性的块数组,最原始的,我们直接向硬盘中输送LBA(逻辑块地址)+数据,这就是块存储。

很明显,我们需要将硬盘中的所有块管理起来,包括标记块的状态(空闲/占用)、块的分配、回收、合并等,我们把这些数据结构和算法,称之为块管理器

以文件这一概念为抽象单位的块管理器,向上提供"文件、目录"等语义概念,向下将用户看到的文件路径转换为底层块设备的读写,这就是文件存储。我们通常说的格式化硬盘,就是将块管理器/文件系统要用到的数据结构写入磁盘,操作系统使用对应的块管理器(文件系统)读写磁盘。

以对象这一概念为抽象单位的块管理器,向上提供桶/存储空间 (bucket)object等抽象概念,向下将对象ID映射到LBA,这就是对象存储。我们一般把基于对象的块管理器称为对象存储引擎。对象存储一般作为云服务的形式提供给用户,具体的比如阿里云的对象存储OSS。

以上就是按数据访问模型对存储架构进行的分类:

  • 块存储是最原始的,只提供 LBA 读写,没有块管理器。
  • 文件存储在块存储之上增加了文件系统层,将文件访问映射为 LBA。
  • 对象存储在块存储(或裸盘)之上增加了对象存储引擎,将对象访问映射为 LBA。

2. 权限管理

想要读写文件,首先要具备相应权限。通常我们作为用户首先要登录到操作系统,完成身份认证,即告诉了操作系统我是谁。当我们想要把C:\Windows\System32这个文件夹删除的时候,会提示失败,这是访问控制在告诉我们没有权限。

云计算中的计算、网络、存储,都作为一种资源服务,供我们按需购买使用。就像我们本地使用计算机读写文件一样,访问云存储服务也需要经过认证和授权。关于阿里云中的资源访问管理(RAM),详情就请查看阿里云的官方文档。这里摘取一些基本概念,以支撑本文要阐述的AK原理。

身份是在云环境中访问资源和执行操作的实体,也是权限的承载主体。云环境中主要有两种身份类型:人员身份和程序身份。
RAM提供RAM用户、RAM用户组和RAM角色三种身份类型。其中,RAM用户组是用于归类和管理RAM用户的集合。RAM用户和RAM角色既可用于人员身份,也可用于程序身份。

#AccessKey的工作原理

AccessKey ID和AccessKey Secret由访问控制(RAM)根据算法生成,阿里云对其存储及传输均进行加密。

当程序使用AK发起请求时,请求会携带AccessKey ID以及使用AccessKey Secret加密请求内容生成的签名。阿里云收到请求后,会对其进行身份验证及请求合法性校验。关于阿里云所采用的具体签名机制,请参见V3版本请求体&签名机制。

3. 上传文件到OSS

传统的WebApp,是将文件上传到Web服务器,再由后端处理,如下图:


有了云存储服务这个第三者,可选择的方案或者说文件数据流向可以是:

  1. 前端表单数据发送给后端,后端生成签名上传到OSS,即和传统后端处理一样。
  2. 后端生成签名,前端页面通过Ajax获取签名,表单数据直传到OSS。
  3. 前端生成签名(通过JavaScript),表单数据直传到OSS。

4. AK/SK泄露

为了减轻后端的运行压力,开发者都会选择在前端(浏览器)直传数据到OSS。

4.1 后端生成签名

这是正确的方案,AK/SK存储在后端,用于生成访问OSS的签名,前端页面通过一个Ajax获取签名。比如访问 "www.example.com" 页面,后续会有类似/api/getOssToken的Ajax请求获取签名,如下图。也有可能在上传时出发Ajax请求,这要触发上传并观察关键请求。

4.2 前端生成签名

要通过前端的Javascript生成OSS的API调用签名,AK/SK就必须硬编码在前端,即产生所谓的AK/SK泄露 ,即代表这个WebApp的RAM用户用于访问OSS的访问密钥泄露。这种漏洞场景多见于App、小程序。

参考

1 面向云资源的身份权限管理-访问控制-阿里云

2 AccessKey工作原理

3 由OSS AccessKey泄露引发的思考

4 deepseek

相关推荐
见青..9 小时前
phpMyAdmin权限提升
web安全·网络安全·phpmyadmin
数据知道11 小时前
邮件安全实战:SPF/DKIM/DMARC 配置与钓鱼绕过
网络·安全·web安全·网络安全·邮件安全
世界尽头与你14 小时前
Android Root 检测原理
android·安全·网络安全·渗透测试
kp0000014 小时前
如何平衡模型输出的“有用性”和“安全性
人工智能·安全·网络安全·信息安全·ai安全
世界尽头与你16 小时前
iOS 越狱检测原理
安全·网络安全·ios·信息安全·渗透测试
kp000001 天前
大模型输出造成信息泄露类型
人工智能·网络安全·信息安全·ai安全
kp000001 天前
System Prompt Leakage(系统提示词泄露)及安全防御
网络·安全·网络安全·信息安全·prompt·ai安全
X7x51 天前
攻防对抗的结构化思维:深度拆解网络杀伤链(Kill Chain)与现代防御演进
网络安全·网络攻击模型·安全架构·网络杀伤链·kill chain
kp000001 天前
AI大模型,如何区分善意提问与Prompt注入攻击
人工智能·网络安全·信息安全·prompt·ai安全
kp000002 天前
AI系统输入安全基线
人工智能·安全·网络安全·信息安全·ai安全