2012-06-17 45 views

回答

1

這種慣用的方法是讓你的程序suid-root,並且有前兩行main打開原始套接字並刪除根目錄。

這仍然比從安全角度來看不太理想,因爲:

  1. 在程序稍後會給攻擊者訪問原始套接字,它可以用於許多惡意的目的,可能是一個妥協獲取足夠的信息來提升特權。

  2. 任何suid-root二進制文件都可能受到動態鏈接程序或啓動代碼中的漏洞(在main之前運行)的漏洞的影響。雖然這些已經變得越來越罕見,甚至去年一次在glibc的鏈接器中使用LD_AUDIT的東西再次被發現。出於這個原因,許多有安全意識的系統(例如Openwall Linux)完全禁止suid-root二進制文件。

一個更安全,但更復雜的方法是讓你的程序運行具有提高的(但仍然很少)權限的守護進程,並有CLI界面只是一個簡單的包裝,與守護在UNIX通信通過一個可以機械地檢查漏洞的簡單協議來實現套接字。