一个糟糕的进程如何通过等待用户以 sudo 运行命令来获得 root 权限?

信息安全 linux 特权升级 过程 须藤
2021-09-04 23:02:22

对此答案的评论指出:

整个 linux 桌面对以用户身份运行的不良进程提供的保护很少。一个糟糕的进程可能只是观察键盘输入并等待用户以 sudo 身份运行命令。坏进程现在拥有 root 权限,而用户永远不会知道。

坦率地说,这让我感到害怕——我的印象是sudo <command>只会授予更高的权限来运行该命令,而这种严格的权限管理方法使 linux 比 Windows 更安全。我认为这sudo不会被“拦截”。

“坏进程”是否能够监视键盘以获得 root 访问权限?如果是这样,当一个进程用于另一个进程时,它们将如何授予自己这些权限?一个可以做到这一点以及可能的对策的不良过程的例子将非常感激。

1个回答

你是对的,sudo只授予你使用它运行的命令提升的权限。

评论者指的是在 Linux 桌面会话中运行的进程可以在您不知情的情况下观察该桌面会话上的击键。因此,如果您在桌面上打开终端窗口,键入sudo <some command>并在提示符处输入密码,恶意程序可能会跟踪您键入的击键,然后将捕获的密码静默传递给它自己的实例sudo以运行任何命令它喜欢作为根。

作为一个简单的(非恶意)示例,该程序screenkey无需 root 权限即可查看您键入的密钥。另外,我敢打赌全局热键(例如Super键)的工作方式大致相同。

这听起来很可怕。至于可能的对策,我真的不知道是否有任何“坏进程”在您的系统上运行。因此,您真正能做的就是采取预防措施,例如:

  • 养成良好的互联网卫生习惯,即不要从互联网上随机下载不受信任的可执行文件
  • 请注意您在哪些文件上设置了执行位 ( chmod +x)
  • 如果您必须运行不受信任的可执行文件,请以尽可能低的权限运行它
    (例如,sudo -u nobody <untrusted program>将运行<untrusted program>nobody,它无法访问您用户的 X11 服务器,因此无法查看您的击键)