3年来,微软 AI 不自觉地泄露了38TB 机密数据

WIZ研究团队最近发现一个超额配置的SAS标志已在GitHub上暴露了近三年。该标志允许访问38TB的大量私人数据。此Azure存储还包含其他机密,例如隐藏在两名微软员工的磁盘备份中的专用SSH密钥。这一发现突显了强有力的数据安全措施的重要性。

发生了什么?

WIZ Research最近披露了2023年6月23日在微软人工智能GitHub存储库中发现的一起数据泄露事件。

管理GitHub的研究人员通过SAS标志使用了Azure存储共享功能,从而访问了一个开源 AI 训练数据桶。

这个标志配置错误,允许访问帐户的整个云存储,而不是预期的存储桶。

该存储包含38TB的数据,其中包括两名员工工作站的磁盘备份,其中包含机密信息、私钥、密码和超过30,000条微软团队内部消息。

SAS(共享访问签名)是用于共享Azure存储资源的签名url。它们配置了细粒度控制,控制客户端如何访问数据:公开哪些资源(完整帐户、容器或文件选择)、具有哪些权限以及访问多长时间。

在向微软披露这一事件后,SAS标志失效了。从它第一次提交到GitHub(2020年7月20日)到它被撤销,已经过去了将近三年。请看Wiz研究团队给出的时间表:

然而,正如 WIZ 研究小组所强调的那样,共享访问签名(SAS)存在配置错误。

数据曝光

该标志允许任何人访问额外的 38TB 数据,包括密钥、个人密码等敏感数据,以及来自数百名微软员工的 3 万多条微软团队内部消息。

以下是 Wiz 团队恢复的一些最敏感数据的摘录:

正如研究人员所强调的那样,这可能会让攻击者将恶意代码注入到存储 Blob 中,然后在用户(可能是人工智能研究人员)每次下载时自动执行,因为用户相信微软的信誉,这可能会导致供应链攻击。

安全隐患

研究人员认为,账户 SAS 标志(如他们研究中提出的标志)具有很高的安全风险。这是因为这些标志具有高度许可性和长期存在性,可以躲过管理员的监控。

当用户生成一个新标志时,该标志由浏览器签署,不会触发任何 Azure 事件。要撤销标志,管理员需要轮换签名帐户密钥,从而一次性撤销所有其他标志。

具有讽刺意味的是,微软产品功能(Azure SAS标志)的安全风险导致了微软研究团队的一次事故,微软存储服务威胁矩阵的第二版本最近提到了这一风险:

秘密蔓延

这个例子完美地强调了组织内部普遍存在的机密扩散问题,即使是那些拥有先进安全措施的组织也不例外。耐人寻味的是,它强调了人工智能研究团队或任何数据团队如何独立创建可能危及组织的标志。这些标志可以巧妙地避开旨在保护环境的安全保障措施。

缓解策略

对于Azure存储用户:

1 - 避免使用账户 SAS 标志

由于缺乏监控,该功能成为外围安全漏洞。从外部共享数据的更好方法是使用带有存储访问策略的服务 SAS。该功能将 SAS 标志与策略绑定,提供集中管理标志策略的能力。

不过,如果不需要使用 Azure 存储共享功能,更好的办法是直接禁用每个账户的 SAS 访问权限。

2 - 启用 Azure 存储分析功能

可以通过每个存储帐户的存储分析日志监控活动SAS标志的使用情况。Azure Metrics允许监控SAS身份验证请求,并识别通过SAS标志访问的存储帐户,最长可达93天。

For All:

1-审核你的Github外围的敏感凭据

GitHub 拥有约 9000 万个开发者账户、3 亿个托管仓库和 400 万个活跃组织(其中包括 90% 的财富 100 强企业),其攻击面远比想象的要大。

去年,GitGuardian 在公共存储库中发现了 1 千万条泄密信息,比前一年增加了 67%。

任何组织都必须积极监控 GitHub,将其作为安全边界的一部分。该平台上涉及凭证泄露的事件不断给大公司造成大规模漏洞,微软保护壳上的这个安全漏洞不禁让我们想起了一年前的丰田数据泄露事件。

2022 年 10 月 7 日,日本汽车制造商丰田公司披露,他们意外暴露了一个允许访问 GitHub 公共仓库中客户数据的凭据,该凭据已存在近 5 年之久。从 2017 年 12 月到 2022 年 9 月,该代码一直处于公开状态。

如果你的公司有开发团队,很可能你公司的一些秘密(API密钥、标志、密码)最终会出现在公共GitHub上。因此,强烈建议将审核GitHub攻击面作为攻击面管理程序的一部分。

结语

每个组织,无论规模大小,都需要为应对各种新出现的风险做好准备。这些风险往往源于对当今现代企业中大量软件操作的监控不足。在本案例中,一个人工智能研究团队无意中创建并暴露了一个配置错误的云存储共享链接,绕过了安全护栏。但是,还有多少其他部门--支持、销售、运营或营销部门--会发现自己处于类似的境地呢?对软件、数据和数字服务的依赖与日俱增,扩大了全球范围内的网络风险。

要应对机密信息的传播及其相关风险,就必须重新评估安全团队的监督和管理能力。

关注微信公众号【赛希咨询】,了解更多精彩内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/157181.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA中安装Docker插件实现远程访问Docker

开启远程Docker访问 #修改Docker服务文件,需要先切换到root用户 vim /lib/systemd/system/docker.service #注释掉"ExecStart"这一行,并添加下面这一行信息 ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock…

超聚变服务器关闭超线程CPU的步骤(完整版)

前言: 笨鸟先飞,好记性不如烂笔头。 我们项目都用不到超线程CPU,所以调测设备的时候都需要关掉,最近新设备换成了超聚变的服务器,这篇记录我关闭(超聚变)服务器超线程CPU的方法步骤。 关闭超线程CPU的步骤…

java21中一次启动1000万个虚拟线程要多久?需要多少平台线程?

什么是虚拟线程 虚拟线程是在Java并发领域添加的一个新概念,那么虚拟线程到底是做什么用的呢? 根据JEP中的内容告诉我们,虚拟线程是一种轻量级线程,可以显著地帮助我们减少编写、维护、观察高吞吐量应用程序的工作量。它的实现目…

为什么别人年薪30W+?同样为测试人,“我“的测试之路...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、软件测试员&am…

Go 上下文 context.Context

Go语言中的上下文(Context)是一种用于在 Goroutines 之间传递取消信号、截止时间和其他请求范围值的标准方式。context 包提供了 Context 类型和一些相关的函数,用于在并发程序中有效地传递上下文信息。 在Go语言中,上下文通常用于…

Minio - 多节点多驱动器安装部署

先决条件 网络互通 MinIO集群中的节点的网络需要互相双向互通。 MinIO API默认端口9000 MinIO console默认端口9001 MinIO强烈建议使用负载均衡器来管理与集群的连接。负载均衡器策略使用“最小连接数”逻辑,因为在部署中任何 MinIO 节点都可以接收、路由或处理…

什么是软件定制开发?|app网站小程序定制

什么是软件定制开发?|app网站小程序定制 软件定制开发是根据客户的特定需求,为其量身定制开发软件解决方案的全过程。与市面上已有的通用软件不同,软件定制开发可以满足客户在业务流程、功能要求、用户界面等方面的个性化需求。 软件定制开发…

Redis链表

前言 链表作为一种常见的数据结构,一般都会内置在很多高级语言中。由于Redis使用的是C语言并没有内置这种数据结构,所以Redis构建了自己的链表实现。 链表在Redis中应用广泛,比如列表建的底层实现之一就是链表。当一个列表键包含了数量比较多…

Python字符串类型

目录 目标 版本 官方文档 书写格式 字符串合并 常用函数 字母转小写(首字母转大写) 字母转小写(适用于在国际化环境中,忽略字母大小写进行比较的场景) 字母转小写(适用于非国际化环境中&#xff0…

JSON 格式的接口测试流程【Eolink Apikit】

在进行JSON格式的接口测试时,需要使用工具发送HTTP请求并获取响应。测试工具可以是单独的测试框架,如 Eolink Apikit。测试人员需要根据接口文档和测试用例编写测试脚本,然后运行测试并分析结果,以确保接口的质量和稳定性。 当我…

数据库mysql详细教学

1024 byte 构成 1 kb 1024 KB > 1MB 1024 MB > 1GB 1024 GB > 1TB 1024 TB > 1PB 内存的数据,断电后会丢失。外存的数据,断电后数据还在~ “持久化” 这样的次,意思就是把数据写到硬盘上。 mysql的第一组基本操作:数…

02_SHELL编程之流程控制和循环语句

课程目标 熟悉流程控制语句基本语法,如if…else… 掌握for循环语句的基本语法结构 掌握while和until循环语句的基本语法结构 ###一、流程控制语句 ####1. 基本语法结构 F: false 假 T: true 真 if [ condition ];thencommandcommand fi ​ [ 条件 ] &&a…

吴恩达《机器学习》8-7:多元分类

在机器学习领域,经常会遇到不止两个类别的分类问题。这时,需要使用多类分类技术。本文将深入探讨多类分类,并结合学习内容中的示例,了解神经网络在解决这类问题时的应用。 一、理解多类分类 多类分类问题是指当目标有多个类别时…

获取微信小程序二维码

可直接通过微信扫描小程序二维码直接进入小程序,可用在分享推广业务。 目录 Curl请求方法 获取小程序token 获取小程序二维码 参数说明 注意 请求结果 Curl请求方法 需要请求微信小程序的API接口,封装好curl请求方法。 代码如下: /*…

LSB隐写+十六进制转字符串

这张图片同样使用的是LSB隐写(即最不显著位隐写) 但是这道题目使用一个小技巧,将flag用十六进制的形式加了一层伪装 LSB隐写 通过StegSolve打开该图片,之后选择Analyse-》data extract来分析图片的LSB隐写 首先先点击选择LSB …

MIB 6.1810实验Xv6 and Unix utilities(3)pingpong

Mit6.S081-实验1-Xv6 and Unix utilities-pingpong问题_Isana_Yashiro的博客-CSDN博客 Write a user-level program that uses xv6 system calls to ping-pong a byte between two processes over a pair of pipes, one for each direction. The parent should send a byte to…

【精选】JavaScript语法大合集【附代码和超详细介绍以及使用】

JavaScript语法大合集 JavaScript引入到文件 嵌入到HTML文件中 <body><script>var num10;console.log(num);</script> </body>引入本地独立JS文件 <body><script src"./hello.js"></script> </body>引入网络来源…

nodejs spawn

Node.js 的子进程 (child_process) 模块下有一 spawn 函数&#xff0c;可以用于调用系统上的命令&#xff0c;如在 Linux, macOS 等系统上&#xff0c;我们可以执行如下代码来调用通用的 npm 命令。 const spawn require(child_process).spawn; spawn(npm, {stdio: inherit …

利用JavaScript实现ISO周日历[]

基础知识 阳历&#xff1a; 就是以太阳来计算日期的一类历法&#xff1b;阴历&#xff1a; 就是以月亮来计算日期的一类历法&#xff1b;公历&#xff1a; 属阳历的一种&#xff0c;我国现在使用的就是公历&#xff1b;农历&#xff1a; 我国的农历是一种阴阳合历&#xff0c;…

eclipse启动无法找到类(自定义监听器)

一.报错 二.排查 1.首先检查代码是否有问题 本人报错是找不到监听器&#xff0c;故检查监听器的代码和web.xml文件是否有问题 public class DoorListener implements ServletContextListener 监听器是否继承并实现ServletContextListener中的方法。 web.xml中&#xff1a; &…