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

相关推荐
黄俊懿19 小时前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第八节:网关-注入攻击与预防
sql·网络安全·架构·系统架构·架构师·架构设计
黄俊懿19 小时前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第七节:网关-XSS攻击与预防
网关·网络安全·架构·系统架构·架构师·xss·架构设计
数据知道19 小时前
.NET 反序列化漏洞——ViewState 与 BinaryFormatter 实战深度剖析
网络·网络安全·.net
HackTwoHub1 天前
Butter_Cookie 黄油曲奇|浏览器渗透插件,云存储检测、XSS、SQL 注入一站式 Web 安全测试工具
前端·sql·安全·web安全·网络安全·自动化·xss
AI备忘录1 天前
(十六)GRE/IPSec 隧道配置命令五厂商对照:华为 华三 锐捷 迈普 思科
运维·服务器·网络·网络协议·网络安全·华为
Eason_LYC2 天前
【GetShell】DataEase H2 JDBC远程命令执行漏洞(CVE-2025-32966+CVE-2025-49001)
网络安全·漏洞复现·dataease·白帽子·cve-2025-32966·cve-2025-49001·远程命令执行
白猫不黑2 天前
运维如何转安全(个人经验篇)
运维·学习·安全·web安全·网络安全·信息安全
Demons_kirit2 天前
PortSwigger网络缓存欺骗(4)
网络安全·缓存
白猫不黑2 天前
网络空间安全/信息安全专业学习规划(超级详细版)
运维·学习·安全·web安全·网络安全·信息安全
2601_966377132 天前
2026年教育数据安全研修班举办,数达安全发布密评工具箱与行业商用密码安全解决方案
网络安全·数据安全·2026年教育数据安全研修班