Azure WebApp 实例中的安全性



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

问题:我的理解是,azure Web 应用程序实例是运行 IIS 的单个 VM,这些 VM 可能与其他 VM 一起在 hyper-V 主机上运行。鉴于此,虚拟机主机是否可以访问虚拟机客户机的内存并读取私钥 - 从而损害签名证书?

您正在运行的服务器无法物理控制,您

没有安全性。

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

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

这将列出所有虚拟机,第二个命令将转储其中一个虚拟机的内存。(取自对在Hyper-V上运行的虚拟机进行转储

其次,您需要找到并提取私钥,甚至还有一个python脚本可以为您执行此操作。在此处阅读有关它的信息

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

(在这里阅读脚本背后的理论)

还要考虑到Microsoft编写了整个堆栈,他们很可能拥有虚拟机的调试版本,他们确切地知道证书是如何存储的(因为他们编写了代码),他们不需要像那些文章那样进行逆向工程,他们可以与编写它的工程师交谈。

最新更新