在 S3 上使用通配符启用 CORS 是否有任何风险?

信息安全 网络服务 科尔斯 aws
2021-09-07 14:34:46

默认情况下,Amazon S3 会阻止跨域请求。但是,它允许用户设置每个存储桶的 CORS 策略。它为用户想要启用的域和方法提供了相当精细的控制。

对我来说,这种保守的默认值和细粒度的设置表明,我可能不希望我的所有存储桶Access-Control-Allow-Origin: *都以 . .

S3 已经提供了相当详尽的 ACL 策略,并且用户无法通过 cookie 进行身份验证(据我所知),因此问题似乎不在于人们获取了他们不应该获取的信息。

S3 还提供了一种完全独立的方式来完全阻止对某些域的访问,包括普通的旧图像标签,因此这似乎不是热链接的问题。

超级开放的 CORS 政策有任何风险吗?

2个回答

如果您仅将亚马逊网络服务用于处理未受保护的公共内容(例如存储个人资料图像或其他内容),则打开 cors 策略不应构成任何线程,但如果您将其用于处理某些敏感信息,则应阻止 cors 请求。

有时确实会发生网站允许 cors 但他们放置了一些敏感信息,例如 csrf 令牌等,这些信息可能会被攻击者恶意使用。

cors策略错误执行导致攻击者窃取敏感数据、令牌等的案例不胜枚举。关于此类攻击的hackerone报告很多。

https://hackerone.com/reports/163491

http://www.geekboy.ninja/blog/exploiting-misconfigured-cors-cross-origin-resource-sharing/

CORS 旨在控制浏览器行为。默认情况下,Web 浏览器只能通过直接链接(即导航到 URL)从 AWS S3 存储桶中获取内容。

使用正确的 CORS 设置,您可以允许访问其他域的浏览器通过 AJAX 获取这些文件。超级开放的 CORS 策略只会让任何网站通过 AJAX 获取您的文件(可能在用户不知情的情况下)。“封闭”的 CORS 策略不允许您隐藏 S3 存储桶中的任何内容,它并非旨在。

风险部分实际上取决于您的确切用例。假设您将公开文章存储在 S3 上,并且您只希望您的网站能够在浏览器中获取它们并显示它们。在这种情况下,超级开放的政策将使其他人复制您的网站变得微不足道,而无需刮掉您的文档,因为您也很乐意为他们提供服务。

一般来说,我会说 S3 的超级开放政策不是问题。