敏感的variables使用后明确清除清零?

敏感的variables使用后明确清除清零?,第1张

概述敏感的variables使用后明确清除/清零

我注意到一些程序在使用后显式地清零敏感的内存分配。 例如,OpenSSL有一个方法来清除RSA密钥占用的内存:

“释放RSA结构rsa。应该总是使用这个函数来释放RSA结构,因为它也通过首先清除内存来安全地释放子字段。

http://www.rsa.com/products/bsafe/documentation/sslc251HTML/group__COMMON__RSA__KEY__FUNCS.HTML#aRSA_free

如果任何(C / C ++)程序包含这样的敏感variables,是否应该像上面那样显式调零内存? (或者,记忆是一种偏执狂行为还是一种保护)?

任务计划程序应用程序退出触发器

为什么/ proc / self中的文件最终被root所拥有,如果一个程序的setuID位被设置的话?

交互命令提示符为NETWORK SERVICE

为windows实现个人防火墙,如何确定数据包属于哪个应用程序?

SSH与WebDAV – 各自的安全漏洞是什么?

另外,程序结束时,任何分配的内存最终都会分配给另一个程序。 在linux系统上,在分配给另一个程序之前,内存是否被清理或消毒? 或者,第二个程序可以读取第一个程序的一些旧的内存内容吗?

如何安全地将临时文件存储在windows中,特别是使用阻止TEMP目录的安全入侵防护应用程序

为什么windows Smart Screen自购买新证书后突然“保护”PC?

如何防止使用LsaRetrIEvePrivateData从远程机器的任何人轻松读取使用LsaStorePrivateData存储的数据?

HWND在窗口站中是独一无二的吗?

如何search二进制文件,并用Rubyreplacestring?

在linux系统上,在分配给另一个程序之前,内存是否被清理或消毒?

是的,在任何可敬的桌面 *** 作系统上,内存在从一个进程传递到另一个进程时都会被消毒。 您观察到的清理步骤是为了防止其他攻击,从在相同地址空间中执行的代码或获取特权,以便从目标进程的内存空间读取内存。

如果任何(C / C ++)程序包含这样的敏感变量,是否应该像上面那样显式调零内存?

一旦不再需要这些敏感数据,这是一个非常明智的保障。

当像GPG和OpenSSL这样具有敏感密码数据的程序/库显式地将内存归零时,与内存将被“重新分配”给其他可以读取数据的程序无关。 由于多进程/多用户 *** 作系统的工作方式,这基本上是不可能的。

调零数据的原因有两方面:

如果代码是一个库,你想防止通话程序不小心的信息泄露。 即使包含敏感信息的内存不能被重新分配给另一个进程,只要仍然运行相同的程序映像(即只要没有调用exec* ),释放的内存就可以在同一进程中重用。 一个有问题的程序可能会调用malloc然后将缓冲区写入磁盘,而不先填充整个分配的对象,在这种情况下,旧的潜在敏感信息可能会泄露到磁盘。 像Microsoft Office这样的主要现实世界的产品中存在这种问题(尽管它们现在可能已经被修复了)。

即使代码不是一个库,而是一个独立的程序,你也可以将内存中的敏感数据清零,然后将其释放出来用于偏执狂目的。 如果联邦调查局把你的门关上,把你的电脑拿走,他们可以随时检查交换分区上发生的任何事情。 如果他们小心地将其移除,他们甚至可以检查公羊的内容。 如果您对物理攻击偏执,则要确保使用密码短语等不存在于RAM或磁盘中的任何地方。 许多加密程序甚至希望拥有root访问权限,所以他们可以mlockall内存以防止任何事情被交换到磁盘上(尽管在我看来这是愚蠢的 – 由于软件中的错误而导致严重的根本危害, )。

如果您不担心物理攻击,或者如果您充分接触现实,意识到物理攻击者可能比交换分区取证有更好的方法来获取密码,那么理由2可能大部分是假的,但大多数软件地址无论如何,只是为了保持坚果类的快乐。 总结

以上是内存溢出为你收集整理的敏感的variables使用后明确清除/清零?全部内容,希望文章能够帮你解决敏感的variables使用后明确清除/清零?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1228719.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存