Só as falhas que um atacante consegue alcançar.
Cada falha seguida do ponto de entrada até à linha, com a sua correção.
- AltaInjeção SQLusers.controller.ts:10
db.query(`SELECT * FROM users WHERE id=${id}`)db.query("SELECT * FROM users WHERE id = $1", [id])Correção prontaConsulta parametrizada, reescrita na mesma sessão
Falhas alcançáveis, cada uma com a sua correção.
Falhas alcançáveis
- GET /users/:id
- users.controller.ts:10
- db.query()
A tua política
- Equipa de Pagamentos Bloquear na pull request
- Equipa de Growth Só avisar
Fluxos de dados que conhecem o teu framework
- Expressreq.params.id
- Djangorequest.GET["id"]
- Spring@PathVariable id
Uma correção para cada descoberta
Um patch no teu editor, ou uma pull request assinada com um teste de regressão.
Nove em cada dez alertas por padrão são falsos.
das vulnerabilidades assinaladas por scanners baseados em padrões em quase 3000 repositórios open source eram falsos positivos.
Ghost Security, Exorcising the SAST Demons, 2025
Um scanner por padrões
- Alerta: Possível injeção SQLusers.controller.ts:10
- Alerta: Possível injeção SQLPOST /avatar
- Alerta: Possível injeção SQLGET /export
CybeDefend
- Alcançável: Injeção SQLusers.controller.ts:10
- Descartada: Linha assinalada, não chega a nenhum sinkPOST /avatar
- Descartada: Linha assinalada, não chega a nenhum sinkGET /export
Corrigido pelo teu agente, antes do commit.
O teu agente lê estas falhas enquanto escreve e corrige-as antes do commit.
- SASTAnalisa o repositório em cada push.Detetada
- VibeDefendPassa a descoberta ao teu agente de código.Servida
- O teu agenteCorrige-a na sessão.Corrigida
- CommitEntra sem a falha.Limpo
Claude Code
Cursor
WindsurfGitHub Copilot
OpenAI Codex
Começa por um repositório.
Liga o GitHub, o GitLab, o Bitbucket ou o Azure DevOps, escolhe um repositório e a primeira análise arranca.
Em detalhe
Cada descoberta: o caminho, a linha, a correção.
Falhas alcançáveis
O caminho de exploração
Fluxos de dados que conhecem o teu framework
Uma correção para cada descoberta
A tua política
Tudo o que verifica
O que o nosso SAST vê e o teu não.
Uma falha real por linguagem, com a linha assinalada e a correção.
- AltaCWE-79
JavaScript (Express)
res.send(`<h1>Hi ${req.query.name}</h1>`);res.send(`<h1>Hi ${escapeHtml(req.query.name)}</h1>`); - AltaCWE-639
TypeScript (Fastify)
return db.invoice.findUnique({ where: { id } });return db.invoice.findFirst({ where: { id, ownerId: req.user.id } }); - CríticaCWE-89
Python (Django)
cursor.execute(f"SELECT * FROM books WHERE title = '{q}'")cursor.execute("SELECT * FROM books WHERE title = %s", [q]) - AltaCWE-22
Go (Gin)
c.File(filepath.Join("uploads", name))c.File(filepath.Join("uploads", filepath.Base(name)))
Mais 12 linguagens, uma falha em cada
- AltaCWE-611
Java (Spring)
var doc = dbf.newDocumentBuilder().parse(f.getInputStream());dbf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); - AltaCWE-916
Kotlin (Spring)
val md = MessageDigest.getInstance("MD5")users.save(form.email, encoder.encode(form.password)) - MédiaCWE-601
C# / .NET (ASP.NET)
return Redirect(returnUrl);return LocalRedirect(returnUrl); - AltaCWE-915
Ruby (Rails)
@user.update(params.require(:user).permit!)@user.update(params.require(:user).permit(:name, :email)) - CríticaCWE-502
PHP (Laravel)
$cart = unserialize($request->cookie('cart'));$cart = json_decode($request->cookie('cart'), true); - CríticaCWE-78
Rust
Command::new("sh").arg("-c").arg(cmd).status()Command::new("convert").args([name, "thumb.png"]).status() - MédiaCWE-312
Swift
UserDefaults.standard.set(reply.token, forKey: "token")try keychain.save(reply.token, account: "token") - AltaCWE-338
Scala
val token = Random.alphanumeric.take(32).mkStringval token = UUID.randomUUID().toString - AltaCWE-352
Elixir (Phoenix)
plug :fetch_sessionplug :protect_from_forgery - CríticaCWE-841
Solidity
payable(msg.sender).call{value: amount}("");balances[msg.sender] -= amount;payable(msg.sender).transfer(amount); - CríticaCWE-120
C / C++
strcpy(name, argv[1]);snprintf(name, sizeof name, "%s", argv[1]); - MédiaCWE-353
HTML
<script src="https://cdn.example/chart.js"></script><script src="/static/vendor/chart.js"></script>
Segurança do código em tempo real, onde o teu código vive.
Erros e avisos acumulam-se enquanto o agente escreve. Apanhados antes da pull request.
Feedback em tempo real
Tecnologia de IA híbrida
Ferramentas de colaboração
Suporte abrangente de linguagens
Correções e remediação automatizadas
Políticas personalizáveis
Relatórios pensados para programadores
Do alerta à correção
A linha é assinalada.
Julgada no ciclo.
Corrigida na linha.