Executar códigos de terceiros é uma funcionalidade essencial em muitos ambientes educacionais. No entanto, isso também introduz riscos significativos de segurança e infraestrutura. Este guia aborda a implementação de um sistema de isolamento de código para mitigar esses riscos.

Lidando com um dos piores problemas de cybersegurança: executar códigos de terceiros

Isolamento de Código

O isolamento de código é fundamental para garantir que o código executado não possa comprometer a integridade do sistema. Neste contexto, o isolamento não se refere apenas a execuções em containers Docker, mas também a uma série de camadas adicionais de contenção.

Isolamento de Processos

O isolamento de processos é implementado através de namespaces, que permitem controlar o acesso ao sistema de arquivos, processos, rede e identidades. Além disso, o processo é executado como um usuário sem privilégios e com no_new_privs, garantindo que não adquira novos privilégios durante a execução.

Controle de Syscalls

Mesmo isolado, o código ainda pode fazer chamadas ao kernel através de syscalls. Para mitigar esses riscos, o runner utiliza seccomp para bloquear syscalls relacionadas a comportamentos perigosos, como manipulação de namespaces, montagem de filesystems e acesso a interfaces de baixo nível.

Conclusão

Implementar um sistema de isolamento de código é essencial para garantir a segurança em ambientes que permitem a execução de códigos de terceiros. Este guia fornece uma visão detalhada de como implementar e configurar um sistema de isolamento de código robusto.

CodigosExecutarLidandoPioresProblemas