Stracing su 和 ssh 显示密码。这是安全漏洞还是我遗漏了什么?

Jos*_* R. 5 security password strace

我目前对此很着迷,strace因为是新手,所以我决定稍微玩一下。正如问题标题所建议的那样,我尝试了strace sustrace ssh。这两个命令都显示了我在 strace 输出中输入的密码。su一直抱怨密码不正确,同时ssh设法正常登录。
我的问题:

  • 这是安全漏洞还是我遗漏了什么?
  • 是否su将错误的密码报告为一种安全措施,因为它检测到它正在运行strace?如果是这样,它怎么知道它是通过 调用的strace?它会检查/proc/self/cmdline吗?
  • 像这样的事情会造成多大的损害
    alias su="strace -o /tmp/output.log su"

Mic*_*zek 17

这不是安全漏洞;您可以跟踪流程,因为这是您的流程。您不能只附加strace到任何正在运行的进程。例如:

$ sudo sleep 30 &
[1] 3660

$ strace -p 3660
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
Run Code Online (Sandbox Code Playgroud)

su正在报告错误的密码,因为它没有足够的读取权限/etc/shadow/etc/shadow是存储密码哈希的地方,它被设置为出于安全原因只有 root 可以读取它。su设置了 setuid 位,因此无论谁运行它,它都会以 root 有效运行,但是当你运行它时它strace不起作用,所以它最终在你的帐户下运行

我不确定您所说的“可能造成多少损害”是什么意思。如您所见,su不能从内部工作strace,因此您将使其无法正常工作。如果您的意思是“有人可以使用它来窃取我的密码”,那么他们将需要能够在您的 shell 中设置别名,除非您已将登录文件设置为全球可写或类似的内容,否则他们不应有权这样做。如果他们确实有权设置别名,则他们可以将别名su直接记录您的密码的修补版本;没什么特别的strace

  • Strace 确实支持通过 -p 选项附加到正在运行的进程。除此之外,这是一个很好的答案,仍然是+1。 (3认同)
  • @约瑟夫R。IIRC 只是 Fedora 的路线图,删除所有 setuid 二进制文件并用 SELinux 策略替换功能。我不知道有任何其他发行版计划这样做 (2认同)