O que são limitações do sistema chrooted? [fechadas]

0

O Chroot nos permite alterar o diretório raiz, ou melhor, o diretório raiz do processo específico. Agora, obviamente, isso restringe o processo para a árvore especificada (a menos que não abandone os privilégios).

Mas fiquei imaginando que outras limitações poderiam surgir nesse contexto. Especificamente em relação ao acesso a dispositivos e outros recursos. Desde que o processo não saia, de volta à árvore original, obviamente.

Parece-me que essa mudança maciça deveria ter implicações adicionais para a funcionalidade do sistema. Mas não consegui encontrar nada específico.

Talvez não haja nenhum, mas isso não parece provável, e eu ainda prefiro saber com certeza.

    
por user1561358 14.05.2018 / 15:42

2 respostas

3

Funcionalmente, nada. Literalmente tudo o que a chamada chroot() faz é atualizar onde o kernel ancora a resolução do caminho para o seu processo. Em particular, a menos que você também deixe cair privilégios de root, você ainda pode acessar /proc e /sys (porque você pode fazer as chamadas de sistema mount() , nenhum binário externo necessário), você ainda pode acessar nós de dispositivo (você pode basta criá-los com a chamada do sistema mknod() , novamente sem necessidade de binário externo) e realmente fazer praticamente tudo o que você puder imaginar.

Se você eliminar privilégios de root logo após entrar no chroot (como a maioria dos aplicativos bem comportados), você ainda pode fazer qualquer coisa que você possa fazer no contexto do usuário, desde que não precise de programas ou bibliotecas externas. que não estão no ambiente chroot.

Note, entretanto, que, mesmo assim, um chroot é praticamente zero de valor prático de segurança. É realmente realmente fácil de escapar de um chroot através de uma grande variedade de mecanismos (sério, apenas pesquise 'escape do chroot' no seu mecanismo de busca favorito, e você encontrará resultados listando pelo menos meia dúzia de métodos ). Tudo o que é necessário para explorar isso em qualquer aplicativo arbitrário é uma vulnerabilidade ACE. Na verdade, chroot() não era originalmente destinado à segurança, era (e ainda é) uma ferramenta de desenvolvedores destinada a permitir o teste de novos softwares em um ambiente isolado (entre outras coisas, atualmente é mais usado para fornecer um construir ambiente em sistemas automatizados de construção e CI).

    
por 14.05.2018 / 21:06
2

Acesso aos dispositivos: a menos que o ambiente chroot inclua sua própria cópia dos nós de dispositivos necessários, não haverá acesso. Por exemplo, você pode descobrir que, por exemplo shells interativos chrooted podem se comportar de maneira estranha se não houver um nó de dispositivo /dev/null dentro do ambiente chroot.

Um processo dentro de um ambiente chroot também será incapaz de enviar mensagens syslog, a menos que você configure seu daemon syslog para criar um /dev/log adicional dentro do ambiente chroot.

Se os sistemas de arquivos /proc e /sys não tiverem sido montados por bind ou fornecidos de outra forma dentro do ambiente chroot, qualquer ferramenta de consulta de status do sistema que os use não funcionará.

    
por 14.05.2018 / 15:58