Linux

文件系統所有權的安全隱患

  • August 11, 2011

授予文件系統的非 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)而不是程序使用的配置文件的主要原因之一。

希望能幫助到你

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