Metodologia do benchmark

O que medimos, o que não medimos e porquê

O benchmark existe para ser verificado, não admirado. Esta página enuncia o seu perímetro exato: o que os números publicados cobrem, o que deixam deliberadamente de fora e quais das nossas capacidades não podem honestamente ser reduzidas a uma percentagem.

O que o benchmark mede

Uma pergunta, feita sobre um corpus versionado de projetos julgados à mão: dado um ficheiro sobre o qual já decidimos, o motor reporta a vulnerabilidade que ali está, na linha certa, sem reportar coisas que não existem?

Um corpus versionado
Cada caso é um pequeno projeto com o mínimo de código que apresenta, ou evita com segurança, uma vulnerabilidade. Cada um traz um comentário a dizer o que está errado, o que é esperado e porquê. O corpus é versionado: alterá-lo é alterar os números publicados.
Verdade de referência escrita sobre o código
O resultado esperado é um juízo sobre o código, decidido antes de o motor correr, nunca uma descrição do que o motor produziu. Quando ambos divergem, investigamos primeiro o motor. Uma etiqueta escrita para coincidir com a saída do motor não mede nada, e já tivemos de corrigir etiquetas que tinham derivado nesse sentido.
A cadeia que é entregue
Cada caso é analisado tal como uma análise de cliente corre: o orquestrador completo na profundidade máxima, sem scanners externos, sem modelo no ciclo. Os números descrevem o motor entregue de forma idêntica em todo o lado, não uma configuração de laboratório montada para a ocasião.
Código correto, deliberadamente
Um terço do corpus é código não vulnerável, na sua maioria a forma corrigida de um caso que o é. Um corpus feito só de vulnerabilidades não consegue detetar um falso positivo, e os falsos positivos são o que faz uma ferramenta de segurança deixar de ser lida.

O que o benchmark não mede

A Cybseco entrega-as. Nenhum número da página do benchmark as descreve, e cada uma traz a sua razão. Uma capacidade omitida em silêncio é uma capacidade que o leitor assume coberta pelos números.

  • Dependency vulnerabilities (SCA) — Produced by external scanners that read a live vulnerability database. Their output changes when the database changes, with no change to Cybseco, so a precision figure measured today would describe the database rather than the engine and would not reproduce tomorrow.
  • Standalone secret scanning — Gitleaks is an external binary and is not installed for this benchmark. Hardcoded credentials found by Cybseco's own analyzers are measured, inside the code and CI/CD layers, under CWE-798 and CWE-532.
  • Third-party SAST (Semgrep, Bandit) — An external ruleset Cybseco orchestrates but does not author. Measuring it would report Semgrep's accuracy, not Cybseco's.
  • Licence compliance policy — A policy decision about a project's licences, not a judgement about its code. The corpus labels vulnerabilities, so a licence finding has nothing to be right or wrong against here.
  • LLM-assisted analysis — Its output depends on a model and a prompt rather than on the engine, and it is not part of the deterministic result this benchmark measures.
  • Graph, attack paths, decision engine — A different kind of claim: these produce paths and plans, not findings, so precision and recall over labelled lines cannot express them. The methodology page explains what could be measured, and which of these cannot honestly be reduced to a percentage at all. Publishing a number before the method is settled is how a benchmark stops being evidence.

Porque algumas capacidades não são uma percentagem

A deteção tem uma resposta certa: a vulnerabilidade está naquela linha ou não está. Parte do que a Cybseco faz formula uma afirmação de outra natureza, e a precisão e a revocação não conseguem exprimi-la. Publicar mesmo assim um número seria a coisa mais fácil desta página e a forma mais rápida de perder a discussão com quem lê com atenção.

O grafo de arquitetura
Uma afirmação factual: estes ativos existem e estas relações verificam-se entre eles. Mensurável, e a primeira coisa que tencionamos medir. Exige um corpus de repositórios completos anotados à mão, dois revisores independentes e a concordância entre eles publicada ao lado da pontuação. Qualquer coisa menos mede o processo de anotação em vez do extrator.
Caminhos de ataque
Factuais, mas apenas quando alguém declara com o que o atacante começa. «Um atacante consegue chegar à base de dados» não é verdadeiro nem falso enquanto não se disser se começa como visitante anónimo, como utilizador autenticado ou como executor de build comprometido. O mesmo motor está certo sob um pressuposto e errado sob outro, portanto um número sem esse pressuposto impresso ao lado não é reproduzível.
Priorização contextual
Uma afirmação sobre o que importa mais, e não há facto algum independente de um objetivo. Uma startup sem receitas e um banco regulado leem o mesmo repositório e ambos têm razão em ordená-lo de forma diferente. Qualquer ordem «correta» que publicássemos seria a nossa própria opinião de produto, validada contra uma verdade de referência também escrita por nós.
O motor de decisão
Agir já, planear, verificar: uma recomendação face a uma política, e a política é uma decisão de produto. Podemos testar que segue a sua própria política, que nenhum resultado é descartado em silêncio e que cada recomendação cita evidência existente. Isso é um teste de conformidade. Chamar-lhe exatidão convidaria exatamente à leitura errada que esta página existe para evitar.

Como ler os números

Quatro coisas a saber antes de tirar uma conclusão de qualquer número isolado da página do benchmark.

Dimensão da amostra antes da percentagem
Cada camada mostra a partir de quantos resultados a sua precisão foi calculada. As camadas com amostras pequenas são as adicionadas recentemente, e os seus números vão mover-se à medida que o corpus cresce. Isto vale contra as linhas lisonjeiras tanto como contra a incómoda: uma pontuação perfeita sobre nove resultados é uma afirmação fraca, não forte.
Todos os falsos positivos são publicados
Os resultados que o motor produz sobre código não vulnerável são listados com o analisador responsável e a razão pela qual o resultado está errado. São contados contra a precisão, nunca excluídos dela. Três deles disparam sobre a mitigação que a própria regra recomenda, que é precisamente o tipo de defeito que um benchmark existe para trazer à superfície em vez de absorver.
A camada LLM analisa o seu código
Lê o próprio código de integração de uma aplicação à procura de erros de LLM e de agentes: saída do modelo que chega a uma shell, uma credencial colocada num prompt, uma ferramenta de agente capaz de executar qualquer coisa. Não é uma medida de uma IA dentro da Cybseco. Este benchmark executa o motor determinístico sem qualquer modelo no ciclo.
As lacunas conhecidas são nomeadas
Uma vulnerabilidade real e fora do alcance atual do motor é registada como lacuna aceite, excluída da revocação e listada. Registar um limite é a forma de uma melhoria futura aparecer como ganho medido em vez de ser proclamada hoje.

As regras a que nos sujeitamos

São restrições sobre nós, não afirmações sobre o produto. São elas que tornam os números dignos de leitura.

  • Tudo o que a Cybseco anuncia está medido ou nomeado nesta página como fora de âmbito. Não existe um terceiro estado, e uma verificação automática faz falhar a build quando um analisador é entregue sem uma coisa ou outra.
  • A verdade de referência descreve o código e é decidida antes de o motor correr. Uma etiqueta escrita para coincidir com a saída do motor não é evidência.
  • Um número é publicado com a amostra a partir da qual foi calculado.
  • Um defeito que conhecemos é publicado, não excluído da métrica. Uma verificação também falha quando um defeito publicado deixa de se reproduzir em silêncio, para que a lista só possa encolher honestamente.
  • Nenhuma comparação com outro produto em capacidades onde seríamos nós a escolher a configuração dele, o corpus dele e o cenário. Ninguém deveria acreditar numa comparação dessas, nós incluídos.
  • Nenhum número antes de a sua metodologia ser pública e a sua verdade de referência inspecionável.

Veja o Cybseco a raciocinar sobre um sistema real

Veja a demo interativa e depois solicite uma avaliação guiada para a sua equipa.