Aikido

Por que você deve detectar potenciais vulnerabilidades de injeção em seu código

Segurança

Introdução

Falhas de injeção estão entre os problemas de segurança de software mais perigosos e antigos. Elas ocorrem quando uma entrada não confiável é passada diretamente para consultas, comandos ou interpretadores de código sem validação ou escape adequados. Isso pode levar a acesso não autorizado, corrupção de dados ou comprometimento completo do sistema.

Enquanto ferramentas SAST tradicionais focam em linguagens comuns como JavaScript, Python ou Java, o motor de qualidade de código impulsionado por IA da Aikido agora detecta vulnerabilidades de injeção em linguagens que as ferramentas SAST geralmente ignoram, como Perl, Haskell, Groovy, Erlang, Zig, Delphi, PowerShell, COBOL, ABAP, Visual Basic, Pascal e ColdFusion.

Esta regra garante que, independentemente da linguagem que sua equipe utilize, a construção insegura de consultas ou comandos seja detectada antes de chegar à produção.

Por que isso importa

Falhas de injeção permanecem um dos Top 10 OWASP riscos de segurança.

Eles são fáceis de introduzir, mas muitas vezes difíceis de detectar por meio de revisão manual, especialmente em linguagens legadas ou menos comuns.

Sem salvaguardas:

  • Invasores podem injetar comandos SQL ou de sistema operacional em strings construídas dinamicamente.
  • Dados sensíveis podem ser exfiltrados ou destruídos.
  • Sistemas inteiros podem ser comprometidos se a execução de código for possível.

Ao aplicar esta regra, cada trecho de código que constrói consultas ou comandos deve usar APIs parametrizadas, bibliotecas seguras, ou funções de escape, reduzindo drasticamente a superfície de ataque.

❌ Exemplo Não Conforme

Abaixo está um exemplo em PowerShell, mas o mesmo problema aparece em muitas linguagens.

# Inseguro: entrada do usuário concatenada diretamente em um comando do sistema
$userInput = Read-Host "Digite o nome de usuário"
Invoke-Expression ("net user " + $userInput)

Por que isso é inseguro: Invoke-Expression executa um comando construído dinamicamente.

Um invasor poderia inserir john && del C:\* /Q e causar comportamento destrutivo.

✅ Exemplo Compatível

# Safe: use parameterized or validated command execution
$userInput = Read-Host "Enter username"

if ($userInput -match '^[a-zA-Z0-9_-]+$') {
    Start-Process "net" -ArgumentList "user", $userInput
} else {
    Write-Host "Invalid input"
}

Por que isso é seguro:

  • Argumentos de comando são passados como uma lista, não como uma string concatenada.
  • A entrada é validada usando uma regex de whitelist.
  • Nenhum dado não confiável jamais atinge o shell sem escape.

Experimente no Aikido Security

Você pode habilitar esta regra diretamente na ferramenta de Qualidade de Código da Aikido.

Uma vez ativa, ela escaneia automaticamente por padrões de injeção em todas as linguagens suportadas, incluindo aquelas sem cobertura SAST nativa.

Cada vez que um desenvolvedor abre um pull request:

  • O sistema revisa códigos novos e alterados.
  • Ele sinaliza qualquer uso de concatenação ou interpolação de strings dentro de chamadas de comando, query ou interpretador.
  • O relatório destaca a linha exata e fornece uma sugestão de correção curta (por exemplo, "Use APIs parametrizadas ou entradas validadas").

Esta regra é executada em cada PR, garantindo proteção consistente mesmo em repositórios com múltiplas linguagens.

Conclusão

A construção dinâmica de strings é um dos erros mais simples que podem levar a violações críticas de segurança.

Ao detectar concatenação insegura e aplicar práticas seguras de construção de consultas, esta regra previne classes inteiras de ataques de injeção antes que cheguem à produção.

Independentemente da linguagem, a análise inteligente da Aikido une proteção estática e assistida por IA para cobrir mais terreno do que as ferramentas tradicionais jamais poderiam.

FAQs

Dúvidas?

Que tipos de injeções esta regra detecta?

Ele detecta padrões de injeção de SQL, comando, LDAP e código, qualquer lugar onde dados controlados pelo usuário são mesclados em strings executáveis.

Funciona apenas para linguagens SAST suportadas?

Não. Esta regra estende a cobertura para linguagens onde o SAST não existe ou carece de profundidade, por exemplo, PowerShell, COBOL ou Haskell.

Quão rigorosa é a detecção?

Ele sinaliza construções de alto risco, como concatenação ou interpolação de strings em chamadas de banco de dados, shell ou interpretador. Falsos positivos são raros porque a regra é sensível à linguagem.

Como o Aikido a remediação?

Quando uma violação é encontrada, a ferramenta sugere alternativas mais seguras, como o uso de prepared statements, APIs parametrizadas ou validação baseada em whitelist.

Por que não confiar apenas na validação de entrada?

A validação por si só não pode garantir a segurança. A parametrização adequada garante que entradas não confiáveis nunca alterem a estrutura de consultas ou comandos.

Fique seguro agora

Proteja seu código, Cloud e runtime em um único sistema centralizado.
Encontre e corrija vulnerabilidades rapidamente de forma automática.

Não é necessário cartão de crédito | Resultados da varredura em 32 segundos.