动态内存分配期间的数据安全性

问题描述 投票:0回答:1

几分钟前,我和我的朋友们在leetcode.com上解决了一些算法问题,并分享了我们的解决方案。我们使用了高级语言,并且当Ruby中的Array.new(128)或Java中的int[] map = new int[128];分配新的内存时,它已经分别填充了类似零的值nil0

因此可以保证高级程序已清除。

这里我有一个问题:在C或汇编程序中,是否可能发生新的内存块未更改地存储来自其他进程的数据?

因此,一个进程获取另一进程的数据。甚至可能是前一段时间在系统中工作过的另一个用户的数据。可能是信息泄漏的一种方式吗?

OS是否在进程之间共享内存之前清除内存?如果是这样,运行这么多次迭代是否非常昂贵?

谢谢。

UPD: http://www.cplusplus.com/articles/ETqpX9L8/似乎需要手动清除“下级”语言的有价值的数据,以防止数据泄漏到其他进程。

security dynamic-memory-allocation
1个回答
1
投票

是的,在未初始化内存的低级语言中,它可能包含来自其他进程的有价值的东西。通过不断分配内存并对其进行扫描以查找看起来有用的信息,已经进行了加密密钥泄漏攻击。

存储密码或加密密钥等的安全敏感程序应始终在使用后尽快清除内存。这不仅可以防止通过重新分配的内存泄漏,而且还可以使用其他攻击媒介(例如RAM转储)来提取机密。完成操作后,请始终将其设置为零或随机化内存。

© www.soinside.com 2019 - 2024. All rights reserved.