Múltiplas falhas críticas de segurança foram divulgadas no sistema de execução de código online open-source Judge0, que podem ser exploradas para obter a execução de códigos no sistema alvo.
As três falhas, todas críticas por natureza, permitem que um "adversário com acesso suficiente realize uma fuga do sandbox e obtenha permissões de root na máquina hospedeira", disse a empresa australiana de cibersegurança Tanto Security em um relatório publicado hoje.
Judge0 (pronuncia-se "juiz zero") é descrito por seus mantenedores como um sistema de execução de código online "robusto, escalável e open-source" que pode ser usado para construir aplicações que exigem funcionalidades de execução de código online, como avaliação de candidatos, e-learning, e editores de código online e IDEs.
De acordo com seu site, o serviço é usado por 23 clientes como AlgoDaily, CodeChum e PYnative, entre outros.
O projeto foi bifurcado (forked) 412 vezes no GitHub até o momento.
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 symlinks colocados dentro do diretório sandbox, o que pode ser aproveitado por um atacante para escrever em arquivos arbitrários e obter execução de código fora do sandbox.
CVE-2024-28189
(pontuação CVSS: 10.0) - Um bypass de patch para o
CVE-2024-28185
que decorre do uso do comando UNIX chown em um arquivo não confiável dentro do sandbox.
Um atacante pode abusar disso criando um symlink para um arquivo fora do sandbox, permitindo ao atacante executar chown em arquivos arbitrários fora do sandbox.
CVE-2024-29021
(pontuação CVSS: 9.1) - A configuração padrão do Judge0 deixa o serviço vulnerável a uma fuga do sandbox via Server-Side Request Forgery (SSRF).
Isso permite que um atacante com acesso suficiente à API do Judge0 obtenha execução de código unsandboxed como root na máquina alvo.
O problema está enraizado em um script Ruby chamado "isolate_job.rb", 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 symlink no diretório antes de um script bash ser configurado para executar o programa com base na linguagem de submissão de tal forma que permite a escrita em um arquivo arbitrário no sistema unsandboxed.
Um ator de ameaças poderia explorar essa falha para sobrescrever scripts no sistema e obter execução de código fora do sandbox e no contêiner Docker executando o trabalho de submissão.
Além disso, o atacante poderia escalar seus privilégios fora do contêiner Docker devido a ele ser executado usando a flag privilegiada conforme especificado em docker-compose.yml.
"Isso permitirá que o atacante monte o sistema de arquivos do host Linux e o atacante pode então escrever arquivos (por exemplo, um trabalho cron malicioso) para obter acesso ao sistema", disse Herman Došilović, do Judge0.
"A partir deste ponto, o atacante terá acesso completo ao sistema Judge0, incluindo o banco de dados, redes internas, o servidor web do Judge0 e quaisquer outras aplicações em execução no host Linux."
O
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 que o adversário instrumentalize o SSRF para se conectar ao banco de dados e alterar o datatype de colunas relevantes e, em última instância, obter injeção de comando.
Após a divulgação responsável, as deficiências foram abordadas na versão 1.13.1 lançada em 18 de abril de 2024.
Aconselha-se que os usuários do Judge0 atualizem para a versão mais recente para mitigar ameaças potenciais.
Publicidade
Em 14 de janeiro a Solyd irá revolucionar a forma como pentest e hacking deve ser ensinado. Se inscreva para ser o primeiro a saber das novidades. Saiba mais...