Test de Penetración Node.js / Express: Prototype Pollution, Supply-Chain npm y Seguridad Backend JavaScript
Node.js domina el backend JavaScript moderno, pero su naturaleza dinámica y el ecosistema npm crean superficies de ataque únicas: prototype pollution, RCE via deserialización, SSRF via clients HTTP (axios, node-fetch), riesgos supply-chain. Matproof Sentinel realiza pentests Node.js / Express dirigidos con informe audit-ready desde 149 €.
Por qué Node.js requiere atención pentest específica
El ecosistema Node.js ha vivido incidentes recientes: HTTP/2 Rapid Reset (CVE-2023-44487) permite DDoS masivos. La falla jsonwebtoken (CVE-2022-23529) afectó virtually todas las aplicaciones Node usando la librería más diffusa. CVE-2024-39338 en axios expone cientos de miles de aplicaciones a SSRF. Más allá de las CVE, los patrones Node.js como manipulación dinámica de propiedades crean vectores únicos de prototype pollution.
- CVE-2023-44487 (HTTP/2 Rapid Reset, CVSS 7.5): DDoS masivo — Cloudflare detectó 398M req/sec attacks en 2023.
- CVE-2022-23529 (jsonwebtoken): bypass JWT signature validation — ≈ 9M downloads/semana npm.
- CVE-2024-39338 (axios SSRF): URLs relativas malformadas permiten SSRF.
- Prototype pollution: pattern Node.js-específico para escalación a RCE.
- Riesgos supply-chain npm: 1.2M packages, ~75% con dependencias transitive.
- Express.js sin protecciones default contra CSRF, XSS, injection.
- Para fintechs españoles bajo DORA Art. 24 o SaaS bajo NIS2, pentest Node.js documentado es estándar.
Qué testeamos específicamente en una aplicación Node.js / Express
- Prototype pollution: injection de propiedades en Object.prototype via JSON.parse, body-parser, qs.parse.
- jsonwebtoken vulnerabilities: algoritmo « none » aceptado, confusión HS256/RS256.
- npm supply chain: audit completo dependencias, packages con post-install suspect.
- SSRF via HTTP client: axios, node-fetch, got, request — bypass validation URL.
- Header injection (CRLF): injection newline en HTTP headers via parameters usuario.
- Configuración HTTP/2: exposure a CVE-2023-44487 si HTTP/2 sin rate-limiting.
- Injection NoSQL via mongoose / mongodb: operadores $ne, $gt, $where.
- Insecure deserialization: uso de node-serialize, eval() con user data.
- Configuración Express: middleware auth orden incorrecto, helmet ausente.
- Logging datos sensibles: Winston / Pino configurados para loggear Authorization headers.
Ejemplo de hallazgo
Prototype Pollution explotable a RCE en body-parser con gadget chain lodash
La aplicación Express usa body-parser sin configuración restrictiva. Atacante envía payload JSON con clave « __proto__ » que pollutes Object.prototype. La aplicación usa lodash.template con template parcialmente controlado por usuario, creando cadena de explotación: prototype pollution → lodash.template → RCE.
Corrección: Actualización inmediata versiones parcheadas: body-parser ≥ 1.20.3, lodash ≥ 4.17.21. Configurar body-parser con reviver para bloquear keys sensibles. Reemplazar lodash.template por librerías templating sandboxed. Implementar Object.freeze(Object.prototype) al startup.
Referencia: CVE-2022-24999 · CWE-1321 · OWASP A08:2021
Pentest Node.js: opciones comparadas
| — | Escaneo gratuito | Matproof Sentinel | Consultoría tradicional |
|---|---|---|---|
| Motor de escaneo automatizado | ✓ (vista previa 3 min) | ✓ Escaneo completo | ✗ Solo manual |
| Cobertura OWASP Top 10 | Parcial | ✓ Completa | ✓ Completa |
| Evidencia proof-of-exploit | ✗ | ✓ Por hallazgo | ✓ Por hallazgo |
| Mapeo normativo (DORA/NIS2/ISO 27001) | ✗ | ✓ Automatizado | ✓ Manual |
| Informe PDF listo para auditoría | ✗ | ✓ Inmediato | ✓ Entrega 2–4 semanas |
| Escaneos continuos / recurrentes | ✗ | ✓ Por despliegue | ✗ Encargo anual |
| Tiempo hasta el primer resultado | ~3 min | ~30 min escaneo completo | 2–4 semanas |
| Precio | €0 | Desde €149 | €8.000–€25.000 |
| Revisión de código fuente (SAST) | ✗ | ✓ Plan Growth | ✓ En alcance |
| Pruebas de API (REST/GraphQL) | ✗ | ✓ Automatizado | ✓ Manual |
Paquetes Pentest Node.js
- 1 escaneo pentest completo
- Hallazgos priorizados por IA con CVSS 3.1
- Proof-of-exploit por hallazgo
- Informe PDF listo para auditoría
- Mapeo normativo (DORA, NIS2, ISO 27001)
- Escaneos ilimitados (hasta 3 dominios)
- Monitorización continua
- Integración CI/CD (GitHub, GitLab)
- Todos los mapeos normativos
- Soporte prioritario
- Escaneos + dominios ilimitados
- Pruebas autenticadas / White-Box
- Pruebas de API e infraestructura cloud
- Account manager de seguridad dedicado
- SLA de respuesta en 24h
Preguntas frecuentes sobre el pentest Node.js / Express
¿Diferencia entre pentest Node.js y audit npm-audit estándar?
npm audit identifica CVE conocidas. Pentest Node.js va más allá: testeamos patrones runtime específicos (prototype pollution, SSRF via HTTP client, deserialization), Express middleware configuration, demostramos exploitabilidad real con proof-of-exploit.
¿Cómo auditan la supply-chain npm?
Cuatro layers: (1) análisis estático package-lock.json; (2) cross-reference NVD, GitHub Advisory, Snyk Database; (3) detección packages suspect; (4) recommendations pinning.
Mi aplicación Node.js usa NestJS / Fastify / Koa. ¿El pentest aplica?
Sí. Cubrimos todo ecosistema Node.js. Clases vulnerabilidades largamente comunes.
¿El pentest puede testar APIs GraphQL Node.js (Apollo, GraphQL Yoga)?
Sí. APIs GraphQL requieren tests específicos: query depth limiting, introspection production, batch query attacks, autorización resolver.
¿Cómo gestionan tests Node.js en serverless (Lambda, Vercel, Cloudflare Workers)?
Testeamos functions serverless: cold-start timing side-channel, leak environment variables via stack trace, IAM role privilege escalation.
¿Cuánto tiempo requiere un pentest Node.js completo?
60 minutos para aplicación Express típica. Para microservices Node.js / GraphQL: 2-4 horas.
Temas relacionados
Profundiza — artículos relacionados del blog
Proteja su aplicación Node.js ahora
Primer escaneo en 3 minutos, pentest Node.js completo en 60 minutos. Informe audit-ready DORA / NIS2 / ISO 27001 desde 149 €.
Iniciar escaneo gratuito