云存储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\] [面向云资源的身份权限管理-访问控制-阿里云](https://help.aliyun.com/zh/ram/product-overview/what-is-ram) \[2\] [AccessKey工作原理](https://help.aliyun.com/zh/ram/user-guide/create-an-accesskey-pair) \[3\] [由OSS AccessKey泄露引发的思考](https://cloud.tencent.com/developer/article/1530778) \[4\] [deepseek](https://chat.deepseek.com/)

相关推荐
上海云盾王帅6 小时前
如何抵御CC攻击?从原理到实战的全面防护手册
网络安全
大方子7 小时前
【青少年CTF S1·2026 公益赛】Serialization
网络安全·青少年ctf
乾元7 小时前
《硅基之盾》番外篇三:无形的捕网——AI 驱动的无线电信号情报(SIGINT)与硬件对抗
网络·人工智能·安全·机器学习·网络安全·安全架构
聚铭网络8 小时前
聚铭网络受邀参加“人工智能赋能教育高质量发展”研讨会暨学术年会
人工智能·网络安全
m0_738120728 小时前
渗透测试基础ctfshow——Web应用安全与防护(四)
前端·安全·web安全·网络安全·flask·弱口令爆破
买大橘子也用券9 小时前
BUUCTF-[0CTF 2016]piapiapia-WP
web安全·网络安全
大方子9 小时前
【青少年CTF S1·2026 公益赛】CallBack
网络安全·青少年ctf
大方子9 小时前
【无标题】
网络安全·青少年ctf
买大橘子也用券9 小时前
one_line_php-wp
web安全·网络安全·php