Límites

Límites conocidos de Vantor. No reemplaza las prácticas de desarrollo seguro.

Ataques no cubiertos

AtaquePor quéQué hacer
Control de acceso roto (IDOR)Cambiar /facturas/41 por /facturas/42 es una consulta válidaVerificá en cada ruta que el recurso sea del usuario
Errores de lógica de negocioLas reglas de negocio de tu aplicación no forman parte de lo que Vantor revisaTests y revisión
XSS en el navegadorLas reglas no inspeccionan el HTML que devolvés. La CSP por defecto no restringe scriptsUsá la CSP con nonce, escapá la salida y usá un framework que escape por defecto
Autenticación débil, secretos filtradosNo forma parte de lo que interceptavantor check detecta algunos casos
Dependencias maliciosasLas reglas revisan lo que vino del cliente. Pacto detecta operaciones que no figuran en la lista, pero un paquete que ya ejecuta código en tu proceso puede evitarloAuditá las dependencias y fijá versiones
Inyección de segundo ordenUn valor guardado y usado después no se identifica como valor del clienteParametrizá siempre
DDoSEl rate limit es por proceso y corre dentro de tu aplicaciónUsá un CDN o WAF delante

Valores transformados

Vantor identifica un valor en la operación si llega sin cambios, con otras mayúsculas o URL-decodificado. Si tu código lo transforma antes de usarlo (base64, reemplazos, concatenación de dos campos), puede no identificarlo.

Entornos no cubiertos

EntornoEstado
Aplicaciones solo de frontend (React con Vite, por ejemplo)No aplica. Todo el código del navegador lo controla el usuario
Next.js Edge y middleware en EdgeNo cubierto. No hay fs, http ni hooks
Vercel, Lambda y otros serverlessNo verificado. El rate limit en memoria no sirve porque cada instancia cuenta por separado
Servidores HTTP/2 nativos (node:http2)No cubiertos. Funciona con un proxy delante que use HTTP/1.1 hacia la aplicación
worker_threadsLo que corre en un worker no queda cubierto
Bun y DenoNo probados

Drivers

Se interceptan automáticamente pg, mysql2, better-sqlite3 y los filtros de supabase-js. Cualquier otro driver u ORM que no use uno de estos por debajo (Prisma con su motor propio, postgres.js, mongodb) no pasa por la regla sql. Usá guardSql() en las consultas construidas a mano.

Para MongoDB, la regla input rechaza los operadores en la entrada, pero las consultas en sí no se revisan.

Con supabase-js, Vantor solo revisa lo que sale por fetch hacia rutas /rest/v1/. No revisa el código SQL de las funciones que llamás con .rpc() ni de las Edge Functions.

Límites de detección

Un atacante que ya ejecuta código

Vantor corre dentro del proceso de la aplicación. Un atacante que ejecuta código en ese proceso puede desactivarlo.

El control de licencias

El control de licencias se puede quitar modificando el paquete. Hacerlo viola la licencia. Este control no agrega seguridad a la aplicación. Se usa para registrar el uso y conectar el panel.

Errores internos

Ante un error interno, Vantor deja pasar la petición. La aplicación sigue funcionando, pero esa petición puede quedar sin revisar.

Sin licencia válida, la aplicación funciona sin protección, con una advertencia en stderr. Revisá los logs o el panel para confirmar que la protección está activa.