如何保护我的C#应用​​程序免受内存转储攻击?

问题描述

转储内存使攻击者可以读取整个OS的RAM,或更具体地说,可以读取单个进程的RAM。攻击者可以保存转储并“离线”分析转储,以搜索敏感数据。

我试图了解它到底是如何工作的,以及是否有防止它的方法。

现在,让我们假设我们有一个使用AES保护敏感数据的应用程序。这是通过在aes.Key变量中设置来实现的。

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 Studio中调试aes对象数据结构,则可以清楚地看到代表键的字节数组。如果我们在使用对象后将其丢弃,就不再使用。

问题是:尽管在使用后将其丢弃,但内存转储攻击是否能够读取该值? 如果是,是否有防止这种情况发生的方法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)