Security

什麼規則可以防止從 chroot 內部進入使用者命名空間?

  • June 12, 2019
# rpm -q --whatprovides /usr/bin/unshare
util-linux-2.32-2.fc28.x86_64
# unshare -r
#

即以上成功,以下不成功。是什麼規則造成的?

# rpm -q --whatprovides /usr/sbin/chroot
coreutils-8.29-6.fc28.x86_64
# chroot fedora-27
# rpm -q --whatprovides /usr/bin/unshare
util-linux-2.30.2-1.fc27.x86_64
# strace unshare -r
...
unshare(CLONE_NEWUSER)      = -1 EPERM (Operation not permitted)

https://serverfault.com/a/648637/133475

眾所周知,能夠使用 . 的程序chroot能夠突破chroot. 由於unshare -r會將 chroot權限授予普通使用者,因此如果在chroot環境中允許這樣做將存在安全風險。實際上,這是不允許的,並且失敗了:

> > unshare: unshare failed: 不允許操作 > > >

unshare(2) 文件匹配:

> > EPERM(自 Linux 3.9 起) > > > CLONE_NEWUSER是在flags中指定的,並且呼叫者處於 chroot 環境中(即,呼叫者的根目錄與它所在的掛載名稱空間的根目錄不匹配)。 > > >

引用自:https://unix.stackexchange.com/questions/442996