当我在虚拟终端中输入 root 密码时,X 上的另一个程序可以捕获我的 root 密码吗?

pro*_*cer 24 security xorg keyboard x11

通常我只在我的 linux 机器上安装开源程序,因为我不信任闭源应用程序。最近我不得不在一个大学项目中使用 Dropbox。我创建了一个名为work的单独 linux 帐户并运行(作为workdropbox,无需通过 python 脚本安装。该脚本还在系统托盘中创建了一个符号,为 Dropbox 的某些功能提供 GUI。

前几天我不得不做一些维护,所以我打开了一个虚拟终端(KDE 上的 konsole)并输入我的 root 密码su

Dropbox 应用程序是否有可能捕获我的 root 密码?

我使用 Fedora 20 和 KDE 4.14.3。

pet*_*rph 24

简短的回答:是的。

在“过去”,可以通过抓取来有效地阻止任何其他 X 应用程序读取特定输入。虽然直到今天仍然可以这样做,但XI2 协议规范似乎表明不能再这样做了(请参阅第 2220 行周围的原始事件描述)。因此,在单独的 X 下,您不再安全 - 至少在通常的简单设置中不安全。另请参阅如何让守护程序提示输入密码(在 Xsession、keyloggersafe 中)的回答下的讨论以及那里引用AskUbuntu Q&A. 不用说,实际上没有终端会这样做——这就是为什么像 OpenSSH 或 GnuPG 这样的应用程序带有自己的 UI 助手,即抓取键盘(尽管如上所述,现在它并没有多大帮助)。

您可以做的是在不同的 X 服务器下运行应用程序,例如嵌套的 X 服务器,如XephyrXnest,或基于 VNC 的服务器,如Xvnc。Wayland 协议还应该提供一些防止窃听的保护。

除上述情况外,该应用程序还可能试图利用系统中未修补的安全漏洞,从而获得提升的权限。或者做一些更简单的事情,比如在系统路径之前将 asusudo包装器放入您的路径中,从而拦截密码(感谢@Joshua 的评论)。