CVE-2023-52137
GitHub Action tj-actions/verify-changed-files is vulnerable to command injection in output filenames
Em resumo
Uma ação do GitHub que verifica arquivos alterados pode ser enganada para executar comandos maliciosos se os nomes de arquivos contiverem caracteres especiais como ponto-e-vírgula. Um atacante poderia usar isso para roubar segredos ou assumir o controle do servidor de compilação.
Detalhe técnico
Vulnerabilidade de injeção de comando em tj-actions/verify-changed-files onde nomes de arquivo não escapados na saída da ação são substituídos diretamente em blocos de execução de shell. Vetor de ataque requer nomes de arquivo com metacaracteres de shell (ex: `;`) em um repositório; impacto inclui execução de código arbitrário e potencial vazamento de credenciais se GITHUB_TOKEN estiver acessível. Mitigado em v17+ ao ativar safe_output e escapar caracteres especiais.
Resumo gerado e traduzido por IA a partir da descrição oficial.
The [`tj-actions/verify-changed-files`](https://github.com/tj-actions/verify-changed-files) action allows for command injection in changed filenames, allowing an attacker to execute arbitrary code and potentially leak secrets. The [`verify-changed-files`](https://github.com/tj-actions/verify-changed-files) workflow returns the list of files changed within a workflow execution. This could potentially allow filenames that contain special characters such as `;` which can be used by an attacker to take over the [GitHub Runner](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners) if the output value is used in a raw fashion (thus being directly replaced before execution) inside a `run` block. By running custom commands, an attacker may be able to steal secrets such as `GITHUB_TOKEN` if triggered on other events than `pull_request`.
This has been patched in versions [17](https://github.com/tj-actions/verify-changed-files/releases/tag/v17) and [17.0.0](https://github.com/tj-actions/verify-changed-files/releases/tag/v17.0.0) by enabling `safe_output` by default and returning filename paths escaping special characters for bash environments.
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:L/A:L