Um encontro secreto na cadeia de fornecimento de software

Todas as mensagens

Um dos riscos da cadeia de fornecimento de software é o vazamento de segredos. Os segredos estão por toda a cadeia de fornecimento de software; os desenvolvedores e os pipelines de CI\CD precisam usar segredos para acessar o SCM, o pipeline, os registros de artefatos, os ambientes de nuvem e os serviços externos. E quando os segredos estão por toda parte, é uma questão de tempo até que vazem. 

Esse risco é bem identificado e muitas estruturas da cadeia de fornecimento de software abordam-no exigindo verificação de segredos e autoexpiração de segredos.

Então, o que poderia dar errado se você, como profissional de segurança, colocasse essas proteções no lugar? 

Esta semana, enquanto pesquisava ferramentas secretas de digitalização, encontrei uma resposta. Esta resposta é simples: como os scanners secretos procuram padrões de segredos, quando o formato do segredo muda, a detecção pode falhar. E foi exatamente isso que aconteceu quando o GitHub introduziu um novo recurso de segurança – o tokens refinados. Este recurso beta é uma das maneiras do GitHub de reduzir os riscos de vazamento de segredos; limitar as permissões dos tokens de acesso pessoal também limita os riscos caso esses segredos tenham sido comprometidos.

Captura de tela do GitHub

Acontece que o formato dos novos tokens é um pouco diferente, enquanto o formato dos tokens antigos era algo como:

ghp_123456789012345678901234567890123456

O novo formato do token é semelhante a:

github_pat_123456789012345678901234567890123456789012345678901234567890…

Tanto o prefixo quanto o comprimento do segredo são diferentes. 

E, de fato, alguns scanners secretos não conseguem detectar o novo formato;

Para experimentar, criei um repositório com um Dockerfile com segredo e um fluxo de trabalho que executa a ação Trivy. Esta é a aparência do Dockerfile no início do experimento:

Captura de tela do GitHub

A seguir está um instantâneo do GitHub Secret Scanner, que detecta o segredo recém-formatado:

Captura de tela do GitHiub

Como podemos ver, o scanner secreto do GitHub detecta o segredo, mas nenhum alerta aparece na seção Verificação de código.

Para verificar se as ferramentas estão configuradas corretamente, adicionarei agora um segredo clássico ao Dockerfile (veja abaixo) e executarei a verificação novamente. Agora recebemos um alerta de verificação de código (apenas no segredo clássico!)

Captura de tela do GitHub

O scanner do Github, por outro lado, agora detecta dois segredos:

Captura de tela do GitHub

Abri um problema de segurança para Trivy; A equipe de Trivy respondeu que esta não é uma vulnerabilidade nem um problema de segurança. O que faltou fazer foi abrir um fascículo. 

Esta experiência levanta muitas preocupações;

  • Por que um usuário do GitHub deveria suspeitar que o formato do token seria modificado devido a um novo recurso? 
  • Dado que os segredos devem parecer strings aleatórias, por que um usuário do GitHub deveria se preocupar com o formato dos segredos?
  • O GitHub deveria ser responsável por atualizar seus clientes sobre tal mudança? 
  • Essa falha na detecção de segredos é uma vulnerabilidade dos segredos refinados do GitHub, uma vulnerabilidade do Trivy ou, na opinião da Aqua Security, não é uma vulnerabilidade? 
  • A Aqua Security, empresa por trás do Trivy, deveria ser responsável por atualizá-lo? 
  • Como o Trivy é um projeto de código aberto, fornecido como está, alguém seria responsável se os segredos vazassem de um pipeline protegido pelo Trivy? Quem seria? GitHub? Segurança Aqua? O usuário Trivy? 
  • O que esta experiência nos ensina sobre a confiança nas ferramentas de segurança instaladas para proteger as cadeias de fornecimento de software? 

Deixarei essas questões em aberto.

Porém, uma coisa é clara; proteger a cadeia de fornecimento de software é complicado e precisamos de uma comunidade altamente profissional para ter sucesso duradouro nesta tarefa.

Esta postagem foi escrita em coautoria por Avi Waxman, estagiário da Scribe Security

Este conteúdo é oferecido a você pela Scribe Security, um fornecedor líder de soluções de segurança de cadeia de suprimentos de software ponta a ponta – fornecendo segurança de última geração para artefatos de código e processos de desenvolvimento e entrega de código em todas as cadeias de suprimentos de software. Saiba mais.