Detecção de segredos: um classificador pequeno pode valer mais que um LLM generalista
O GitHub combina regex e ModernBERT para reduzir ruído e custo. A lição é medir uma decisão específica sem esconder falsos negativos.
O GitHub detalhou um detector de segredos que combina regex de alta cobertura com um ModernBERT ajustado para classificar contexto.[13] O modelo recebe o candidato, o tipo de segredo, o arquivo e uma janela limitada de texto para estimar a probabilidade de uma credencial real.[13] A mudança interessa porque troca uma tarefa aberta de linguagem por uma decisão específica, com métricas próprias.
O que muda para quem desenvolve
A dificuldade descrita é distinguir credenciais genéricas de exemplos, hashes, identificadores de build, fixtures e placeholders.[13] Caminho do arquivo, variável e texto ao redor ajudam a interpretar o candidato.[13] A regex continua encontrando possíveis segredos; o classificador não substitui essa etapa.[13]
Na avaliação offline do GitHub, a nova etapa teve 13% mais precisão e 19% mais recall que a anterior baseada em LLM no mesmo tráfego público.[13] A empresa também relata redução de 86% no tempo mediano de varredura posterior ao push e superior a 98% no custo de servir o classificador.[13] São resultados do sistema e da avaliação do fornecedor.
Minha leitura é que a arquitetura tem um limite bem definido: encontrar candidatos rapidamente e gastar interpretação onde ela muda a decisão. Para um produto de auditoria, isso sugere testar uma especialização antes de enviar todo o material a um modelo generalista. O desenho deve preservar visibilidade dos candidatos rejeitados, especialmente na fase de avaliação.
O treinamento agrupa exemplos com mesmo repositório, valor ou origem antes da divisão dos dados, e o modelo é exportado para ONNX com quantização de oito bits.[13] O agrupamento merece atenção porque uma avaliação com exemplos quase repetidos pode parecer melhor que o uso real.
Como aplicar
Monte um conjunto de avaliação sem credenciais reais: formatos fictícios plausíveis, placeholders e trechos de configuração de teste. Separe os grupos por origem antes de formar as partições. Reserve casos difíceis que não tenham variantes no treinamento.
Compare regras isoladas com regras seguidas de classificação. Registre precisão, recall, latência e custo por decisão. Analise separadamente o que cada etapa perdeu. Um candidato que a primeira etapa não encontra jamais chegará ao classificador.
Antes de automatizar supressões, rode o classificador em modo de observação. Mostre as decisões ao responsável e mantenha os alertas originais disponíveis. Defina um processo de revisão para candidatos próximos do limite escolhido.
Um experimento verificável é alterar apenas o contexto de um mesmo valor fictício: exemplo documentado, fixture e configuração de execução. Observe se o sistema distingue as situações sem depender de palavras mágicas usadas durante o treinamento.
Cuidados e limites
No A/B com clientes, a aceitação ponderada por proprietário aumentou 11,5%.[13] Aceitação de alerta é uma métrica de produto, não prova universal de ausência de falsos positivos ou negativos.
O anúncio não promete disponibilizar o modelo completo nem garante os mesmos resultados para scanners particulares.[13] Proponha medir o custo de perder um segredo antes de otimizar o volume de alertas. Menos ruído só é uma melhoria se a fronteira de detecção continuar adequada.
Fonte
[13] Fonte: GitHub Blog