
POC para CVE-2026-49009, um problema de path traversal autenticado que leva a RCE no Mender Server.
▄█████ ██ ██ ██████ ████▄ ▄██▄ ████▄ ▄██▀▀▀ ██ ██ ▄█▀▀█▄ ▄██▄ ▄██▄ ▄█▀▀█▄
██ ██▄▄██ ██▄▄ ▄▄▄ ▄██▀ ██ ██ ▄██▀ ██▄▄▄ ▄▄▄ ▀█████ ▀▀▀██ ██ ██ ██ ██ ▀▀▀██
▀█████ ▀██▀ ██▄▄▄▄ ███▄▄ ▀██▀ ███▄▄ ▀█▄▄█▀ ██ ▄▄██▀ ▀██▀ ▀██▀ ▄▄██▀
░█▄█░█▀▀░█▀█░█▀▄░█▀▀░█▀▄░░░█▀▀░█▀▀░█▀▄░█░█░█▀▀░█▀▄░░░█▀▄░█▀▀░█▀▀░
░█░█░█▀▀░█░█░█░█░█▀▀░█▀▄░░░▀▀█░█▀▀░█▀▄░▀▄▀░█▀▀░█▀▄░░░█▀▄░█░░░█▀▀░
░▀░▀░▀▀▀░▀░▀░▀▀░░▀▀▀░▀░▀░░░▀▀▀░▀▀▀░▀░▀░░▀░░▀▀▀░▀░▀░░░▀░▀░▀▀▀░▀▀▀░
Descobri e reportei de forma responsável uma vulnerabilidade crítica no fluxo de geração de artefatos de arquivo único do Mender Server. O problema começou como uma falha de sanitização de entrada e path traversal no campo args.filename controlado pelo usuário, mas demonstrei que a falha não parava na escrita arbitrária de arquivos. Ao mirar em um executável de propriedade do worker dentro do contêiner de geração de artefatos, elevei o problema para uma execução remota de código confiável.
Na prática, um atacante autenticado com acesso à geração de artefatos poderia sobrescrever /usr/bin/mender-artifact dentro do create-artifact-worker. O fluxo de trabalho então invocava esse mesmo binário durante a geração normal de artefatos, o que fazia com que o payload controlado pelo atacante fosse executado.
Isso transformou uma falha de traversal/sobrescrita arbitrária em um problema de execução de código no backend dentro do fluxo de artefatos.
O fluxo de trabalho vulnerável aceitava entrada controlada pelo atacante no fluxo de geração de artefatos de arquivo único e não restringia suficientemente onde o conteúdo enviado seria gravado.
Descobri que podia controlar args.filename e abusar do path traversal para gravar fora do destino pretendido. Em vez de gravar um arquivo de entrada de artefato normal, apontei o alvo da gravação para /usr/bin/mender-artifact dentro do contêiner do worker. Como o usuário em tempo de execução era dono desse binário na configuração vulnerável, a gravação foi bem-sucedida.
O fluxo de trabalho posteriormente chamava mender-artifact como parte do processo de construção do artefato. Como eu já havia substituído esse executável pelo meu próprio payload, o worker executava código controlado pelo atacante.
Um atacante precisava de:
Em um nível geral, a cadeia de exploração funcionava assim:
/usr/bin/mender-artifact.mender-artifact durante a geração do artefato.Isso era relevante porque o alvo de gravação vulnerável não era um arquivo qualquer. Era um binário que o fluxo de trabalho imediatamente confiava e executava.
Um atacante bem-sucedido poderia executar comandos arbitrários dentro do worker compartilhado de geração de artefatos.
A partir daí, o impacto ia além de uma única solicitação:
Em resumo, não era apenas uma falha de escrita de arquivo. Era uma falha de execução de código em um componente sensível do backend que ficava no caminho de entrega de software.
A HackerOne acabou avaliando o relatório como Crítico e concedeu uma recompensa de US$ 3.000, o que estava alinhado com o impacto prático demonstrado durante a validação.
A causa raiz era uma falha de fronteira de confiança no caminho de geração de artefatos de arquivo único.
O fluxo de trabalho confiava demais na entrada de caminho controlada pelo atacante ao longo da cadeia de processamento do backend. Isso permitia que um nome de arquivo influenciado pelo usuário escapasse de sua localização pretendida e alcançasse alvos sensíveis do sistema de arquivos. O ambiente do worker então amplificava esse erro porque expunha caminhos de executáveis que eram graváveis pelo usuário em tempo de execução e posteriormente executados pelo próprio fluxo de trabalho.
Essa combinação criava uma cadeia de exploração limpa:
Entrada de caminho controlada pelo usuário → Sobrescrita arbitrária de arquivo → Sobrescrita de executável confiável → RCE no backend
O CVE-2026-49009 mostra como um problema aparentemente restrito de sanitização de entrada pode se tornar uma cadeia completa de RCE quando um fluxo de trabalho confiável grava dados controlados pelo atacante em caminhos de executáveis.
Nas versões vulneráveis, um atacante autenticado poderia transformar o recurso de geração de artefatos de arquivo único em uma cadeia de path traversal, sobrescrita arbitrária e execução remota de código. As versões corrigidas bloquearam esse caminho e restauraram o fluxo de trabalho ao seu comportamento pretendido.