Azure WebApp实例中的安全性

时间:2016-01-21 23:11:58

标签: windows security azure cryptography hyper-v

我的网络应用程序有一个带私钥和xml标志的证书。签名时,私钥在内存中(由于.Net使用NCrypt,因此受LSA保护)。

问题: 我的理解是azure web-app实例是运行IIS的单个VM,并且VM可能与其他VM一起在hyper-V主机上运行。鉴于此,VM-Host是否可以访问VM-Guest的内存,并读取私钥 - 从而影响签名证书?

1 个答案:

答案 0 :(得分:0)

您正在运行一个没有物理控制权的服务器,您没有安全保护。

从正在运行的VM检索私钥将是一件相当简单的事情。首先,您将采用标准的hyper-v进行内存转储(我们不知道MS在Azure中使用了什么)

livekd -hvl
livekd -hv <VMName> -p -o C:\Memory.dmp

这将列出所有VM,第二个命令将转储其中一个VM的内存。 (取自Taking a dump of a VM running on Hyper-V

其次,您需要找到并提取私钥,甚至还有一个python脚本可以帮助您。阅读它here

  

简而言之,您可以通过扫描ASN.1表示中的标头和版本常量来查找RSA私钥(PKCS#8)和SSL证书(x509)。 Volatility的dumpcerts插件使用此扫描方法从物理内存或虚拟内存中查找,提取和解析这些密钥和证书

(阅读脚本here背后的理论)

还要考虑到Microsoft编写了整个堆栈,很可能他们有VM的调试版本,他们完全知道如何存储证书(因为他们编写了代码),他们不需要像那些文章做了,他们可以和编写它的工程师交谈。