Linux
文件系統所有權的安全隱患
授予文件系統的非 root 使用者所有權是否有任何安全隱患?
例如,目錄
/var/lib/pgsql/9.0/data
及其內容需要歸 postgres 使用者所有。如果我想把它的內容放在它自己的文件系統上,這樣做是個好習慣嗎?
- 直接掛載該文件系統
/var/lib/pgsql/9.0/data
或者
- 創建一個由 root 擁有的目錄(例如
/mnt/pgsql_data
),將文件系統掛載到那裡,在該文件系統上創建一個由 postgres 擁有的目錄(例如/mnt/pgsql_data/data
)並創建/var/lib/pgsql/9.0/data
指向該目錄的符號連結對於前者,我能看到的唯一潛在安全問題是它使 postgres 使用者能夠更改
lost+found
目錄(如果它是 ext2、ext3 或 ext4 文件系統),但我認為這不會產生嚴重影響。促使我提出這個問題的原因是,如果文件系統安裝在數據目錄上,則不支持創建 postgres 數據庫。看到這個 pgsql-hackers 討論。我之前沒有考慮過該文章的第一點。
取決於文件系統。據我所知,例如 ext3 不會辨識掛載點所有者的 uid,而只能辨識掛載分區根目錄的 uid。
無論如何,想像一下你正在使用一些蹩腳的文件系統,它會尊重所有權並跟隨我……
根據文件系統層次結構和內容,可能存在嚴重的安全隱患。
讓我舉例說明(為藝術自由度道歉,但我不會考慮可能的文件鎖定問題…… 8D)
#mkdir /opt/postgres #mount /dev/sdf1 /opt/postgres #chown postgres:portgres /opt/postgres #ls - /opt/postgres/8.3/ drwxr-xr-x 4 postgres postgres 1024 2011-08-11 23:14 . drwxr-xr-x 7 root root 48 2011-08-11 23:11 .. drwxr-xr-x 2 root root 1024 2011-08-11 23:14 bin drwxr-xr-x 2 root root 1024 2011-08-11 23:14 lib drwxr-xr-x 2 root root 1024 2011-08-11 23:14 doc drwxr-xr-x 2 root root 1024 2011-08-11 23:14 contrib drwx------ 2 root root 12288 2011-08-11 23:13 lost+found
現在假設有人擁有 postgres 訪問權限並想要後門**/opt/postgres/8.3/bin/createdb**
$cd /opt/postgres $cp -R 8.3 .hackme $cd .hackme/bin $echo 'rm -rf /' > createdb $cd .. $mv 8.3 .old; mv .hackme 8.3
這種特權升級攻擊有點過時了……過去,變體相當普遍。我必須補充說,這種錯誤的方法是標準建議是讓使用者擁有配置文件(例如 httpd.conf)而不是程序使用的配置文件的主要原因之一。
希望能幫助到你