Voltar
Inteligência do adversário
Tabela de conteúdo

Categoria: Inteligência adversária
Região: Global
Data: 24 de julho de 2024
TOPO: VERDE

Sumário executivo

Este artigo investiga as complexidades técnicas do CVE-2024-23897, uma vulnerabilidade de inclusão de arquivos locais (LFI) não autenticada no Jenkins, e retraça como os agentes de ameaças a utilizaram para violar os repositórios Github de uma empresa.

Fluxo potencial da exploração

Preparando o cenário: uma instância vulnerável do Jenkins

Nossa história começa com um servidor Jenkins aparentemente inócuo, a base dos pipelines de integração e implantação contínuas. Infelizmente, essa instância específica, executando uma versão vulnerável (Jenkins 2.441 e anteriores, LTS 2.426.2 e anteriores), tornou-se alvo das intenções maliciosas dos agentes de ameaças recentemente.

Para entender o ataque, vamos primeiro configurar um ambiente vulnerável semelhante usando o Docker:

Etapas de configuração do Docker:

1. Extraia a imagem do Docker usando o comando:

docker pull jenkins/jenkins: 2.440-jdk17

2. Execute o contêiner:

docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v /path/to/your/local/jenkins/home:/var/jenkins_home jenkins/jenkins:2.440-jdk17

Esse comando inicia um contêiner Jenkins, mapeando as portas 8080 e 50000 para a máquina host e montando um diretório local no diretório /var/jenkins_home.

3. Acesse o invólucro do contêiner:

<container_name>docker exec -it/bin/bash

Com o cenário preparado, vamos explorar como os agentes de ameaças estão explorando a vulnerabilidade.

Desmascarando a vulnerabilidade - CVE-2024-23897

O CVE-2024-23897 é uma vulnerabilidade LFI não autenticada que permite que invasores leiam arquivos arbitrários no servidor Jenkins. Essa vulnerabilidade surge da validação inadequada de entrada, permitindo que os invasores manipulem parâmetros específicos e induzam o servidor a acessar e exibir o conteúdo de arquivos confidenciais.

The Heist - Exfiltrando segredos do Github

  1. Reconhecimento: Os agentes de ameaças provavelmente começaram identificando a instância vulnerável do Jenkins e confirmando a presença da integração com o Git
  2. Explorando o LFI: Usando a vulnerabilidade, o IntelBroker obteve acesso a arquivos confidenciais no servidor Jenkins, incluindo o credentials.xml arquivo, que armazena credenciais criptografadas usadas para várias integrações
  3. Descriptografando o saque: Em seguida, o IntelBroker usou o Jenkins Script Console para descriptografar o conteúdo do credentials.xml arquivo, obtendo acesso às chaves SSH e tokens de acesso do Github
  4. Saqueando os repositórios: Com as credenciais roubadas, o IntelBroker poderia se autenticar no Github e acessar os repositórios privados da empresa, roubando código-fonte valioso, informações proprietárias e outros dados confidenciais

Análise técnica

Vamos nos aprofundar nos detalhes técnicos de como o IntelBroker explorou o LFI e extraiu as credenciais do Github:

1. Lendo arquivos confidenciais:

O IntelBroker potencialmente usou a ferramenta Jenkins CLI junto com a vulnerabilidade LFI para ler o conteúdo de arquivos confidenciais. Por exemplo, para ler o /etc/senha arquivo:

java -jar jenkins-cli.jar -s http://target-jenkins-server:8080/ -auth @password .txt versão@/etc/passwd

Captura de tela mostrando o conteúdo de “/etc/passwd” e “/etc/hosts”

Ao manipular o símbolo @, eles poderiam induzir o servidor a interpretar o caminho posterior como um arquivo a ser incluído.

Nota: Os scripts POC para o CVE-2024-23897 também estão disponíveis em github.

A IntelBroker potencialmente abandonou o credentials.xml usando o POC abaixo ou um script do github para obter as credenciais criptografadas armazenadas. Caminho do sistema para o arquivo que está sendo /var/jenkins_home/credentials.xml

Captura de tela mostrando credentials.xml

2. Analisando credentials.xml Arquivo:

O Jenkins armazena todas as credenciais globais em formato criptografado neste arquivo. O hash armazenado pode ser descriptografado usando Hudson.util.secret.decrypt ().

Captura de tela mostrando ID exclusivo e chaves criptografadas armazenadas em credenciais, pasta xml

3. Credenciais de descriptografia:

Uma vez que eles tiveram acesso ao credentials.xml arquivo, os agentes de ameaças usam o Jenkins Script Console e o seguinte comando para descriptografar as credenciais criptografadas:

println (Hudson.util.secret.fromString (“{XXX=}”) .getPlainText ())

Substituindo {XXX=} com a string criptografada do credentials.xml o arquivo permitiu que eles recuperassem as credenciais do Github em texto simples.

Captura de tela mostrando a chave privada SSH descriptografada

4. Comprometendo os repositórios do Github:

Com as chaves SSH e os tokens de acesso roubados, os agentes de ameaças poderiam:

Clonar repositórios privados:

Usando o comando git clone com a chave SSH roubada adicionada ao agente SSH ou incorporando diretamente o token de acesso na URL:

clone do git [email protected]:target-username/private-repo.git

Nota:

  • Com a chave privada SSH, o agente da ameaça pode clonar os repositórios conhecidos por ele e não listá-los.
  • Com o token Github Access, o Threat Actor pode clonar e listar os repositórios.

Acesse repositórios por meio da API do Github:

Usando o token de acesso roubado no cabeçalho de autorização, eles poderiam interagir com a API do Github para listar e baixar repositórios:

curl -H “Autorização: token github_access_token” https://api.github.com/user/repos

Lições aprendidas e mitigações

A violação bem-sucedida da IntelBroker serve como um lembrete gritante da importância da conscientização sobre segurança cibernética e das medidas proativas de segurança. Aqui estão algumas das principais conclusões e estratégias de mitigação:

  • Correção oportuna: Mantenha seu servidor Jenkins atualizado com os patches de segurança mais recentes para mitigar vulnerabilidades conhecidas.
  • Autenticação forte: Aplique senhas fortes e implemente a autenticação multifator (MFA) para todas as contas de usuário, especialmente aquelas com privilégios administrativos.
  • Princípio do menor privilégio: Conceda aos usuários somente as permissões necessárias para realizar suas tarefas. Evite usar contas compartilhadas.
  • Auditorias regulares de segurança: Realize auditorias regulares de segurança e testes de penetração para identificar e resolver vulnerabilidades de forma proativa.
  • Inteligência de ameaças: Utilize a inteligência de ameaças para entender os motivos, alvos e comportamentos de ataque de um agente de ameaças.
  • Shadow IT: Monitore e gerencie o uso de hardware ou software relacionados à TI por departamentos ou indivíduos sem o conhecimento do grupo de TI ou de segurança da organização.

Ao compreender as complexidades do CVE-2024-23897 e implementar práticas de segurança robustas, as organizações podem se proteger melhor contra esses ataques sofisticados.

CloudSEK TRIAD
CloudSEK Threat Research and Information Analytics Division
Nenhum item encontrado.

Blogs relacionados