Ir al contenido principal

JavaScript / TypeScript · SAST

SAST JavaScript y TypeScript que se ejecuta totalmente sin conexión

Audite sus backends Node.js y frameworks front-end (React, Vue, Angular, Svelte) contra XSS, prototype pollution, fallos de inyección y riesgos supply-chain — sin subir una sola línea a la nube.

Frameworks y librerías escaneados

Probamos la cobertura mediante fixtures en estos frameworks. Se añaden nuevos patrones en cada release de reglas integradas.

Express Fastify Next.js Nuxt NestJS Hapi React Vue Angular Svelte Mongoose Sequelize Prisma TypeORM Knex jsonwebtoken cookie-parser

Principales clases CWE detectadas

Estas clases CWE aparecen con mayor frecuencia en bases de código modernas de este lenguaje. StaticCodeAudit incluye reglas dedicadas para cada una, mapeadas a OWASP Top 10 / ISO 27001 / ASVS cuando es pertinente.

CWE-79

Cross-Site Scripting (XSS)

innerHTML, dangerouslySetInnerHTML en React, v-html en Vue, Angular bypassSecurityTrust* con datos de usuario. Variantes stored, reflected y DOM-based cubiertas.

Detectado por la regla SCA: xss_innerhtml

CWE-1321

Prototype Pollution

Object.assign recursivo, _.merge, o obj[key] = value sin protección cuando key viene del usuario. Una sola clave __proto__ puede romper todos los objetos derivados.

Detectado por la regla SCA: prototype_pollution

CWE-89

Inyección SQL

Sequelize.literal(), queries raw en Prisma $queryRaw\`${input}\`, Mongoose $where con strings, Knex .raw() con concat.

Detectado por la regla SCA: sql_injection_concat

CWE-918

SSRF

axios.get(url), fetch(url), http.get en URLs de usuario. Particularmente peligroso en serverless vía endpoints metadata internos.

Detectado por la regla SCA: taint_ssrf

CWE-798

Credenciales hardcoded

API keys commiteadas en .env.example, config.js, o React process.env.REACT_APP_* expuesto al bundle cliente.

Detectado por la regla SCA: hardcoded_secret

CWE-915

Mass Assignment

User.update(req.body) sin allow-list de campos. Permite escalada de privilegios (isAdmin: true) vía body JSON.

Detectado por la regla SCA: mass_assignment

Vulnerable vs. seguro — tres ejemplos rápidos

CWE-79 Detectado por la regla SCA: xss_innerhtml
❌ Vulnerable
// Vulnerable — React dangerouslySetInnerHTML
function Bio({ user }) {
    return <div dangerouslySetInnerHTML={{ __html: user.bio }} />;
}
✅ Seguro
// Seguro — contenido texto, sin interpretación HTML
function Bio({ user }) {
    return <div>{user.bio}</div>;
}
CWE-1321 Detectado por la regla SCA: prototype_pollution
❌ Vulnerable
// Vulnerable — deep merge sin guard proto
function merge(target, source) {
    for (const key in source) {
        if (typeof source[key] === "object") {
            merge(target[key] = target[key] || {}, source[key]);
        } else { target[key] = source[key]; }
    }
}
✅ Seguro
// Seguro — bloquea __proto__/constructor
function merge(target, source) {
    for (const key of Object.keys(source)) {
        if (key === "__proto__" || key === "constructor") continue;
        if (typeof source[key] === "object") {
            merge(target[key] = target[key] || {}, source[key]);
        } else { target[key] = source[key]; }
    }
}
CWE-89 Detectado por la regla SCA: sql_injection_concat
❌ Vulnerable
// Vulnerable — concat en Sequelize.literal
const users = await User.findAll({
    where: sequelize.literal(`name = \'${req.query.name}\'`)
});
✅ Seguro
// Seguro — parámetro bind
const users = await User.findAll({
    where: { name: req.query.name }
});

Qué detecta StaticCodeAudit (este lenguaje)

  • XSS en React dangerouslySetInnerHTML, Vue v-html, Angular trust bypass, vanilla innerHTML
  • Prototype pollution vía deep merge, asignación dinámica de clave
  • Inyección SQL en Sequelize, Mongoose, Prisma, TypeORM, Knex raw queries
  • Inyección NoSQL (Mongoose $where con strings, operadores Mongo en entrada user)
  • SSRF vía axios, fetch, http con URLs de usuario
  • Secretos hardcoded (API keys, secretos JWT, AWS, Stripe, GitHub, tokens Slack)
  • Mass assignment en Sequelize/Mongoose sin allow-list de campos
  • Cookies inseguras (flags httpOnly, secure, sameSite)
  • Token CSRF faltante en formularios Express
  • Path traversal en fs.readFile con entrada user
  • Cripto insegura (MD5 en crypto, IV hardcoded, random débil)
  • Open redirect (res.redirect(req.query.url))
  • Dependencias obsoletas vía patrones package.json
  • Misconfiguraciones CI/CD (.gitlab-ci, GitHub Actions, scripts npm)

Audite su código

Audite sus backends Node.js y frameworks front-end (React, Vue, Angular, Svelte) contra XSS, prototype pollution, fallos de inyección y riesgos supply-chain — sin subir una sola línea a la nube.

Descargar el binario demo Reservar una demo guiada