O projeto Landrun começou a desenvolver um novo sistema para a execução isolada de aplicativos individuais. Para isolar, é utilizado o módulo LSM do núcleo Linux Landlock, permitindo evitar a execução de operações privilegiadas durante a criação do ambiente sandbox. Em suas funções, o Landrun é semelhante à utilidade Firejail, mas se destaca por uma implementação mais simples, leveza e a capacidade de operar sob um usuário não privilegiado sem a necessidade de ser fornecido com a flag suid. O código do projeto é escrito na linguagem Go e é distribuído sob a licença GPLv2.
O mecanismo Landlock permite que programas não privilegiados limitem o uso de objetos do núcleo Linux, como hierarquias de arquivos, sockets de rede e ioctl. Ao contrário dos namespaces e da filtragem de chamadas de sistema, o ambiente isolado é formado pelo núcleo Linux na forma de uma camada adicional sobre os mecanismos existentes de controle de acesso. Para interagir com o subsistema Landlock, a utilidade landrun utiliza a biblioteca go-landlock dos desenvolvedores do LandLock.
O Landrun permite reduzir o risco de comprometimento do sistema principal ao executar programas não confiáveis ou potencialmente vulneráveis. Entre as funcionalidades, destaca-se o suporte à limitação seletiva de acesso em nível de diretórios individuais, o vínculo de permissões a caminhos de arquivos (permitindo ou negando leitura, gravação e execução) e o controle sobre a iniciação e recebimento de conexões TCP.
Por exemplo, com o Landrun, pode-se proibir um processo de executar arquivos executáveis, permitir gravação apenas em um subdiretório específico com dados, proibir a criação de sockets de escuta para receber conexões de rede e permitir o envio de solicitações de rede apenas para portas TCP designadas. No caso mais simples, para proibir gravação, execução e capacidades de rede, o programa pode ser executado com o comando "landrun —ro \/", e para isolar o nginx, pode-se usar: landrun —rox \/usr\/bin —ro \/lib,\/lib64,\/var\/www —rwx \/var\/log —bind-tcp 80,443 \/usr\/bin\/nginx.
Nos planos futuros, menciona-se um gerenciamento avançado de acesso ao sistema de arquivos, suporte a UDP e controle de recursos de processos. Para limitar o acesso em nível de sistema de arquivos, é necessário pelo menos o núcleo Linux 5.13, e para limitações de rede, o 6.8.
Além disso, vale ressaltar que mudanças já foram aceitas na base de código do Firejail, permitindo o uso do subsistema do núcleo Landlock para isolamento sem o bit suid e elevação de privilégios, mas o lançamento com esse suporte ainda não foi publicado.
Fonte: opennet.ru
