为什么我可以在 Snoop 中看到 PasswordBox 的密码?

Why can I see the password of a PasswordBox in Snoop?

我想了解 PasswordBox 如何保护外部应用程序读取密码。我不明白的是我怎么有能力用 Snoop 读取我的 WPF window 的密码:

我认为这就是 PasswordBox 应该解决的漏洞。

为了可以使用 - 在某一时刻 - 密码必须作为明文字符串存储在内存中 and/or 必须作为明文字符串可检索。 SecureString 和 PasswordBox 限制了漏洞出现的时间。但他们无法摆脱它。它可以执行 GC 强制主动收集之类的操作,防止字符串迭代之类的优化,甚至在内存超出范围时用随机数据覆盖内存。

密码 属性 是您检索所述裸字符串的方式。 snoop 显然可以像您的代码一样查询它。

我个人认为,如果攻击者可以读取您的内存,那么您几乎已经输掉了安全战。如果你在内存中有一个加密的值,你可能也有密钥。连同实际适用于两者的代码。所以它不像攻击者无法像您一样解密它。任务有点复杂,但仅此而已。

内存读取漏洞是 Heartbleed 如此巨大的原因。你必须盲目地相信 RAM。因为如果它遭到破坏,您将无能为力。