在bash中运行PINENTRY_USER_DATA="foo" gpg --change-pin时,其他进程捕获“foo”有多容易?
发布于 2021-08-30 12:08:05
bash中的语法为正在运行的程序设置指定的环境变量。特定程序的环境变量可以在/proc/<pid>/environ中读取。这意味着作为同一用户或具有根权限的用户运行的任何其他进程都可以轻松读取此值。
要减轻这种情况,最好的办法是在不同的用户帐户下运行该进程。根据您的需要,该帐户可以是特权帐户,也可以不是特权帐户,但至少要与不受信任的其他帐户分开。最终,您无法向系统/根隐藏这种类型的信息。
发布于 2021-08-31 12:29:29
如果一个程序正在积极地试图获取foo,它可以通过搜索来自同一个用户的所有进程,并搜索environ中的任何变量。此程序必须以与您相同的用户运行,或从特权帐户运行。如果alice正在运行gpg,则eve无法使用其普通用户帐户执行此操作。
这个程序必须保持对每一个新进程启动的主动搜索,查看它是否是gpg,并转储它的environ文件。但是用旧别针的窗户很小。
由于您将立即更改PIN,旧的PIN很快就失去了它的实用价值。一旦你进入新的密码,旧的是无用的。
再看看这个:如果您担心在GPG中运行另一个进程并从GPG获取环境变量,那么您担心的是错误的事情。正在运行的恶意进程只需将gdb附加到运行的任何进程,转储其内存,注入数据即可。
因此,如果系统上有恶意运行的东西,请不要试图隐藏它。核爆系统并重新安装。
https://security.stackexchange.com/questions/254757
复制相似问题