如果我理解正确,那么:
在这种情况下,我的问题是:是否有可能利用这一事实创建一个C程序,该程序将反复释放内存并记录已找到的内存值,以便嗅探其他用户的重要数据,如密码等?
如果不可能,为甚麽不可能呢?
如果有可能,我们如何才能防止这种情况发生?
编辑:在阅读了很长时间的VMware手册之后,我找到了一个:手册
第5页,第2.3节,列出项目3,第6和第7行:
为了避免虚拟机之间的信息泄漏,虚拟机管理程序在将其分配给虚拟机之前,总是将零写入主机物理内存。
我的问题至少有一个是由管理人员回答的。对于所有的虚拟机监控程序,我都无法验证它是否正确。
发布于 2018-06-19 16:40:10
C函数malloc提供一个具有不确定值的内存块(取决于该内存块的前一个用户)
对,是这样。
共享VPS主机共享资源,如RAM和CPU。
是的,它们使用的物理CPU和RAM与其他VPS相同吗?
可以利用这一事实创建一个C程序,该程序将反复释放内存并记录找到的内存值.
这很复杂。
您忘记了一个额外的层,而层创建了抽象。VPS中的V显然代表了虚拟,但是要创建虚拟的东西,我们需要技术来虚拟化。
简单地说,虚拟化将您的物理硬件划分为可以由虚拟机使用的较小的部分,这是由Hypervisor完成的,它使用公开的内核函数来公开它为VM保留的硬件。
如果不可能,为甚麽不可能呢?
如果系统管理程序中存在一个bug,以便从它为您的VPS设置的虚拟边框中转义,这是可能的。
像您的malloc()这样的简单示例以前曾被其他进程用来逃避Linux上的低特权用户帐户。
这基本上是这样的,但更复杂的是,如果您可以逃离VM,您将成为hypervisor的用户,从而可以访问托管在同一虚拟机监控程序上的其他VPS中的任何内容。
如果有可能,我们如何才能防止这种情况发生?
作为最终用户,除了密切关注诸如packetstorm和cvedetails这样的网站以监视易受攻击的服务外,没有什么可以做的。
一个愚蠢的例子是最近对CPU体系结构的攻击,这些攻击允许访问受保护的内存等。如果有人对您正在使用的VPS执行这种攻击,他们也可以访问您的VPS正在使用的RAM。
您唯一能做的就是等待修补程序并更改所有敏感信息(密码、密钥、.)后来,因为他们可能已经在记忆中,可以被合并。
发布于 2018-06-19 20:57:55
C函数malloc提供一个具有不确定值的内存块(取决于该内存块的前一个用户)
由于我将解释的原因,仅限于以前在该程序中的使用情况。
是否有可能利用这一事实创建一个C程序,该程序将反复释放内存并记录已找到的内存值,以便嗅探其他用户的重要数据,如密码等?
不是的。
当进程从内核请求一块内存时,该内存将为空(零)。一旦一个进程接收到该内存,它就会将其拆分,并将其部分重用到单个malloc()调用中。malloc()的大多数实现都不会在使用之间对内存进行重归零,这就是您所指的“不确定值”的来源。
一个像你描述的那样工作的程序不会发现任何有趣的东西。充其量,它可能在内存中找到自己的一些数据,但它不会从其他进程或其他用户中找到数据。
https://security.stackexchange.com/questions/188050
复制相似问题