云上攻防:任意上传、域名接管与AK/SK泄漏

简介: 随着企业上云的趋势加剧,云安全成为新的焦点。本文探讨了云计算环境中的三大安全问题:任意上传、域名接管与AK/SK泄漏,分析了这些威胁的工作原理及防护措施,强调了数据保护和访问控制的重要性。通过阿里云等平台的实际案例,提供了具体的安全防范建议。

随着企业上云逐渐形成了趋势和规模,云安全也成为了新的焦点和风口,云上安全越来越重要;在近几年的攻防中AKSK、小程序、云上供应链都已经成为了兵家必争之地和重要突破口

云服务不仅提供了高效的数据存储和计算能力,还支持了业务的快速扩展和灵活部署。然而,云计算的广泛应用也带来了新的安全挑战,特别是在数据保护和访问控制方面。网络攻击者正不断寻找并利用云服务中的漏洞,威胁企业的敏感数据和业务连续性。

在这种背景下,云上攻防成为了信息安全领域的重要课题。本文将深入探讨云计算环境中的三个关键安全问题:任意上传、域名接管与AK/SK泄漏。这些问题不仅直接影响到云服务的安全性,还可能导致严重的业务中断和数据泄露。

任意上传漏洞允许攻击者将恶意文件上传到云服务器,从而执行恶意代码或窃取数据。域名接管攻击则利用DNS配置的漏洞,接管目标域名控制权,实施钓鱼攻击或流量劫持。AK/SK(Access Key/Secret Key)的泄漏则更加严重,攻击者可以利用这些凭证未经授权地访问云服务,执行恶意操作。理解和防护这些安全威胁,是保障云环境安全的关键。

在接下来的章节中,我们将通过阿里云为样板详细描述每种安全威胁的工作原理,并提供实际可行的防护措施。

任意上传

对象存储权限配置错误:

公共读或公共读写

  1. 公共读(Public Read):当Bucket配置为公共读时,任何人都可以读取存储桶中的对象,但不能进行写操作。这种配置通常用于需要公开访问的数据,如网站的静态资源。然而,公共读配置可能导致数据泄露,因为任何人都可以访问这些数据。
  2. 公共读写(Public Read/Write):当Bucket配置为公共读写时,任何人都可以读取和写入存储桶中的对象。这种配置非常危险,因为攻击者可以随意上传、修改或删除存储桶中的数据。

权限Bucket授权策略

  1. ListObject权限:Bucket的授权策略可以设置为允许或拒绝用户在存储桶中列出对象。当有ListObject权限时,用户可以查看存储桶中所有对象的列表。这可能泄露存储桶的内部结构和文件名,给攻击者提供更多的信息来进行进一步的攻击。

权限Bucket读写权限

  1. 公共读写权限:如果Bucket配置为公共读写权限,任何人都可以执行PUT操作,将文件上传到存储桶中。攻击者可以利用这个漏洞上传恶意文件,导致数据污染或恶意代码执行。

如图所示,如果对象存储配置不当,比如公共读写,那么可能就会造成任意文件上传与文件覆盖。

改请求方式为PUT

如果目标的对象存储支持 html 解析,那就可以利用任意文件上传进行 XSS 钓鱼、挂暗链、挂黑页、供应链投毒等操作。

防护措施

为了防止由于权限配置错误引起的安全问题,可以采取以下防护措施:

  1. 使用最小权限原则:仅为用户和应用程序分配其完成任务所需的最小权限,避免过度授权。
  2. 避免公共读写:除非绝对必要,尽量避免将Bucket配置为公共读或公共读写。使用细粒度的权限控制,确保只有授权用户可以访问或修改数据。
  3. 配置Bucket策略:通过配置Bucket策略,明确规定哪些用户或角色可以进行哪些操作。例如,可以设置只允许特定的IP地址范围或特定的用户组访问特定的对象。
  4. 启用访问日志和监控:启用访问日志和监控,实时记录和监控Bucket的访问情况,及时发现异常行为。
  5. 定期审查权限配置:定期审查和更新Bucket的权限配置,确保符合当前的安全需求和策略。
  6. 使用多层次安全控制:结合使用IAM(身份和访问管理)策略、Bucket策略和对象ACL(访问控制列表),提供多层次的安全控制。

通过采取这些防护措施,企业和个人可以有效地防止由于权限配置错误引起的数据泄露和恶意篡改,确保对象存储中的数据安全。

域名解析与Bucket接管

问题描述

在云存储服务(如Amazon S3、阿里云OSS等)中,用户通常会创建Bucket(存储桶)来存储数据,并且可以将Bucket与特定的域名绑定,以便通过该域名直接访问Bucket中的内容。域名解析是将域名映射到对应的Bucket上,使得用户可以通过域名访问存储桶中的资源。

然而,当Bucket被删除后,如果未及时更新或删除域名解析记录,这个域名解析仍然指向已经不存在的Bucket。这种情况下,攻击者可以利用这个漏洞,创建一个同名的Bucket,从而接管原本已删除的Bucket绑定的域名。这种攻击方式被称为“Bucket接管”。

判断是否可以接管

当尝试访问域名绑定的Bucket时,不同的响应信息可以帮助判断该Bucket是否可以被接管:

  1. NoSuchBucket:如果访问该域名时返回“NoSuchBucket”错误信息,说明这个Bucket已经不存在,但域名解析仍然指向该Bucket。这表明攻击者可以尝试创建一个同名的Bucket,并接管该域名的访问权。
  2. AccessDenied:如果返回“AccessDenied”错误信息,则说明这个Bucket存在,但当前用户没有权限访问。此时,攻击者无法接管该Bucket。
  3. 可以尝试如ping该存储桶地址如若返回为域名地址,则能确认问题确实存在

防护措施

为了防止Bucket接管问题,企业和个人可以采取以下防护措施:

  1. 及时更新域名解析记录:在删除Bucket后,及时更新或删除对应的域名解析记录,确保域名不再指向已删除的Bucket。
  2. 定期审查DNS记录:定期检查DNS记录,确保没有指向不存在或不正确资源的记录。
  3. 使用多因素认证:在域名管理平台启用多因素认证,增加安全性,防止未经授权的更改。
  4. 域名监控:使用自动化工具监控域名的解析记录和状态,及时发现和修复潜在的问题。

通过理解和防护这些安全威胁,企业和个人可以有效降低云环境中的安全风险,确保数据和资源的安全性。

AK/SK 泄漏的途径

当AccessKeyId和SecretAccessKey(简称AK/SK)泄漏时,攻击者可以利用这些凭证直接访问云服务,执行各种未经授权的操作,如读取数据、上传文件、删除资源等。以下是对AK/SK泄漏的解读及相关防护措施。

  1. APP、小程序中的泄漏:开发者在开发移动应用、微信小程序等过程中,可能会将AK/SK硬编码到应用中。如果应用的代码被反编译或通过其他方式被获取,AK/SK可能会泄露。
  2. JavaScript中的泄漏:前端代码(如JavaScript)是公开的,任何人都可以查看。如果开发者在前端代码中包含了AK/SK,这些密钥将暴露给所有访问网站的用户。

AccessKey标识特征整理与查找

在发现AK/SK泄漏后,可以通过以下方法来整理和查找泄露的密钥:

  1. 标识特征:AK通常有一定的格式和长度,可以使用正则表达式或其他自动化工具来扫描代码库、日志文件、版本控制历史等位置,查找可能泄露的AK/SK。
  2. 使用搜索引擎:通过搜索引擎查找代码片段,尤其是在公开的代码仓库(如GitHub)中。很多时候,开发者会无意中将含有AK/SK的代码提交到公共代码仓库。
  3. 监控与告警:使用自动化工具监控代码库、日志、配置文件等位置,如果发现疑似AK/SK的内容,立即触发告警并采取措施。

AccessKey标识特征整理-查找:https://wiki.teamssix.com/CloudService/more/

阿里云

阿里云 (Alibaba Cloud) 的 Access Key 开头标识一般是 "LTAI"。

^LTAI[A-Za-z0-9]{12,20}$

1

  • Access Key ID长度为16-24个字符,由大写字母和数字组成。
  • Access Key Secret长度为30个字符,由大写字母、小写字母和数字组成。

#腾讯云

腾讯云 (Tencent Cloud) 的 Access Key 开头标识一般是 "AKID"。

^AKID[A-Za-z0-9]{13,20}$

1

  • SecretId长度为17个字符,由字母和数字组成。
  • SecretKey长度为40个字符,由字母和数字组成。

#华为云

华为云 (Huawei Cloud) 的 Access Key 是20个随机大写字母和数字组成,较难用正则表达式匹配。

[A-Z0-9]{20}

1

#百度云

百度云 (Baidu Cloud) 的 Access Key 开头标识一般是 "AK"。

^AK[A-Za-z0-9]{10,40}$

可通过HAE添加正则表达式高光显示便于寻找目标

防护措施

为了防止AK/SK泄漏和减少泄漏后的风险,可以采取以下措施:

  1. 避免在客户端存储AK/SK:尽量不要在客户端应用(如APP、小程序、前端JavaScript代码)中存储或暴露AK/SK。可以通过后端代理服务来处理需要鉴权的请求。
  2. 使用环境变量和配置管理工具:将AK/SK存储在安全的环境变量中或使用配置管理工具,并确保这些信息不会被包含在代码库中。
  3. 定期轮换AK/SK:定期更新和轮换AK/SK,并在泄漏发生时立即禁用泄漏的密钥并生成新的密钥。
  4. 最小权限原则:为每个AK/SK分配最小必要权限,确保即使密钥泄漏,攻击者能够造成的损害也被限制在最低范围。
  5. 使用短期临时凭证:考虑使用云服务提供的短期临时凭证(如AWS的STS)来代替长期有效的AK/SK,减少泄漏的风险。
  6. 加密与密钥管理:使用云服务的密钥管理服务(KMS)来加密和保护AK/SK,并确保在传输过程中使用加密协议(如HTTPS)。

通过采取这些措施,可以显著降低AK/SK泄漏的风险,并在发生泄漏时快速响应以减少可能的损失。

相关文章
|
2天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
4天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1540 5
|
1月前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
7天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
585 22
|
4天前
|
存储 SQL 关系型数据库
彻底搞懂InnoDB的MVCC多版本并发控制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
201 3
|
10天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
11天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
581 5
|
23天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
7天前
|
XML 安全 Java
【Maven】依赖管理,Maven仓库,Maven核心功能
【Maven】依赖管理,Maven仓库,Maven核心功能
235 3
|
9天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
327 2