我一直致力於使用PID,/proc
和命令行分析來驗證系統上的進程的項目。我的代碼必須由安全人員檢查,他們設法用一條線來破壞它......令人尷尬!爲什麼允許修改argv [0]?
#!/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
是否至少包含一個假定存在至少一個參數的空字符(\0
)。在上面的代碼中,需要用空值來替換空格以繞過該檢查,這是我無法在perl中實現的東西 - 寫入到第一個\0
。
感謝
預防或檢測什麼?當進程重新命名?爲了什麼目的? – Sobrique