E o Google revelou uma falha de segurança no GitHub que afeta o recurso de ações do GitHub. Conheça os detalhes dessa vulnerabilidade.
O Project Zero divulgou detalhes de uma séria violação de segurança no GitHub e relatou que o bug afeta os comandos do fluxo de trabalho de ação do GitHub e é descrito como de alta gravidade.
Obviamente, este bug foi descoberto em julho, mas sob o período de divulgação padrão de 90 dias, os detalhes só foram divulgados apenas agora.
Google revelou uma falha de segurança no GitHub
Essa falha se tornou uma das poucas vulnerabilidades que não foi corrigida adequadamente antes que expirasse o prazo de 90 dias, o prazo padrão dado pelo Google Project Zero.
Segundo Felix Wilhelm (que o descobriu), integrante da equipe do Project Zero, a falha afeta o recurso de ações do GitHub, ferramenta para automatizar o trabalho dos desenvolvedores. Isso ocorre porque os comandos de fluxo de trabalho de Ações são “vulneráveis a ataques de injeção”:
“Actions Github suporta um recurso chamado comandos de fluxo de trabalho como um canal de comunicação entre o corretor de ações e a ação executada. Os comandos de fluxo de trabalho são implementados em /src/Runner.Worker/ActionCommandManager.cs e funcionam analisando STDOUT de todas as ações realizadas procurando por um dos dois marcadores de comando.”
Ele menciona que o grande problema com esse recurso é que ele é muito vulnerável a ataques de injeção. Como o processo de execução verifica cada linha impressa em STDOUT em busca de comandos de fluxo de trabalho, toda ação do GitHub que contém conteúdo não confiável como parte de sua execução é vulnerável.
Na maioria dos casos, a capacidade de definir variáveis de ambiente arbitrárias resulta na execução remota de código assim que outro fluxo de trabalho estiver em execução.
Ele passou algum tempo examinando repositórios GitHub populares e quase todos os projetos que usam ações GitHub ligeiramente complexas são vulneráveis a esse tipo de bug.
Depois, ele deu alguns exemplos de como o bug pode ser explorado e também sugeriu uma solução:”
Eu realmente não tenho certeza de qual é a melhor maneira de consertar isso. Acho que a maneira como os comandos de fluxo de trabalho são implementados é fundamentalmente insegura. A depreciação da sintaxe do comando v1 e o reforço doet-env com uma lista de permissões provavelmente funcionaria contra os vetores RCE diretos.”
“No entanto, mesmo a capacidade de substituir as variáveis de ambiente ‘normais’ usadas em etapas posteriores é provavelmente suficiente para explorar as ações mais complexas. Nem analisei o impacto de segurança dos outros controles no espaço de trabalho.”
Por outro lado, ele menciona que uma boa solução de longo prazo seria mover os comandos do fluxo de trabalho para um canal separado (por exemplo, um novo descritor de arquivo) para evitar a análise de STDOUT, mas isso interromperá muitos códigos de ação existente.
Quanto ao GitHub, seus desenvolvedores postaram um aviso em 1º de outubro e descontinuaram os comandos vulneráveis, mas argumentaram que o que Wilhelm descobriu era na verdade uma “vulnerabilidade de segurança moderada”. O GitHub atribuiu o identificador de bug CVE-2020-15228:”
Uma vulnerabilidade de segurança moderada foi identificada no tempo de execução do GitHub Actions que pode permitir a injeção de caminhos e variáveis de ambiente em fluxos de trabalho que registram dados não confiáveis em STDOUT. Isso pode levar à introdução ou modificação de variáveis de ambiente sem a intenção do autor do fluxo de trabalho.”
“Para nos ajudar a resolver esse problema e permitir que você defina variáveis de ambiente dinamicamente, introduzimos um novo conjunto de arquivos para lidar com atualizações de ambiente e caminho em fluxos de trabalho.
“Se você estiver usando corretores auto-hospedados, certifique-se de que eles estejam atualizados para a versão 2.273.1 ou superior.
De acordo com Wilhelm, em 12 de outubro, o Project Zero contatou o GitHub e ofereceu proativamente uma janela de 14 dias se o GitHub quisesse mais tempo para desabilitar os comandos vulneráveis. Claro, a oferta foi aceita e o GitHub esperava desativar os comandos vulneráveis depois de 19 de outubro. O Project Zero então definiu a nova data de divulgação para 2 de novembro.