Linux
使用 cat 從不受信任的文件中讀取值是否有任何風險
我需要通過從使用者上傳的文本文件中讀取來獲取變數值。
我正在使用系統的腳本:
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 網路導出塊設備(然後可以複製設備的全部內容)。所以,不要不要這樣做。