2

在使用KSM(Kernel Same-page Mapping)时,如果两个完全一样的内存页被两个完全隔离的进程所拥有,例如两个虚拟机,这些页会被合并吗?或者它们是否会因为每个进程彼此隔离而保持独立?我很困惑,因为虚拟机归结为主机上的单个进程,但如果这些页面被合并,这似乎是一个相当重要的问题,所以我假设它们是分开的?

我也很好奇这是否会区别于虚拟机和容器?

除了会发生什么的问题之外,如果他们被隔离,是否可以详细说明?我假设这是通过使用 cgroups 来完成的,因此这两个进程的内存完全隔离,我想澄清一下。

4

1 回答 1

3

来自不同进程的页面会被合并,即使它们属于不同的 VM 实例也是如此。我特别说,因为合并来自不同 VM 的页面提供了通过合并内存页面可以实现的最大效果:它消除了在 VM 中复制大量相同的库和内核代码。

这种效果已经被用于针对 GnuPG 1.4.13 加密库的缓存定时攻击。包含 GnuPG 库代码的合并页面在两个不同的 VM 之间共享,一个 VM 能够恢复另一台正在进行的加密操作使用的密钥。由于用于窥探信息的处理器指令,该攻击被命名为“FLUSH+RELOAD”。

以下是描述攻击的 pdf 链接:https ://eprint.iacr.org/2013/448.pdf

于 2016-08-17T20:36:30.997 回答