Frameworks & bibliothèques scannés
Nous testons la couverture sur ces frameworks via fixtures. De nouveaux patterns sont ajoutés à chaque release de règles builtin.
Principales classes CWE détectées
Ces classes CWE apparaissent le plus souvent dans les codebases modernes de ce langage. StaticCodeAudit livre des règles dédiées pour chacune, mappées à OWASP Top 10 / ISO 27001 / ASVS quand pertinent.
CWE-79
Cross-Site Scripting (XSS)
innerHTML, dangerouslySetInnerHTML en React, v-html en Vue, Angular bypassSecurityTrust* avec des données utilisateur. Variantes stored, reflected et DOM-based couvertes.
Détecté par la règle SCA : xss_innerhtml
CWE-1321
Prototype Pollution
Object.assign récursif, _.merge, ou obj[key] = value non protégé quand key vient de l'utilisateur. Une seule clé __proto__ peut casser tous les objets en aval.
Détecté par la règle SCA : prototype_pollution
CWE-89
Injection SQL
Sequelize.literal(), requêtes raw en Prisma $queryRaw\`${input}\`, Mongoose $where avec strings, Knex .raw() avec concat.
Détecté par la règle SCA : sql_injection_concat
CWE-918
SSRF
axios.get(url), fetch(url), http.get sur URLs utilisateur. Particulièrement dangereux en serverless via les endpoints metadata internes.
Détecté par la règle SCA : taint_ssrf
CWE-798
Identifiants en dur
Clés API committées dans .env.example, config.js, ou React process.env.REACT_APP_* exposé au bundle client.
Détecté par la règle SCA : hardcoded_secret
CWE-915
Mass Assignment
User.update(req.body) sans allow-list de champs. Permet de monter en privilèges (isAdmin: true) via body JSON.
Détecté par la règle SCA : mass_assignment
Vulnérable vs. sain — trois exemples rapides
CWE-79
Détecté par la règle SCA : xss_innerhtml
// Vulnérable — React dangerouslySetInnerHTML
function Bio({ user }) {
return <div dangerouslySetInnerHTML={{ __html: user.bio }} />;
}
// Sain — contenu texte, pas d'interprétation HTML
function Bio({ user }) {
return <div>{user.bio}</div>;
}
CWE-1321
Détecté par la règle SCA : prototype_pollution
// Vulnérable — deep merge sans 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]; }
}
}
// Sain — bloque __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
Détecté par la règle SCA : sql_injection_concat
// Vulnérable — concat dans Sequelize.literal
const users = await User.findAll({
where: sequelize.literal(`name = \'${req.query.name}\'`)
});
// Sain — paramètre lié
const users = await User.findAll({
where: { name: req.query.name }
});
Ce que StaticCodeAudit détecte (ce langage)
- XSS en React
dangerouslySetInnerHTML, Vuev-html, Angular trust bypass, vanillainnerHTML - Prototype pollution via deep merge, assignation de clé dynamique
- Injection SQL dans Sequelize, Mongoose, Prisma, TypeORM, Knex raw queries
- Injection NoSQL (Mongoose
$whereavec strings, opérateurs Mongo dans entrée user) - SSRF via
axios,fetch,httpavec URLs utilisateur - Secrets en dur (clés API, secrets JWT, AWS, Stripe, GitHub, tokens Slack)
- Mass assignment dans Sequelize/Mongoose sans allow-list de champs
- Cookies non sécurisés (flags
httpOnly,secure,sameSite) - Token CSRF manquant dans les formulaires Express
- Path traversal dans
fs.readFileavec entrée user - Crypto non sécurisée (MD5 dans
crypto, IV en dur, random faible) - Open redirect (
res.redirect(req.query.url)) - Dépendances obsolètes via patterns
package.json - Misconfigurations CI/CD (.gitlab-ci, GitHub Actions, scripts npm)
Auditez votre code
Auditez vos backends Node.js et frameworks front-end (React, Vue, Angular, Svelte) contre XSS, prototype pollution, failles d'injection et risques supply-chain — sans téléverser une seule ligne dans le cloud.
Télécharger le binaire démo Réserver une démo guidée