是否有 ptrace_scope 默认设置为零的发行版?

是否有 ptrace_scope 默认设置为零的发行版?

我想ptrace在最新版本的 Ubuntu 上使用来检查在同一操作系统用户下运行的任何其他进程的内存。然而,我很快就偶然发现

不允许操作

经过快速的网络搜索后,我发现:

在 Ubuntu 10.10 及更高版本中,用户无法 ptrace 不是调试器后代的进程。该行为可通过 /proc/sys/kernel/yama/ptrace_scope sysctl 进行控制,可通过 Yama 获得。

我知道我可以将此值设置为 0,然后执行我想要的操作。但是,我想知道是否存在ptrace_scope默认设置为零的 Linux 发行版?

答案1

是的,有。例如 Debian 短暂地设置了ptrace_scope=1默认值切换回来

ptrace禁用非子进程所提供的保护在某种程度上是有限的:它可以防止真实但范围狭窄的漏洞利用,并且成本虽小但不可忽略。能够从以某个用户身份运行的进程运行的攻击者ptrace已经可以以该用户身份运行任意进程并访问该用户的所有文件。因此,这些ptrace_scope限制仅保护已经运行的进程的特权和机密信息,典型的情况是正在运行的密钥代理进程(ssh-agentgpg-agentgnome-keyring-daemon、 …),其内存中有用户输入的机密。限制的代价是应用程序只能用于ptrace控制它们启动的进程;这允许诸如在gdb或下运行进程之类的用例,fakeroot但不允许诸如将调试器附加到正在运行的程序或 之类的用例reptyr

答案2

如果有的话,就不应该有。他们中的大多数人不久后就换了: https://www.youtube.com/watch?v=hAj2_-KWeoo

简而言之:一个聪明的家伙决定通过 ptrace 在 Linux 上实现 create-remote-thread 以将代码注入到外部进程中。

相关内容