A detecção de segredos é o processo de encontrar e sinalizar dados confidenciais conhecidos como "segredos" em bases de código ou outros locais dentro de ambientes de desenvolvimento de software. Essa camada automatizada de defesa ajuda a garantir que nenhuma informação confidencial seja codificada ou introduzida no código-fonte de uma forma facilmente legível ou não criptografada.
A detecção de segredos faz parte de uma abordagem "shift left" que antecipa a segurança no processo de desenvolvimento. Os segredos podem se estender para além do código, aumentando o risco de exposição a incidentes de segurança. A proteção automatizada por meio da detecção de segredos pode ajudar a proteger o fluxo de trabalho em escala do desenvolvedor.
Na segurança de aplicações (AppSec), segredos são informações digitais que concedem acesso a usuários humanos ou identidades não humanas, como aplicativos, dispositivos ou cargas de trabalho, permitindo que eles se comuniquem ou executem ações. Devido à sua natureza sigilosa, os segredos devem ser mantidos confidenciais.
Aqui estão alguns tipos comuns de segredos:
As chaves de API são identificadores únicos para autenticar a comunicação entre serviços, softwares ou sistemas por meio de uma interface de programação de aplicativos (API).
Os tokens de autenticação e autorização verificam a identidade e autorizam o acesso aos recursos.
Os dados biométricos incluem características físicas e comportamentais inerentes a uma pessoa, como seus traços faciais, impressões digitais, voz ou até mesmo sua maneira de andar, que podem ser usadas para verificar sua identidade.
Os certificados digitais e suas chaves privadas associadas são empregados para autenticar endpoints e estabelecer canais de comunicação seguros.
As credenciais de provedor de nuvem podem ser usadas para acessar plataformas de computação em nuvem como AWS, Azure, Google Cloud e IBM Cloud.
As cadeias de conexão são sequências de texto contendo instruções para se conectar a uma fonte de dados.
As credenciais de banco de dados são combinações de nome de usuário e senha para obter acesso aos bancos de dados.
As chaves de criptografia e outras chaves criptográficas são usadas para assinar e criptografar ou descriptografar dados.
As credenciais de contas de serviço permitem que aplicativos e fluxos de trabalho automatizados acessem e interajam com os sistemas operacionais.
As chaves SSH (Secure Shell) são usadas para autenticar entidades que acessam servidores e outras infraestruturas.
As combinações de nome de usuário e senha consistem em cadeias de caracteres que autenticam o acesso de um usuário a um sistema.
Os segredos são os principais alvos dos agentes de ameaças. Eles podem empregar bots para coletar um token exposto, uma credencial vazada ou uma configuração incorreta em um ambiente nativo da nuvem. Os invasores exploram esses segredos para obter acesso não autorizado a aplicações e sistemas. Como o acesso é obtido por meio de credenciais legítimas, pode ser mais difícil detectá-lo, podendo passar despercebido por longos períodos.
Isso torna a detecção de segredos um componente crucial da estratégia de cibersegurança de uma empresa. A detecção de segredos ajuda as organizações a:
Evitar o sequestro de contas e o aumento de privilégios: os hackers podem usar credenciais vazadas para aumentar seus privilégios. Munidos de privilégios mais elevados, eles podem alterar configurações do sistema, interromper servidores e infraestrutura, executar comandos, instalar malware ou assumir o controle de ativos.
Prevenir violações de dados: agentes maliciosos podem realizar exploração de segredos expostos para roubar informações pessoais sensíveis ou dados corporativos confidenciais. Essas violações de dados podem ser caras e levar a perdas financeiras, diminuição da confiança dos clientes e danos à reputação.
Reduzir as vulnerabilidades: segredos expostos são portas abertas. Localizá-los permite que as empresas removam proativamente essas vulnerabilidades, fechando a porta para ataques cibernéticos bem-sucedidos.
Junte-se aos líderes de segurança que confiam no boletim informativo Think para receber notícias selecionadas sobre IA, cibersegurança, dados e automação. Aprenda rápido com tutoriais e explicações de especialistas, entregues diretamente em sua caixa de entrada. Consulte a Declaração de privacidade da IBM.
O processo começa com a varredura de segredos, em que as ferramentas de detecção vasculham repositórios de código (também chamados de repos) e recursos relacionados em busca de segredos expostos. Essas ferramentas então geram alertas ou relatórios para quaisquer segredos identificados, incluindo seu tipo e onde está localizado. As equipes de desenvolvimento e de segurança podem usar esses alertas ou relatórios para orientar as medidas de remediação, como a migração de informações confidenciais para uma solução de gerenciamento de segredos. Essas soluções ajudam a automatizar, centralizar e agilizar a criação, o uso, a rotação e a proteção de segredos.
A detecção de segredos envolve uma combinação de métodos para identificar com precisão os segredos em todos os repositórios:
Correspondência de padrões
Varredura por dicionário
Análise de entropia
Os algoritmos de correspondência de padrões buscam strings que correspondam aos formatos padrão de segredos. Eles também empregam expressões regulares, que são padrões de pesquisa compostos por sequências de caracteres.
Esse método geralmente é eficaz para segredos que seguem um formato predefinido, como tokens de acesso para serviços de nuvem ou chaves de API. No entanto, a varredura de segredos usando expressões regulares (também conhecidas como regex) pode ser lenta, e segredos com uma composição aleatória podem passar despercebidos.
Na detecção de segredos, dicionários são fontes de dados que contêm segredos conhecidos. Esses dicionários podem ser usados como referência ao pesquisar segredos.
A verificação por dicionário ajuda a determinar se um segredo está em uso ou não. Mas pode ser que não consiga detectar segredos que não estejam no dicionário.
A entropia mede a aleatoriedade ou imprevisibilidade dos dados. Quanto maior a entropia, mais aleatórios são os dados e mais difícil é a previsão. Dessa forma, a análise de entropia avalia as sequências de caracteres em busca de atributos de aleatoriedade.
Esse método ajuda a descobrir possíveis segredos que não seguem padrões conhecidos, como chaves de criptografia. Também pode revelar novos segredos ou segredos de alta entropia.
Há muitas opções de sistemas de detecção de segredos. Ao escolher a solução ideal, as empresas devem considerar a precisão de uma solução, a profundidade e a amplitude de seus recursos de detecção, sua escalabilidade em grandes bases de código e ao longo do ciclo de vida de desenvolvimento de software (SDLC), além de verificar se ela é compatível e se integra sem dificuldades ao seu stack e fluxos de trabalho de desenvolvimento de software.
Aqui estão algumas ferramentas populares para detectar segredos:
O GitLab utiliza um analisador para detecção de segredos específico para ambientes GitLab. Ele oferece estas funcionalidades:
A proteção de push de segredos analisa as alterações antes de serem enviadas ao GitLab e bloqueia o envio caso sejam detectados segredos.
A detecção de segredos em pipelines funciona como um componente dos pipelines de CI/CD, inspecionando solicitações de merge e commits na branch padrão de um repositório.
A detecção de senhas do lado do cliente examina comentários e descrições em problemas e solicitações de merge.
O GitLab pode responder automaticamente a tipos específicos de segredos vazados, revogando-os. Para determinados níveis de contas, a funcionalidade de detecção de falsos positivos do GitLab Duo avalia os segredos identificados para determinar possíveis falsos positivos.
O Gitleaks é uma ferramenta de código aberto para detectar segredos em repositórios Git, diretórios, arquivos e outras entradas padrão. Seu mecanismo de detecção é baseado em uma combinação de correspondência de padrões por meio de análises de regex e entropia.
As organizações podem criar conjuntos de regras personalizados para seus próprios segredos. Eles também podem executar o Gitleaks como um pre-commit hook para detectar segredos no código-fonte antes que sejam enviados ao repositório.
O Vault Radar é o produto de detecção de segredos da HashiCorp. Ele realiza varreduras contínuas e em tempo real em busca de segredos e até mesmo informações de identificação pessoal (PII), categorizando-as e classificando-as em um dashboard para auxiliar nos esforços de remediação.
As verificações também são realizadas em commits de código, pull requests e ao adicionar fontes de dados. As fontes de dados compatíveis incluem repositórios e plataformas como Azure DevOps, Bitbucket, GitHub e GitLab, além de plataformas de colaboração como Confluence, Jira e Slack.
O Vault Radar fornece orientação de remediação integrada para determinadas contas empresariais. Os segredos expostos também podem ser copiados para a Vault, a plataforma de gerenciamento de segredos da HashiCorp, como parte do processo de remediação.
A inteligência artificial pode melhorar a precisão e a eficiência das ferramentas de detecção de segredos, a maioria delas produz altas taxas de falsos positivos. Os modelos de IA podem ser treinados para reconhecer características que correspondem a uma gama mais ampla de tipos de segredos, tornando-os mais dinâmicos do que as soluções baseadas em regras.
As equipes de desenvolvimento que implementam a IA para detecção de segredos podem obter os seguintes benefícios:
Consciência de contexto: os modelos de IA podem aprender o contexto que envolve os segredos, incluindo comentários no código, estrutura do código-fonte e nomes de variáveis. Essa análise semântica e contextual permite que os modelos distingam melhor entre segredos verdadeiros e dados de amostra ou valores de teste. Dessa forma, a consciência de contexto pode ajudar a aumentar as taxas de verdadeiros positivos e reduzir as taxas de falsos positivos.
Detecção em tempo real: algumas ferramentas de detecção de segredos impulsionadas por IA se integram perfeitamente aos IDEs, sinalizando segredos codificados de forma fixa enquanto os desenvolvedores escrevem código, além de capturar segredos expostos antes que sejam comprometidos ou enviados para repositórios.
Priorização e remediação automatizadas: a detecção de segredos orientada por IA pode automatizar a priorização dos segredos sinalizados, atribuindo uma pontuação de risco com base em fatores como explorabilidade, impacto, localização e gravidade. Também pode sugerir correções, como substituir segredos expostos por chamadas para uma plataforma de gerenciamento de segredos.
O uso de IA na detecção de segredos envolve diversas técnicas:
Classificação: a classificação permite que os modelos de aprendizado de máquina prevejam se uma informação é um segredo verdadeiro ou falso. Algoritmos típicos de classificação para detectar segredos incluem regressão logística, Naive Bayes e máquinas de vetores de suporte (SVMs).
Aprendizagem em conjunto: o aprendizado em conjunto mescla vários classificadores para aumentar a precisão da previsão.
Deep learning: o deep learning, impulsionado por redes neurais de várias camadas, oferece uma maneira mais poderosa e versátil de detectar segredos. Arquiteturas de deep learning comuns utilizadas incluem redes neurais convolucionais, memória de longo e curto prazo (LSTM) e modelos de transformer.
IA generativa: os grandes modelos de linguagem (LLMs) são outra opção para detecção de segredos. Tanto LLMs pré-treinados quanto pequenos modelos de linguagem (SLMs) ajustados podem ser usados para prever segredos e classificá-los de acordo com diferentes tipos de segredos. A intervenção humana continua sendo fundamental para validar a precisão das previsões e classificações do LLM.
Uma combinação de estratégias convencionais e baseadas em IA pode fortalecer o processo de detecção de segredos. A correspondência de padrões e a análise de entropia podem ser usadas para pesquisar segredos, enquanto as metodologias orientadas por IA validam os segredos descobertos para eliminar falsos positivos.
Aqui estão alguns exemplos de soluções de detecção de segredos que usam IA:
A plataforma de segurança de código GitGuardian escaneia repositórios Git, pipelines de CI/CD, imagens Docker e sistemas de colaboração como Confluence, Jira e Slack. Os desenvolvedores podem configurar pre-commit hooks e integrar a varredura em IDEs ou usar o aplicativo de interface de linha de comando do GitGuardian.
O mecanismo de detecção de segredos do GitGuardian consiste em dois tipos de detectores de correspondência de padrões: detectores específicos dedicados a encontrar tipos particulares de segredos, resultando em alta precisão e cobertura, e detectores genéricos para capturar o que os detectores específicos possam não detectar. Vários modelos de aprendizado de máquina também adicionam funcionalidades valiosas, como filtrar segredos que provavelmente são falsos positivos e avaliar o contexto em torno de um segredo genérico para atribuir a ele uma categoria e um provedor apropriados.
Outras funcionalidades baseadas em aprendizado de máquina incluem o agrupamento de incidentes semelhantes, que reúne segredos que compartilham similaridades contextuais, e a pontuação de risco, que utiliza o XGBoost (eXtreme Gradient Boosting), um conjunto de árvores de decisão que aprendem com os erros umas das outras, para classificar segredos com base em múltiplos sinais de risco.
O GitHub Secret Protection é o sistema de verificação de segredos próprio do GitHub. Ele examina todo o histórico do Git em todos as branches de um repositório, bem como as descrições e comentários em issues e pull requests.
A função de proteção contra push do sistema analisa cada push em tempo real, bloqueando commits que contenham segredos. Ele pode realizar verificações automáticas de validade para verificar se um segredo descoberto está ativo e exposto publicamente.
O GitHub Secret Protection também usa o GitHub Copilot para detectar segredos não estruturados comprometidos em repositórios.
O Bob é o assistente de programação de IA da IBM, projetado para ajudar na elaboração de código-fonte, depuração, refatoração, revisões de código e documentação. Ele pode identificar vulnerabilidades de segurança no código e, juntamente com seu recurso de detecção de segredos integrado, o Bob facilita e promove a programação segura.
O Bob pode ser programado para assumir um modo de agente personalizado que procura segredos predefinidos, explica os riscos de segurança e recomenda ações para protegê-los. Ele pode substituir segredos por referências a uma plataforma de gerenciamento como a Vault da HashiCorp e enviar segredos codificados para a Vault usando o Model Context Protocol (MCP).
A detecção de segredos pode aprimorar a postura de segurança de uma empresa. Pode ser mais eficaz quando incorporada às fases de desenvolvimento, implementação e manutenção do SDLC.
Aqui estão algumas melhores práticas que as equipes de desenvolvimento podem ter em mente ao implementar a detecção de segredos:
Defina os segredos mais importantes
Vá além das fontes relacionadas ao código
Incorpore a detecção de segredos nos pipelines de CI/CD
Triagem e retificação
Instrua as equipes de desenvolvimento e DevOps
As empresas podem começar definindo o que constitui um segredo para elas e classificando esses segredos por importância para orientar o processo de remediação. Também devem auditar toda a cadeia de suprimentos de software para mapear a extensão da exposição de segredos.
Os segredos podem se espalhar para além de fontes relacionadas ao código. Isso significa que a detecção também deve considerar outras possíveis fontes de exposição, como:
Ferramentas de comunicação, colaboração e produtividade para desenvolvedores
Arquivos de configuração
Contêineres e plataformas de orquestração de contêineres, como o Kubernetes
Bancos de dados
Documentação
Arquivos de Infraestrutura como Código (IaC)
Logs
As equipes de DevOps podem implementar hooks de pré-commit que tornam a verificação de segredos uma etapa obrigatória antes que os desenvolvedores confirmem o código ou iniciem pull requests, bloqueando alterações que contenham segredos embutidos no código. Também devem verificar se as ferramentas têm a capacidade de verificar continuamente artefatos, criar logs e variáveis de ambiente em busca de segredos expostos antes de chegarem aos ambientes de tempo de execução e produção.
As empresas devem estabelecer políticas sobre como os segredos expostos são priorizados e corrigidos. As políticas de triagem podem incluir a avaliação dos riscos de segurança representados por diferentes tipos de segredos e quais equipes são responsáveis pela triagem.
As políticas de remediação devem definir claramente as ações a serem tomadas, seja revogar ou rotacionar segredos ou substituí-los por chamadas para uma plataforma de gerenciamento de segredos. Automatizar essas correções pode economizar tempo e resultar em respostas rápidas, mas as correções devem ser testadas para verificar se um segredo não pode mais ser detectado.
As organizações devem incluir a detecção de segredos como parte de um desenvolvimento ou treinamento da equipe de DevOps em programação segura. As equipes devem entender os riscos de segredos codificados diretamente no código ou expostos, o que podem fazer para limitar esses riscos e como utilizar as ferramentas necessárias para a detecção de segredos.