云存储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

相关推荐
零零信安12 天前
零零信安荣登数世咨询《新质·数字安全专精百强(2026)》暗网情报领域,彰显专业实力与创新引领
安全·网络安全·数据泄露·暗网·零零信安
憧憬成为web高手12 天前
l33t-hoster
学习·web安全·网络安全
HackTwoHub12 天前
Sqli-Scanner SQL注入SKILL自动化挖掘SQL注入,零依赖自动化SQL注入挖掘,赏金猎人
数据库·人工智能·sql·web安全·网络安全·自动化·系统安全
爱网络爱Linux12 天前
网络安全与渗透测试实用工具大全
web安全·网络安全·信息安全·cisp-pte·cisp·cissp
xsc-xyc12 天前
用 Tailscale + Syncthing 实现手机、电脑与 NAS 的跨网络文件同步
linux·网络·网络安全·智能手机·电脑
持敬chijing12 天前
Web渗透之SQL注入-常用sql语句
sql·安全·web安全·网络安全
Chengbei1112 天前
AISec真正拟人化全自动渗透工具!支持浏览器交互全自动化挖掘,SQL注入、XSS、越权等。
sql·安全·web安全·网络安全·自动化·系统安全·xss
X7x512 天前
深度拆解网络安全“闭环”之王——APPDRR模型
网络安全·网络攻击模型·安全威胁分析·安全架构·appdrr模型
Inhand陈工12 天前
污水泵站PLC数据上云实战:西门子PLC + 映翰通IG502 + DM平台全流程
人工智能·物联网·网络安全·阿里云·信息与通信·iot
X7x512 天前
一文讲透PADIMEE模型
网络安全·网络攻击模型·安全威胁分析·安全架构·padimee模型