Resumo : |
Este trabalho descreve o desenvolvimento de uma linguagem de domínio como abstração sobre o Seccomp BPF para auxiliar na criação de sandboxes em sistemas Linux. Um sandbox é um contexto de isolamento de uma aplicação que a impede de executar ações tidas como não necessárias ao seu funcionamento. Entre as diversas ferramentas necessárias para a construção de um, está o Seccomp BPF, que por sua vez, é uma ferramenta que age diretamente no kernel filtrando chamadas de sistema. Tal filtragem ocorre por por meio da linguagem binária de baixo nível advinda do BPF, mecanismo originalmente desenvolvido para a filtragem de pacotes de rede e para a observabilidade de eventos do sistema operacional. Através dessa interface, é possível escrever instruções executadas em série pela máquina virtual BPF. No entanto, definir uma lógica de filtragem eficiente através dela é uma tarefa difícil e propensa ao erro. Essa dificuldade decorre da necessidade de operar diretamente nos registradores e acumuladores da máquina virtual e da inerente imperatividade de escrever lógica melhor expressa de forma declarativa nesta linguagem, o que pode prejudicar a performance do filtro. Para sanar tais problemas, foram desenvolvidos uma linguagem de domínio declarativa e expressiva bem como um compilador para esta, que permite a construção de filtros BPF de forma simplificada e integrada com o desenvolvimento de aplicações em sandbox. O corpo deste texto descreve a especificação da linguagem desenvolvida, bem como o funcionamento do mecanismo de conversão de programas nela escritos para filtros BPF otimizados. |