Tech

Vulnerabilidades de escape de sandbox em sistemas Judge0 Expose para completar o controle

Vulnerabilidades de escape do sandbox

Várias falhas críticas de segurança foram divulgadas no sistema de execução de código on-line de código aberto Judge0 que poderiam ser exploradas para obter a execução de código no sistema de destino.

As três falhas, todas de natureza crítica, permitem que um “adversário com acesso suficiente execute uma fuga da sandbox e obtenha permissões de root na máquina host”, disse a empresa australiana de segurança cibernética Tanto Safety em um relatório publicado hoje.

Judge0 (pronuncia-se “juiz zero”) é descrito por seus mantenedores como um “sistema de execução de código on-line robusto, escalável e de código aberto” que pode ser usado para construir aplicativos que exigem recursos de execução de código on-line, como avaliação de candidatos, e-learning e editores de código e IDEs on-line.

Segundo seu website, o serviço é utilizado por 23 clientes como AlgoDaily, CodeChum e PYnative, entre outros. O projeto foi bifurcado 412 vezes no GitHub até o momento.

Cíber segurança

As falhas, descobertas e relatadas por Daniel Cooper em março de 2024, estão listadas abaixo –

  • CVE-2024-28185 (Pontuação CVSS: 10,0) – O aplicativo não leva em conta hyperlinks simbólicos colocados dentro do diretório sandbox, que podem ser aproveitados por um invasor para gravar em arquivos arbitrários e obter execução de código fora da sandbox.
  • CVE-2024-28189 (Pontuação CVSS: 10,0) – Um desvio de patch para CVE-2024-28185 que decorre do uso do comando chown do UNIX em um arquivo não confiável dentro da sandbox. Um invasor pode abusar disso criando um hyperlink simbólico (hyperlink simbólico) para um arquivo fora da sandbox, permitindo que o invasor execute chown em arquivos arbitrários fora da sandbox.
  • CVE-2024-29021 (Pontuação CVSS: 9.1) – A configuração padrão do Judge0 deixa o serviço vulnerável a um escape de sandbox through Server-Aspect Request Forgery (SSRF). Isso permite que um invasor com acesso suficiente à API Judge0 obtenha a execução de código sem sandbox como root na máquina de destino.

O problema está enraizado em um script Ruby chamado “isolate_job.rb”, que é responsável por configurar o sandbox, bem como executar o código e armazenar os resultados da execução.

Especificamente, envolve a criação de um hyperlink simbólico no diretório antes que um script bash seja configurado para executar o programa com base no idioma de envio, de modo que permita a gravação em um arquivo arbitrário no sistema sem sandbox.

Um agente de ameaça poderia aproveitar essa falha para substituir scripts no sistema e obter execução de código fora da sandbox e no contêiner Docker que executa o trabalho de envio.

Cíber segurança

Além do mais, o invasor pode aumentar seus privilégios fora do contêiner do Docker devido à sua execução usando o sinalizador privilegiado conforme especificado em docker-compose.yml.

“Isso permitirá que o invasor monte o sistema de arquivos host Linux e o invasor possa então gravar arquivos (por exemplo, um cron job malicioso) para obter acesso ao sistema”, disse Herman Došilović do Judge0.

“A partir deste ponto, o invasor terá acesso completo ao sistema Judge0, incluindo o banco de dados, redes internas, o servidor internet Judge0 e quaisquer outros aplicativos em execução no host Linux”.

CVE-2024-29021, por outro lado, tem a ver com uma configuração que permite a comunicação com o banco de dados PostgreSQL do Judge0 disponível dentro da rede Docker interna, permitindo assim ao adversário armar o SSRF para se conectar ao banco de dados e alterar o tipo de dados relevante colunas e, finalmente, obter injeção de comando.

Após divulgação responsável, as deficiências foram corrigidas na versão 1.13.1 lançada em 18 de abril de 2024. Os usuários do Judge0 são aconselhados a atualizar para a versão mais recente para mitigar ameaças potenciais.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button