O Menino Que Gritou Lobo em Cibersegurança
A história do menino que gritou lobo remonta a uma fábula em que um pastor zombava dos outros aldeões, dizendo-lhes que um lobo estava atacando o rebanho. Os aldeões acreditaram nele no início, mas ele estava apenas rindo deles. Quando o pastor repetiu sua piada, os aldeões começaram a ignorá-lo e, em certo momento, um lobo de verdade veio e atacou as ovelhas. O menino ‘gritou lobo’, mas ninguém mais acreditou nele.
Ferramentas de cibersegurança têm agido como pastores: elas tendem a dar muitos falsos alarmes, o que fadiga os desenvolvedores a prestar atenção a eles. Isso faz com que os desenvolvedores percam tempo e percam a confiança nas ferramentas. Para trabalhar de forma eficiente e eficaz em cibersegurança, você precisa de um bom filtro para evitar esses falsos positivos. Isso é exatamente o que o AutoTriage faz para vulnerabilidades SAST.
Exemplo de Verdadeiro Positivo
O seguinte é um exemplo de uma descoberta de SAST. SAST significa Testes de segurança de aplicações estáticas, livremente traduzido como: detectar padrões perigosos no código-fonte, sem executar o código. É um método poderoso para sinalizar muitos tipos diferentes de vulnerabilidades.
Neste exemplo, vemos o AutoTriage marcando uma amostra como ‘prioridade muito alta para correção’. A descoberta de SAST aponta para uma potencial vulnerabilidade NoSQL. O código representa um endpoint de login onde os usuários podem fornecer um nome e uma senha. Há uma chamada ao banco de dados para procurar um registro correspondente para nome e senha.
The problem here is that NoSQL allows you to insert objects like { $ne: undefined }. In that case, the match will be based on anything that is different from undefined. Imagine that an attacker would upload something like this:
{
name: LeoIVX,
password: { $ne: undefined }
}Nesse caso, o atacante conseguiria fazer login como o papa (se o papa tivesse uma conta com esse nome de usuário naquela plataforma de software), já que a senha sempre corresponderia à consulta.

Neste caso, o resultado SAST foi um verdadeiro positivo. O AutoTriage faz mais do que apenas confirmar aqui: ele também aumenta a prioridade, já que esta vulnerabilidade é mais fácil de explorar e tem uma gravidade maior do que o resultado SAST médio.
Quando um problema como este é relatado, você deve corrigi-lo o mais rápido possível. Não há método mais rápido do que usar a ferramenta AutoFix da Aikido. Isso criará um pull request (ou merge request) com um clique. Neste caso, o resultado é:

O AutoFix sempre sugerirá a correção mais simples que resolva adequadamente a vulnerabilidade. Neste caso, fazer o casting tanto do nome quanto da senha é suficiente para proteger o endpoint e alinhar-se com a intenção do desenvolvedor.
Tenha em mente que as senhas nunca devem ser comparadas diretamente e hashes de senha devem ser usados em vez disso - este exemplo foi usado para fins de simplicidade. O LLM usado pelo AutoFix é explicitamente instruído a não corrigir outros problemas além da vulnerabilidade relatada, para que os pull requests sigam a melhor prática de resolver um problema por vez.
Exemplo de Falso Positivo
Como mencionado anteriormente, o verdadeiro problema das ferramentas SAST é o número de falsos alarmes que elas produzem. Um exemplo disso pode ser encontrado abaixo. Há um potencial SQL injection onde um 'productName' é injetado em uma consulta SQL. Além disso, este 'productName' vem do corpo da requisição, sendo, portanto, controlado pelo usuário. Felizmente, existe uma lista de permissões que verifica se o productName é 'iPhone15', 'Galaxy S24', 'MacBook Pro' ou 'ThinkPad X1'. Isso garante que o productName não pode conter um payload de ataque como productName = 'iPhone15'; DROP TABLE products; - - '.

Uma lista de permissões como a apresentada neste exemplo é uma contramedida eficaz contra SQL injection. Mas scanners legados como Semgrep não conseguem avaliar a eficácia de tais listas de permissões.
Large Language Models (LLMs) oferecem uma grande oportunidade aqui: eles podem entender muito mais contexto do código-fonte e filtrar amostras como esta.
A Narrativa 'Segurança Sem Enrolação' da Aikido
Quando empresas de software procuram provedores de AppSec, elas frequentemente comparam diferentes soluções disponíveis no mercado. Uma forma típica de como as empresas menos experientes comparam fornecedores é contando o número de vulnerabilidades encontradas em seu código-fonte. Não será surpresa que elas tendem a acreditar que mais vulnerabilidades equivalem a melhores ferramentas. Às vezes, elas escolhem seu fornecedor com base nesta avaliação deficiente. Consequentemente, algumas empresas de AppSec hesitam em filtrar falsos positivos, já que teriam um desempenho inferior nesta comparação frequentemente observada.
Na Aikido, adotamos uma abordagem diferente. Nossa narrativa 'Sem Enrolação' significa que queremos ajudar os clientes o máximo possível, mesmo que isso signifique alguns negócios perdidos no curto prazo. O AI AutoTriage é um exemplo claro disso, já que esta funcionalidade diferencia a oferta da Aikido das outras no mercado.
Disponibilidade
Ativamos esta funcionalidade para 91 regras SAST em diferentes linguagens, incluindo javascript/typescript, python, java, .NET e php. Mais regras estão sendo adicionadas rapidamente.
Esta funcionalidade está ativada para todos, incluindo contas gratuitas. Dito isso, contas gratuitas podem atingir o número máximo de chamadas LLM com bastante facilidade.
CI Gating
CI gating é o processo onde a Aikido verifica vulnerabilidades em cada pull request. O AI AutoTriage agora também está ativado para esta funcionalidade, o que torna o fluxo de trabalho muito mais conveniente.
Imagine que você introduziu uma vulnerabilidade de path traversal em um pull request e aplicou um AutoFix. Essa correção normalmente usaria uma lista de negação de padrões antes de ler ou escrever o arquivo. Como as listas de negação são difíceis de interpretar com padrões hardcoded, mesmo a versão corrigida ainda seria sinalizada como um problema. Isso agora está resolvido graças à aplicação do nosso AutoTriage diretamente no pipeline de CI.
Conclusão
Lançamos uma funcionalidade poderosa para filtrar resultados SAST falsos positivos e também ajudar na priorização das amostras verdadeiras positivas. Está disponível para todos testarem, mesmo para contas gratuitas. Esta funcionalidade é um grande passo adiante na redução do efeito 'Chamar o Lobo' na cibersegurança, ajudando os desenvolvedores a focar no que realmente importa: resolver vulnerabilidades reais e ter mais tempo para construir funcionalidades para seus clientes.

