首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在攻击者无法看到的情况下将秘密传递给受威胁的容器?

如何在攻击者无法看到的情况下将秘密传递给受威胁的容器?
EN

Security用户
提问于 2021-07-26 15:44:48
回答 2查看 190关注 0票数 2

将秘密传递给码头集装箱的最常见方法是通过ENVs。

问题是:

假设您的停靠容器承载了一个HTTP服务器,该服务器可以进行安全攻击(就像任何软件一样),这将给攻击者几乎提供命令行访问权。

当然,攻击者不会(可能)损害主机,但如果他列出容器中的所有env,他可能会看到服务器使用的API密钥、数据库密码等。

所以最后,把秘密作为恩人来传递是不安全的.

那么你就有了另一个秘密方法,它可以在文件系统上挂载秘密.问题是,同样的攻击者会太明显地读取这些文件。

因此,最终,如何将秘密存储在容器中,同时考虑到它正在运行的应用程序可能会受到破坏?

EN

回答 2

Security用户

发布于 2021-10-26 06:03:00

你所要求的是不可能的,除非你只能在公开攻击之前才能使用这个秘密,再也不需要它了。如果这样做有效,您就可以了;只需确保秘密只存在于非易受攻击期间(例如,容器启动之后,但在打开侦听端口或发出出站请求之前),然后秘密就消失了(无论从如何将秘密传递到容器中,还是从进程内存中删除,请注意后者是很棘手的,因为编译器将优化一个“无用”的写操作),并且在暴露任何攻击面之前都是不可恢复的。

如果这不起作用,你需要重新考虑你的需求,也许是你的整个设计。如果不将其提供给拥有容器并能看到容器所包含的所有内容的攻击者,您就不能将其提供给容器。您可以混淆这个秘密,但是最终,如果运行在容器中的程序能够看到/使用它,接管该程序的攻击者也可以看到/使用它。充其量,你让他们做一点逆向工程。

但这并不意味着没有选择。

首先,尽量避免容器中的漏洞。集装箱提供的安全应该是深度防御,而不是对系统的全面保护。在评估安全边界时,最好假设所有早期的边界都失败了,但这并不改变这样一个事实:在大多数系统中,外部边界(在容器中运行的程序)基本上应该完成所有的安全工作,并且应该能够完成任务。

其中的一部分是在容器本身的最小特权下操作。例如,如果进程以中等高的权限(在容器的上下文中)开始,并且读取一个需要这些特权的秘密,那么该进程就可以不可逆转地放弃其权限,这样攻击者以后就无法以同样的方式读取该进程的秘密(尽管如果它仍在进程的内存中,攻击者可能会读取该秘密,因此如果可以的话,您可能希望从那里清除它)。这并不是万无一失的--它只是意味着攻击者需要找到一个本地EoP漏洞才能再次读取它--但这使得单个漏洞可能不够。

你可以代理保密。如果您的主要关注点仅仅是攻击者看到了这个秘密,而不是能够使用它,那么您可以设计一个系统,该系统在容器外部保存秘密(或者稍微不太安全地在容器内单独的用户的一个进程中),并公开一些安全的通信通道(例如本地(Unix)套接字),容器进程可以使用这些通道来说“做秘密”,通过这个系统,秘密永远不会被直接或间接地公开。当然,您可能希望限制的范围,否则攻击者根本不需要知道这个秘密(如果攻击者只需对代理的秘密持有者说“告诉他们密码”,那么攻击者是否真的知道密码并不重要)。

你也许能把秘密做得短暂。如果它只适用于一段很短的时间--最好比容器的寿命更短--即使这不是真的,这也可能有帮助--你应该尽可能频繁地旋转秘密,并确保每次容器启动时,它的秘密都会尽快失效。这样,盗取它的攻击者就会有限地使用它(如果它已经过期,则可能根本没有)。

票数 3
EN

Security用户

发布于 2021-10-26 08:02:41

因此,在一个基本的层次上,容器使用的秘密很容易受到损害容器应用程序的人的攻击,这是不可避免的。应用程序必须能够保密,攻击者将与应用程序具有相同的访问权限。值得注意的是,这与任何其他环境并没有什么不同,在裸金属服务器上破坏应用程序的攻击者也会访问应用程序机密。

现在,要尝试解决您的问题,而不是问“如何阻止攻击者访问我的秘密”,另一组问题是“如何减少暴露”和“如何降低这些秘密对攻击者的有用性”,这里有一些选择。

为了减少暴露,您希望拥有能够检测到攻击者并发出警报的容器安全软件。有商业和开放源码可供选择。

另一件也是可能的。首先,可以缩短秘密的有效期。与其拥有一个能持续几天或几个月的钥匙,我们还可以发明一个寿命较短的新秘密,这就减少了攻击的时间。

然后我们就可以把秘密和具体的消息来源联系起来。例如,如果我说“只有当这个秘密来自这个k8s集群中的这个舱时才能使用它”,那么如果将这个秘密泄漏到另一个系统中,这个秘密就会变得毫无用处。

票数 3
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/252677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档