Google Cloud Run安全问题

ANIV游戏

我测试了Google Cloud Run,并且遇到了一些安全问题。假设我使用二进制程序处理用户输入。如果程序容易受到攻击并且恶意代码注入了容器,该怎么办。攻击者将能够访问我的数据库或存储或容器有权访问的任何资源。

问题是:这是一个真正的问题,我该如何预防?

我最好的主意是在其中放置另一个容器,该容器仅容纳可能存在漏洞的二进制文件。

AhmetB-Google

这确实是一个真正的问题–但是,此类攻击并非特定于Cloud Run,而是适用于您可能会使用不受信任的二进制文件的任何计算平台。

假设您ffmpeg在容器中运行,并且您的一位用户为您提供了要转换的视频输入。该视频可以利用ffmpeg中的漏洞(因为它不是用内存安全的语言编写的,所以存在很多漏洞),并且可以执行任意代码。此任意代码可以有效地泄露您的环境,包括通过查询以下内容来访问GCP API的令牌:

curl -H "metadata-flavor: Google" http://metadata/computeMetadata/v1/instance/service-accounts/default/token

您注入到容器中的机密以及此令牌可能是在遭受攻击时最容易泄露的工件。

为了防止遭受此类攻击,我建议:

  • 在Cloud Run上创建一个单独的服务,其唯一的工作就是将外壳封装到不受信任的可执行文件中(如上所述)。
  • 使用--service-account无权在您的对象中执行任何操作的服务帐户(运行此服务这样,攻击者可以窃取无法完成的令牌(但是,可以了解您的GCP项目ID或该服务帐户的电子邮件地址)。
  • (据我所知,这在Cloud Run上是不可能的。)以只读模式运行容器的文件系统,以防止攻击者更改容器上的可执行文件或库,这可能会影响容器处理的后续请求。
  • (今天缺乏只读的容器文件系统),如果正在执行的不受信任的二进制文件可以“静态编译”,可以在每次请求时考虑创建一个包含二进制文件的新临时目录。然后,在其中chroot并在此目录中执行二进制文件(以使其副作用不会影响容器的其余部分),并在请求完成之前清理此目录。

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章