释放内存允许攻击者读取整个操作系统的RAM,或者更具体地说,读取单个进程的RAM。攻击者可以保存转储并“脱机”分析它,以便搜索敏感数据。
我正在努力了解这到底是如何工作的,以及是否有办法防止它。
现在,让我们假设我们有一个应用程序,它使用AES保护敏感数据。这是通过在变量中设置键来实现的。
public static AesCryptoServiceProvider AESFunction()
{
AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
try
{
aes.GenerateIV;
aes.GenerateKey; //key is stored in aes.Key variable in the AesCryptoServiceProvider class
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
return aes;
}
catch (Exception e)
{
throw;
}
}如果我们在Visual中调试aes对象数据结构,我们可以看到表示键的字节数组。如果我们在使用它之后处理掉它,就不再是这样了。
问题是:内存转储攻击是否能够读取此值,尽管在使用后将其处理掉?如果是,是否有办法防止这种情况发生?
发布于 2020-08-14 18:01:16
在主流设备上,简单的回答是“不”。如果有人有管理或物理访问的方块,他们可以抓取整个机器的内存-作为一个进程转储,或操作系统转储,并分析它在他们的空闲时间。除了阻止访问发生之外,没有什么可以阻止这种情况发生。
https://stackoverflow.com/questions/63417143
复制相似问题