【发布时间】:2011-07-03 07:20:40
【问题描述】:
我正在创建一个控制台应用程序,它将一些敏感字符串存储在内存中,以发送到另一个客户端。在这种情况下,它几乎就像一个安全的信使(可以接受百分之几的不安全感),尽管没有那么复杂。
在分配的内存部分中接受用户输入(一次接受一个字母以用于处理目的,例如查找关键字母的功能)是完全不安全的,因为不受其他进程的保护可以间谍吗?
我很想在将每个字符发送到字符串之前对其进行编码,尽管这看起来有点傻。是否有任何方法可以“锁定”对该 malloc 的访问(至少对内存查看的微不足道的尝试)或类似技术来保护内存中的字符串?
谢谢。
我对许多想法持开放态度,目前只是在计划。
【问题讨论】:
-
我认为——但我可能错了——在现代系统中,进程 X 无法访问为进程 Y 分配的内存,除非进程 X 具有特殊特权(与内核相同);如果内核中毒,一切都可能不安全。此外,键盘记录器可以在您将输入混淆到您的字符串之前读取输入。
-
@Shin,键盘记录器可能是录制的神奇答案,但是可能存在许多“较小”的不安全感,我希望至少盲目地加以防范,尤其是当我存储平原时记忆中的文字。如果它无法访问,但正如你所说,我很喜欢它。
-
@Shin:在大多数操作系统(包括 Windows 和 Linux)中,都有用于从另一个进程读取内存的 API 调用(需要管理权限,但不需要内核级进程)。这就是调试器的工作方式。
-
@BlueRaja,我是这么认为的(谢谢),幸运的是我可以不用纯文本存储在内存中,这样调试器就会返回,如果不是无法识别的结果被认为是无稽之谈。跨度>
-
@BlueRaja 我在写这篇评论时忘记了它......当然,调试器使用某些功能工作,该功能只需要调试器与要调试的进程或 root 使用相同的用户运行。所以至少用户账户或者root/admin账户应该被攻破,这本身就是一个威胁整个机器的问题
标签: c security memory input console