Snyk y Semgrep escanean código.VCEye escanea cómo te van a hackear.
Prompt injection. Tool poisoning en MCPs. RCE vía LangChain (CVE-2025-68664). RLS recursivo en Supabase. Slopsquatting de paquetes alucinados por IA. Mientras los scanners legacy actualizan reglas, nosotros diseñamos patterns desde cero para cómo se construye software hoy: Next.js + Vercel AI SDK + Supabase + generadores como Bolt, V0, Cursor, Lovable.
Este benchmark compara tres motores sobre el mismo código. Datos crudos, sin cherry-picking. La diferencia no está en el volumen — está en qué clase de ataques cada uno sabe ver.
OWASP LLM Top 10 2025 — cobertura
VCEye detecta las 9 categorías detectables estáticamente del OWASP LLM Top 10 2025 + CVEs emergentes 2025-2026 + slopsquatting via AI hallucinated packages. Snyk, Semgrep y Socket son scanners generalistas que añadieron reglas AI como parches. Nosotros diseñamos patterns específicos desde cero para detectar cómo los hackers atacan apps construidas con IA.
AI-PROMPT-001AI-CTX-001SEC-KEY-* · SUPA-RLS-*AI-SERIAL-001AI-PKG-001AI-RAG-001AI-OUTPUT-001AI-TOOL-001MCP-001AI-LEAK-001AI-EMBED-001—no detectable estáticamenteAI-COST-001 · API-RATE-001CVEs específicos detectados: CVE-2025-68664 (LangChain serialization, CVSS 9.3), CVE-2025-68665 (LangChain.js), tool poisoning via Invariant Labs disclosure, incidente postmark-mcp (oct 2025).
Precisión vs volumen
Tres scanners sobre el mismo código. Tres filosofías distintas:
Pocos findings, alta señal
Cada finding lleva CWE, archivo exacto, número de línea, severidad calibrada y remediation accionable. Las nueve categorías detectables del OWASP LLM Top 10 cubiertas como patterns dedicados, no como reglas legacy parcheadas. Stack-specific: AI-COST, AI-PROMPT, SUPA-RLS, MCP-001, BOLT, V0.
- · cero false positives por construcción en CVEs (OSV.dev)
- · cobertura OWASP LLM Top 10 2025 — 9 de 10 categorías
- · git history scan: 16 providers de secretos
- · taint-lite intra-procedural con sanitizers reconocidos
Muchos findings, alto ruido
Engine DeepCode, AI-powered, cobertura amplia para código clásico. En librerías limpias y stacks bien tipados dispara docenas de findings que requieren validación manual repo a repo. Sin reglas dedicadas para prompt injection, MCP poisoning, o LangChain/LlamaIndex CVEs emergentes — su fortaleza es OWASP Top 10 Web, no LLM Top 10.
- · precio enterprise · sin tier indie
- · requiere CI integration y auth
- · no escanea history de git por defecto
- · no genera fix-as-PR automático
Sólido en código clásico
Quince años de reglas OSS para Express, Django, Flask, frameworks pre-IA. Excelente para apps tradicionales con un equipo de seguridad que sabe filtrar. Ciego a Vercel AI SDK, AI Tools, MCPs, RLS de Supabase. El tier Pro (€75/mes empresa) añade taint inter-procedural, no incluido en este benchmark.
- · OSS gratis · Pro a partir de €75/mes
- · sin reglas para AI SDK, MCP, prompt injection
- · sin git history scan · sin auto-fix
- · requiere CLI + CI · curva de adopción alta
La lectura: si construyes con Next.js, Supabase, Vercel AI SDK, MCPs o cualquier generador IA (Bolt, V0, Cursor, Lovable), VCEye ve patrones de ataque que no existen como regla en Snyk ni en Semgrep. Si tu stack es Java + Spring de 2018, paga Snyk. Si es 2026, esto es para ti.
Resultados por repo
Sin filtros, sin selección. Lista completa de findings que cada motor encontró. El Health Score es el score que tu audit entregaría al cliente final.
| Repo | Kind | VCEye H | VCEye | Semgrep | Snyk Code | Stack-specific |
|---|---|---|---|---|---|---|
| juice-shop/juice-shop user-provided | custom | H0 | 52 | — | 254 | 0 |
Findings al detalle
Para cada repo, los hallazgos concretos del motor VCEye con su pattern ID, severidad, archivo afectado y clasificación CWE. El reporte crudo ( benchmark-report.json) está versionado en el repo.
juice-shop/juice-shopH0user-providedVCEye52Semgrep—Snyk254▼
- medium
DEP-001CWE-11041 paquete(s) abandonado(s) o deprecado(s) - high
AUTH-011CWE-327jsonwebtoken 0.4.0 vulnerable por defecto a alg=nonepackage.json - critical
AUTH-011CWE-327jwt.verify sin algorithms en lib/insecurity.tslib/insecurity.ts:191 - critical
AUTH-011CWE-327jwt.verify sin algorithms en routes/chatbot.tsroutes/chatbot.ts:248 - critical
AUTH-011CWE-327jwt.verify sin algorithms en routes/verify.tsroutes/verify.ts:117 - high
CRYPTO-001CWE-338Math.random() usado en contexto de seguridad en lib/insecurity.tslib/insecurity.ts:55 - high
CRYPTO-002CWE-327MD5/SHA1 usado en contexto de seguridad en Gruntfile.jsGruntfile.js:77 - high
CRYPTO-002CWE-327MD5/SHA1 usado en contexto de seguridad en lib/insecurity.tslib/insecurity.ts:43 - high
INJ-002CWE-22Posible path traversal en routes/chatbot.tsroutes/chatbot.ts:46 - high
INJ-002CWE-22Posible path traversal en routes/profileImageUrlUpload.tsroutes/profileImageUrlUpload.ts:29 - high
INJ-002CWE-22Posible path traversal en routes/vulnCodeFixes.tsroutes/vulnCodeFixes.ts:29 - critical
INJ-003CWE-95eval / Function constructor en archivo con user input (routes/b2bOrder.ts)routes/b2bOrder.ts:9 - critical
INJ-003CWE-95eval / Function constructor en archivo con user input (routes/captcha.ts)routes/captcha.ts:22 - critical
INJ-003CWE-95eval / Function constructor en archivo con user input (server.ts)server.ts:386 - medium
AUTH-012CWE-208Comparacion no-timing-safe de secret en routes/changePassword.tsroutes/changePassword.ts:28 - … +37 más
- ×154
NoHardcodedPasswords/test - ×35
HardcodedNonCryptoSecret/test - ×12
javascript/HTTPSourceWithUncheckedType - ×8
NoHardcodedCredentials/test - ×7
javascript/NoRateLimitingForExpensiveWebOperation - ×6
javascript/PT - ×5
javascript/NoSqli - ×5
javascript/Sqli - ×5
javascript/XSS - ×3
javascript/HardcodedSecret - … +10 reglas más
- [semgrep] Unexpected end of JSON input
Lo que Semgrep no puede ver
Patrones que VCEye detecta específicos del stack 2026 (Next.js 15+ App Router, Supabase RLS, Vercel AI SDK, y generadores AI como Bolt/V0/Cursor/Lovable). Semgrep, Snyk OSS y Socket.dev no tienen reglas para nada de esto.
Cómo reproducir este benchmark
El script harness está en scripts/benchmark-scanners-direct.mts. Corre en tu máquina así:
# 1. Instala Semgrep (open source)
pip install semgrep
# 2. Clona VCEye
git clone https://github.com/vibecodingeye/vceye
cd vceye
# 3. Benchmark completo (10 repos)
npx tsx scripts/benchmark-scanners-direct.mts --full
# 4. Un solo repo
npx tsx scripts/benchmark-scanners-direct.mts --repo=vercel/ai-chatbot- VCEye se ejecuta directamente como librería (modo deep, sin HTTP), la ruta completa
fetchRepoContents → buildContext → runScan. - Semgrep corre con los rulesets
p/owasp-top-ten,p/javascript,p/typescript,p/nextjs,p/nodejs,p/security-audit. Timeout 30s por regla. - Ambos scanners ven exactamente el mismo código (repo shallow clone, mismo commit).
- El output de VCEye sale tal cual de
runScan(), sin filtros manuales ni cherry-picking.
Lo que este benchmark NO demuestra
Semgrep Pro (pago) no está incluido. Su tier enterprise tiene taint analysis y reglas AI más ricas. Esa comparación sería justa contra nuestra suscripción, no contra el motor base.
GitGuardian y Socket.dev no están comparados. GitGuardian es sólo secretos (subset de VCEye). Socket.dev es principalmente scanner de dependencias (también subset).
Snyk Code SÍ está comparado. Su motor DeepCode es AI-powered y más avanzado que Semgrep OSS. Los resultados reflejan esa sofisticación.
10 repos es una muestra limitada. El score real del motor viene de los audits reales con feedback loop del fundador y de los clientes (sistema de calibración supervised).
Pasa el mismo motor sobre tu repo.
scan gratis sin tarjeta · resultado en menos de 90 segundos
Pega la URL de un repo público o conecta tu GitHub App privada. Recibes Health Score, severity breakdown, y los pattern IDs disparados — suficiente para saber si tienes problema. La suscripción (€59/mes o €566/año, -20%) entrega rutas exactas, snippets, scan de git history, taint analysis, CVE matching contra OSV.dev, comentario automático en cada PR, y digest semanal de drift. Cancelas cuando quieras.