Está planejado portar o mecanismo de isolamento de promessas para o Linux

Faz pouco o autor da biblioteca padrão Cosmopolitan C e a plataforma Redbean anunciada por meio de um anunciou, a implementação do mecanismo de isolamento promessa() para Linux.

Foi originalmente desenvolvido pelo projeto OpenBSD y permite banir seletivamente que as aplicativos acessam chamadas de sistema não utilizadas (uma espécie de whitelist de chamadas de sistema é formada para o aplicativo e outras chamadas são proibidas). Ao contrário dos mecanismos de controle de acesso syscall disponíveis no Linux, como o secomp, o mecanismo de promessa é projetado desde o início para ser o mais amigável possível.

A iniciativa fracassada de isolar aplicativos no ambiente base do OpenBSD usando o mecanismo systrace demonstrou que o isolamento no nível de chamadas de sistema individuais é muito complicado e demorado.

Como alternativa, foi proposto penhor, que permitido criar regras de isolamento sem entrar em detalhes e manipular classes de acesso preparadas.

Por exemplo, as classes oferecidas são stdio (entrada/saída), rpath (arquivos somente leitura), wpath (gravar arquivos), cpath (criar arquivos), tmppath (trabalhar com arquivos temporários), inet (rede de soquetes), unix (soquetes unix ), dns (resolução DNS), getpw (acesso de leitura ao banco de dados do usuário), ioctl (chamada ioctl), proc (controle de processo), exec (processos de inicialização) e id (controle de permissão).

As regras para trabalhar com chamadas do sistema são especificados na forma de anotações que incluem uma lista de classes de chamadas de sistema permitidas e uma matriz de caminhos de arquivo onde o acesso é permitido. Depois de compilar e executar o aplicativo modificado, o kernel assume o trabalho de monitorar a conformidade com as regras especificadas.

Separadamente, está sendo desenvolvida a implementação de promessa para o FreeBSD, que se distingue pela capacidade de isolar aplicativos sem fazer alterações em seu código, enquanto no OpenBSD a chamada de compromisso visa a integração estreita com o ambiente base e a adição de anotações ao código de cada um.

O juramento é como o fruto proibido que todos cobiçamos quando o chefe diz que devemos usar coisas como o Linux. Por que isso importa? É porque a promessa() realmente torna a segurança compreensível. O Linux nunca teve uma camada de segurança que meros mortais possam entender.

Os desenvolvedores de port do Linux prometeram seguir uma sugestão do FreeBSD e em vez de fazer alterações no código, eles prepararam um utilitário adicional do site promessa.com que permite aplicar restrições sem alterar o código do aplicativo. Por exemplo, para executar o utilitário curl com acesso apenas às classes de chamada de sistema stdio, rpath, inet e threadstdio, basta executar "./pledge.com -p 'stdio rpath inet thread' curl http://example.com » .

O utilitário funciona em todas as distribuições Linux desde o RHEL6 e não requer acesso root. Além disso, com base na biblioteca cosmopolita, é fornecida uma API para gerenciamento de restrições no código de programas em linguagem C, que permite, entre outras coisas, criar enclaves para restringir seletivamente o acesso em relação a determinadas funções da aplicação.

Houve alguns desenvolvedores no passado que tentaram isso. Não vou citar nomes, porque a maioria desses projetos nunca foi concluída. Quando se trata de SECOMP, os tutoriais online apenas explicam como colocar chamadas de sistema na lista de permissões, então a maioria das pessoas perde o interesse antes de descobrir como filtrar argumentos. Os projetos que avançaram também tiveram descuidos como permitir que bits setuid/setgid/sticky fossem alterados. Portanto, nenhuma das alternativas atuais deve ser usada. Acho que esse esforço nos aproxima muito mais do que nunca de ter o promessa().

A implementação não requer alterações no kernel: as restrições de utilitários são traduzidas em regras SECCOMP BPF e processadas usando o mecanismo de isolamento de chamadas de sistema nativo do Linux. Por exemplo, chamar promise("stdio rpath", 0) converterá em um filtro BPF

Por fim, se você tiver interesse em saber mais sobre o assunto, pode consultar os detalhes no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.