Os desenvolvedores da distribuição Alpine Linux divulgaram informações sobre tentativas de invasão da plataforma de desenvolvimento colaborativo gitlab.alpinelinux.org, onde estavam sendo desenvolvidos o gerenciador de pacotes APK, ferramentas de build, componentes de infraestrutura e scripts de criação de pacotes (aports). A ataque foi realizado explorando uma vulnerabilidade na plataforma GitLab, provocada por um estouro de inteiro no mecanismo de expressões regulares da linguagem Ruby. Não foram encontradas evidências ou vestígios de uma invasão bem-sucedida, mas como é impossível excluir totalmente a exploração bem-sucedida da vulnerabilidade, o container com GitLab foi considerado potencialmente comprometido e seu conteúdo foi totalmente reconstruído desde o início, além de um procedimento de troca de senhas ter sido iniciado para os usuários.
Os administradores da infraestrutura do Alpine Linux não identificaram o surgimento de arquivos externos, processos suspeitos em execução, solicitações incomuns à API, alterações de configurações e arquivos de sistema, bem como picos de carga característicos da extração massiva de dados. Durante a análise de integridade do repositório aports, pacotes e arquivos de releases, além de sua verificação com cópias de servidores de build externos e sistemas de desenvolvedores, não foram detectadas alterações ocultas.
A completa exclusão da possibilidade de uma ataque bem-sucedido é dificultada pela falta de informações sobre conexões de rede de saída, a remoção de alguns logs durante a rotação (por exemplo, o log cron) e a falta de detalhamento adequado nos logs do servidor web (a aplicação bem-sucedida de um exploit que não leva a uma falha não é refletida no log).
No caso de um ataque bem-sucedido, os invasores poderiam ter acessado o banco de dados com informações de todos os usuários do GitLab (hashes de senhas, e-mail, endereços IP etc.), variáveis de ambiente e tokens dos sistemas de integração contínua, códigos de autenticação de dois fatores, hashes de tokens de acesso pessoais, conteúdo de repositórios privados e discussões confidenciais sobre problemas. As chaves para a formação de assinaturas digitais para releases e pacotes no atacado servidor não estavam armazenadas.
As primeiras tentativas de explorar a vulnerabilidade foram registradas em 20 e 21 de outubro. O invasor criou uma conta no GitLab e tentou enviar configurações modificadas para o sistema de integração contínua. Os logs registaram 8 encerramentos anormais dos processos do GitLab, dos quais 4 estavam relacionados ao uso do exploit. Observa-se que a primeira fase do funcionamento do exploit foi bem-sucedida, mas a segunda fase falhou.
No momento do ataque, a versão vulnerável do GitLab 19.3.4 estava sendo utilizada no contêiner, que foi atualizada em 22 de outubro para a versão GitLab 19.3.6. No entanto, os administradores do Alpine não levaram em consideração que a correção foi feita apenas nos pacotes de instalação oficiais do GitLab 19.3.6 e não no código do próprio GitLab, pois a vulnerabilidade estava presente na biblioteca Ruby. O contêiner continuou a usar a versão antiga da biblioteca Ruby e a vulnerabilidade permaneceu não corrigida.
O fato de que o sistema permanecia vulnerável foi identificado apenas em 26 de outubro. A análise dos logs revelou que em 25 e 26 de outubro os atacantes reiniciaram as tentativas de ataque. Em 27 de outubro, o acesso de usuários externos ao GitLab foi restrito. Em 28 de outubro, o conteúdo foi reestruturado, todas as senhas foram redefinidas (os usuários precisam definir uma nova senha por meio do procedimento de recuperação de senha esquecida) e as chaves de acesso foram substituídas. Em 29 de outubro, a versão atualizada servidor foi colocada em operação. O projeto de contêiner Docker alpinelinux/gitlab permaneceu vulnerável até 27 de outubro.
Fonte: opennet.ru
