Frameworks y librerías escaneados
Probamos la cobertura mediante fixtures en estos frameworks. Se añaden nuevos patrones en cada release de reglas integradas.
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 — React dangerouslySetInnerHTML
function Bio({ user }) {
return <div dangerouslySetInnerHTML={{ __html: user.bio }} />;
}
// 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 — 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 — 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 — concat en Sequelize.literal
const users = await User.findAll({
where: sequelize.literal(`name = \'${req.query.name}\'`)
});
// Seguro — parámetro bind
const users = await User.findAll({
where: { name: req.query.name }
});
Qué detecta StaticCodeAudit (este lenguaje)
- XSS en React
dangerouslySetInnerHTML, Vuev-html, Angular trust bypass, vanillainnerHTML - 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
$wherecon strings, operadores Mongo en entrada user) - SSRF vía
axios,fetch,httpcon 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.readFilecon 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