Como habilitar CLONE_NEWUSER
de maneira mais refinada em comparação com apenas kernel.unprivileged_userns_clone
?
Eu quero manter a superfície de ataque da API do kernel gerenciável, mantendo coisas novas e complicadas como não raiz CAP_SYS_ADMIN
ou BPF desabilitadas, mas também permitir isso seletivamente para alguns programas específicos.
Por exemplo, chrome-sandbox
quer CLOSE_NEWUSER
ou suid-root para operação adequada, mas não quero que todos os programas possam usar truques tão complicados, apenas um punhado de aprovados.
Sem criar um patch de kernel personalizado, isso não é possível. Observe que este sysctl específico do Debian está obsoleto . A maneira de desabilitar namespaces de usuário é
user.max_user_namespaces = 0
.Um novo namespace de usuário é criado por
kernel/user_namespace.c:create_user_ns()
. Há várias verificações que ocorrem antes de permitir a criação de um novo namespace, mas nada indica a capacidade de controlar isso por arquivo ou por usuário. É lamentável, mas muitos desenvolvedores de kernel não entendem o risco por trás da habilitação de namespaces de usuários não privilegiados em uma base global.Um patch de amostra (não testado!) para permitir que apenas o UID 1234 crie um novo namespace no kernel 6.0: