Para FreeBSD, está sendo desenvolvido um mecanismo de isolamento semelhante ao pledge e unveil

Para o FreeBSD, foi proposta a implementação de um mecanismo de isolamento de aplicativos, semelhante às chamadas de sistema plegde e unveil desenvolvidas pelo projeto OpenBSD. O isolamento em plegde é realizado por meio da proibição de chamadas de sistema não utilizadas pelo aplicativo, enquanto o unveil permite a abertura seletiva de acesso a apenas certos caminhos de arquivos com os quais o aplicativo pode interagir. Para o aplicativo, é formado um tipo de lista de permissões de chamadas de sistema e caminhos de arquivos, enquanto todas as outras chamadas e caminhos são proibidos.

A principal diferença na implementação do equivalente a plegde e unveil para o FreeBSD está na oferta de uma camada adicional que possibilita isolar aplicativos sem modificar seu código ou com mudanças mínimas. Vale lembrar que, no OpenBSD, plegde e unveil visam uma integração estreita com o ambiente base e são aplicados através da adição de anotações especiais no código de cada aplicativo. Para simplificar a organização da proteção, os filtros permitem evitar detalhes a nível de chamadas de sistema individuais e manipular classes de chamadas de sistema (entrada/saída, leitura de arquivos, gravação de arquivos, sockets, ioctl, sysctl, execução de processos, etc.). As funções de restrição de acesso podem ser chamadas no código do aplicativo à medida que determinadas ações são executadas; por exemplo, o acesso a sockets e arquivos pode ser fechado após a abertura dos arquivos necessários e o estabelecimento da conexão de rede.

O autor da porta plegde e unveil para FreeBSD pretende oferecer a possibilidade de isolamento de aplicativos arbitrários, para o que foi proposta a utilidade curtain, permitindo aplicar regras a aplicativos definidas em um arquivo separado. A configuração proposta inclui um arquivo com configurações básicas, definindo classes de chamadas de sistema e caminhos de arquivos típicos, específicos para determinadas aplicações (trabalho com áudio, interação em rede, registro em log, etc.), além de um arquivo com regras de acesso para aplicativos específicos.

A ferramenta curtain pode ser utilizada para isolar a maioria das ferramentas não modificadas, processos de servidor, aplicações gráficas e até mesmo sessões inteiras de desktop. O uso conjunto do curtain com mecanismos de isolamento fornecidos pelos subsistemas Jail e Capsicum é suportado. Também é possível organizar um isolamento aninhado, onde as aplicações executadas herdam as regras aplicadas à aplicação pai, complementando-as com restrições adicionais. Algumas operações do núcleo (ferramentas de depuração, POSIX/SysV IPC, PTYs) são protegidas adicionalmente por meio de um mecanismo de barreiras, que impede o acesso a objetos do núcleo criados por processos que não são o atual ou o processo pai.

O processo pode configurar sua própria isolação utilizando a chamada curtainctl ou através das funções plegde() e unveil() fornecidas pela biblioteca libcurtain, semelhantes a funções na OpenBSD. Para monitorar bloqueios durante a execução da aplicação, existe um sysctl ‘security.curtain.log_level’. O acesso aos protocolos X11 e Wayland é ativado separadamente ao especificar as opções ‘-X’/‘-Y’ e ‘-W’ ao iniciar o curtain, mas o suporte a aplicações gráficas ainda não está suficientemente estabilizado e tem uma série de problemas não resolvidos (os problemas manifestam-se principalmente ao usar X11, enquanto o suporte para Wayland está implementado de forma significativamente melhor). Os usuários podem adicionar restrições adicionais criando arquivos locais com regras (~/.curtain.conf). Por exemplo, para permitir gravação no Firefox apenas no diretório ~/.Downloads/, pode-se adicionar uma seção “[firefox]” com a regra “~/.Downloads/ : rw +”.

A implementação inclui o módulo do núcleo mac_curtain para controle de acesso mandatório (MAC, Mandatory Access Control), um conjunto de patches para o núcleo FreeBSD com a implementação dos manipuladores e filtros necessários, a biblioteca libcurtain para o uso das funções plegde e unveil em aplicações, a ferramenta curtain, exemplos de arquivos de configuração, um conjunto de testes e patches para alguns programas em espaço de usuário (por exemplo, para usar $TMPDIR com o objetivo de unificar o trabalho com arquivos temporários). Sempre que possível, o autor pretende minimizar o número de alterações que requerem a aplicação de patches ao núcleo e às aplicações.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster