Linux

使用 cat 從不受信任的文件中讀取值是否有任何風險

  • July 22, 2012

我需要通過從使用者上傳的文本文件中讀取來獲取變數值。

我正在使用系統的腳本:

resourceVersion=`cat userFile.txt`
mkdir $resourceVersion
...

當我稍後使用該$resourceVersion變數作為其他命令的參數時,該文件的內容會以任何方式損害系統嗎?

編寫安全程式碼的規則 1:您必須清理您的使用者輸入

至少傳遞--給您的 mkdir 子句以防止操縱開關。

目前它可用於在具有任意權限的任意位置創建目錄。

就其本身而言,它可能不會導致違規,但您可以傳遞以下內容:

-m 0777 /var/lib/mysql/newdb

創建一個任何人都可以寫入的新 mysql 數據庫。

這裡還存在拒絕服務攻擊,因為每個空間都被視為一個新目錄。因此您可以傳遞 32760 個新路徑進行處理。

最後,一些偽文件系統對新目錄的敏感程度可能出乎您的意料。例如在 fedora 上的目錄/sys/fs/cgroup/newcgroup可以創建一個新的 cgroup。此外,在 LIO 子系統中,寫入目錄/sys/kernel/config/target可用於通過 iSCSI 網路導出塊設備(然後可以複製設備的全部內容)。

所以,不要不要這樣做。

引用自:https://serverfault.com/questions/410111