【发布时间】:2016-03-04 08:49:50
【问题描述】:
我一直在从事一个项目,该项目使用 PID、/proc 和命令行分析来验证系统上的进程。我的代码必须由安全人员检查,他们设法用一行代码破解它……尴尬!
#!/usr/bin/env perl
$0="I am running wild"; # I had no clue you can do this!
system("cat /proc/$$/cmdline");
print("\n");
system("ps -ef | grep $$");
# do bad stuff here...
我的问题:
-
我看到了上面的一些用例,比如隐藏命令行上给出的密码(也是不好的做法),但是当一个人可以隐藏进程和欺骗
cmdline时,我看到了更多的问题/问题。有理由允许吗?不是系统漏洞吗? -
如何防止或检测到这种情况?我研究了
/proc挂载选项。我也知道可以使用lsof来识别基于意外行为的欺骗进程,但这在我的情况下不起作用。目前,我正在使用一种简单的方法来检测cmdline是否包含至少一个 null (\0) 字符,该字符假定至少存在一个参数。在上面的代码中,需要用空值替换空格以绕过我无法在 Perl 中实现的检查 - 写入到第一个\0。
【问题讨论】:
标签: linux perl procfs spoof cmdline-args