Os processos de integração contínua (CI) e entrega contínua (CD) são a base da organização de software moderna, entregando o código da estação de trabalho de um engenheiro para a produção. Apesar de possibilitarem a automação e monitoramento contínuo das tarefas e atividades recorrentes, o CI e o CD também ampliam a superfície de ataque em termos de segurança cibernética.
Em um estudo da Snyk, 59% das empresas afirmaram que não monitoram automaticamente as dependências de código, deixando-as vulneráveis a ataques baseados em bibliotecas ou pacotes maliciosos, desatualizados ou com vulnerabilidades conhecidas, frequentemente introduzidos durante o processo de CI.
Ao longo deste artigo você descobrirá os principais riscos de segurança que surgem no ambiente CI/CD e claro, aprender estratégias de mitigação e boas práticas no DevSecOps.
Continue lendo e confira.
O que é Integração Contínua (CI)?
A Integração Contínua (CI) é uma prática de desenvolvimento que incentiva os desenvolvedores a integrar código em um repositório compartilhado várias vezes ao dia. A integração contínua é a fase de compilação ou integração do processo de lançamento de software. Cada integração é verificada automaticamente por um pipeline que executa testes e valida o código.
Principais características:
- Automação da construção e dos testes.
- Feedback rápido para os desenvolvedores em caso de falhas.
- Menos conflitos de código ao integrar mudanças frequentemente.
O que é Entrega Contínua (CD)?
Já a Entrega Contínua (CD) é a prática de garantir que o código em desenvolvimento esteja sempre em um estado “pronto para produção”, ou seja, a qualquer momento ele pode ser implementado em produção com segurança. A finalidade do CD é estabelecer um processo otimizado de ponta a ponta, aprimorando os ciclos de desenvolvimento.
Principais características:
- Automação de todo o ciclo de entrega até a produção.
- Pipeline de entrega que inclui testes automáticos, verificação de qualidade, empacotamento, e deploy.
- Facilita a liberação rápida de novas funcionalidades e correções.
Os principais riscos de segurança de CI/CD
Apesar dos benefícios na adoção de CI/CD como a agilidade e a precisão no fluxo de trabalho de desenvolvimento de software, ameaças e vulnerabilidades também surgiram, sendo essencial que desenvolvedores e engenheiros conheçam quais são esses riscos e a razão por trás deles. Confira algumas das principais vulnerabilidades, segundo a OWASP:
CICD-SEC-1: Mecanismos de controle de fluxo insuficientes
Os mecanismos de controle de fluxo do CI/CD são projetados para velocidade. Quando esses mecanismos são insuficientes, um invasor consegue obter permissões para um sistema dentro do processo CI/CD (SCM, CI, repositório Artifact etc.) enviando o código malicioso ou artefatos de forma única para o pipeline, devido à falta de mecanismos que impõnham aprovação ou revisão adicional.
CICD-SEC-2: Gestão inadequada de identidade e acesso
Os riscos inadequados de identidade e gerenciamento de acesso são reais e derivam das dificuldades em gerenciar o excesso de identidades espalhadas pelos diferentes sistemas no ecossistema de engenharia, desde o controle de origem até a implantação. A existência de identidades mal gerenciadas – tanto contas humanas quanto programáticas – aumenta o potencial e a extensão do dano de seu comprometimento.
Além disso, é importante ficarmos atentos a outros pontos da gestão inadequada de identidades, capazes de produzir riscos:
- Identidades excessivamente permissivas
- Identidades obsoletas
- Identidades locais
- Identidades auto-registradas
- Identidades compartilhadas
CICD-SEC-3: Abuso da cadeia de dependência
Um atacante pode abusar de falhas relacionadas à forma de funcionamento das estações de trabalho de engenharia e como os ambientes de compilação buscam dependências de código. Essa exploração define os riscos de abuso de cadeia de dependência.
Neste contexto, podemos destacar dois exemplos de vetores de ataques:
Confusão de dependência: uma técnica de publicação de pacotes maliciosos em repositórios públicos com o mesmo nome que os nomes de pacotes internos, na tentativa de induzir os clientes a baixar o pacote malicioso em vez do pacote correto.
Sequestro de dependência: a tática de obter o controle da conta de um mantenedor de pacotes no repositório público, a fim de carregar uma nova versão maliciosa de um pacote amplamente utilizado, com a intenção de comprometer clientes desavisados que extraem a versão mais recente do pacote.
CICD-SEC-4: Envenenamento de Pipeline Execution (PPE)
Os riscos de Execução de Pipeline Envenenado (PPE) referem-se à capacidade de um invasor com acesso a sistemas de controle de origem – e sem acesso ao ambiente de compilação, de manipular o processo de compilação injetando código/comandos maliciosos na configuração do pipeline de compilação, envenenando essencialmente o pipeline e executando código malicioso como parte do processo de compilação.
Quando um ataque de PPE é executado com sucesso, o invasor passar a ter habilidades e níveis de acesso que o possibilita a:
- Acessar segredos utilizados no pipeline de Integração Contínua (IC), como variáveis de ambiente ou credenciais armazenadas, comprometendo informações sensíveis e potencialmente impactando a segurança do ambiente.
- Obter os ativos externos aos quais o nó de trabalho tem permissões, como arquivos armazenados no sistema de arquivos node’ ou credenciais para um ambiente de nuvem acessível por meio do host subjacente.
CICD-SEC-5: PBAC insuficiente (Controles de Acesso Baseados em Pipeline)
Os nós de execução de pipeline têm acesso a vários recursos e sistemas dentro e fora do ambiente de execução. Ao executar código malicioso em um pipeline, os adversários aproveitam os riscos insuficientes do PBAC (Controles de Acesso Baseados em Pipeline) para abusar da permissão concedida ao pipeline para se mover lateralmente dentro ou fora do sistema CI/CD.
O PBAC inclui controles relacionados a vários elementos ligados ao ambiente de execução do pipeline:
- Acesso dentro do ambiente de execução do pipeline: para código, segredos, variáveis de ambiente e outros pipelines.
- Permissões para o host subjacente e outros nós de pipeline.
- Filtros de entrada e saída para a internet.
Você pode conferir mais riscos e entender a exploração detalhada dessas e outras vulnerabilidades no site da OWASP.
Melhores práticas de Segurança em CI/CD
Diante de tantos riscos e vulnerabilidades, é fundamental adotar medidas de segurança robustas para proteger pipelines de CI/CD, como por exemplo:
Reforço da segurança nas ferramentas de CI/CD
Garanta que as ferramentas e serviços que você utiliza estejam sempre atualizadas e corrigidas. Implemente também a autenticação multifator (MFA) e controle de acesso rígido.
Segurança em containers e ambientes de execução
É fundamental garantir a segurança nos containers e ambientes de execução. Por isso, utilize imagens de container verificadas e auditadas, além de limitar os privilégios dos pipelines.
Escaneamento de dependências
Integre verificações automáticas de segurança para bibliotecas de terceiros e monitore vulnerabilidades conhecidas, executando a correção prontamente.
Controle rigoroso de acesso
Minimizar permissões para os componentes do pipeline também é muito importante. Faça isso aplicando o princípio do menor privilégio. Também garanta um armazenamento seguro para as credenciais, usando cofres de senhas.
Execução de auditoria e monitoramento contínuos
Por fim, como toda medida de segurança, é necessário garantir que o acompanhamento seja atualizado regulamente, o que pode ser feito com a implementação de logs detalhados e monitoramento contínuo para detectar atividades suspeitas. E, claro, realizando auditorias de segurança regularmente, garantindo que o pipeline CI/CD siga as melhores práticas.
Da mesma forma que o CI/CD revolucionou a maneira como software é desenvolvido e entregue, acelerando o tempo de resposta e aumentando a eficiência, ele também trouxe desafios de segurança significativos. Neste artigo, apresentamos alguns dos riscos e impactos, além de algumas dicas de DevSecOps, que podem ajudar na segurança do desenvolvimento e entrega dos softwares.
A CECyber conta com cursos de DevSecOps e Segurança de Aplicações para empresas. Entre em contato para especializar a sua equipe.
