<aside> 📝

Proyecto: vulnerable-node (PsEA v1.0) | Autor: NextCode Team | Fecha: 2026-02-08 | Status: Complete

</aside>


1. Executive Summary

<aside> 🚨

Friction Score: HIGH — Múltiples bloqueantes identificados para onboarding de nuevos desarrolladores. Zero tooling moderno. Todas las dependencias están desactualizadas (2015-2016). Sin tests, sin linter, sin CI/CD.

</aside>

Propósito del proyecto: Aplicación e-commerce intencionalmente vulnerable diseñada para educación en seguridad, evaluación de herramientas SAST y práctica de pentesting.

Tech Stack:

Componente Tecnología Versión Estado
Framework Express.js ~4.13.1 Obsoleto (2015)
Runtime Node.js 19.4.0 EOL
Base de Datos PostgreSQL 15.1 Soportado
ORM / Query pg-promise ^4.4.6 Muy obsoleto
Template Engine EJS + ejs-locals ^2.4.2 / ^1.0.2 CVEs + Abandonado
Sesión express-session ^1.13.0 Usa MemoryStore (leaks)
Logging log4js + Morgan ^0.6.36 / ~1.6.1 API deprecated
Contenedores Docker + Compose v3.9 Funcional

2. Environment Setup & First Run

2.1 Prerequisitos

Prerequisito Requerido Documentado Fricción
Docker & Docker Compose Sí (README) LOW
Node.js 19.x Solo dev local No (solo en Dockerfile) MEDIUM
PostgreSQL 15.1 Via Docker o local Parcial HIGH (local)
Git Implícito LOW

2.2 Rutas de Setup

<aside> 🐳

Ruta Docker (recomendada): docker-compose build && docker-compose up — funciona en 2 comandos, ~3 min build. Es la única ruta viable sin fricción.

</aside>

<aside> 💻

Ruta Local: Requiere PostgreSQL manual, variable STAGE=LOCAL, npm install. No documentada en README. El default de config apunta a IP privada 10.211.55.70 (VM Parallels) — falla garantizada para cualquier otro desarrollador.

</aside>


3. Friction Points (10 identificados)

# Punto de Fricción Severidad Archivo Descripción
F-01 Sin .env ni .env.example HIGH config.js Todas las configuraciones hardcoded. Sin soporte para variables de entorno para secretos.
F-02 Sin engines en package.json MEDIUM package.json Versión de Node no documentada; solo el Dockerfile la revela (19.4.0).
F-03 Sin .nvmrc / .node-version MEDIUM Raíz No hay pinning de versión de Node para desarrollo local.
F-04 IP hardcoded en config DEVEL HIGH config.js:12 10.211.55.70 es IP de VM Parallels — inutilizable para cualquier otro dev.
F-05 Default fallback a DEVEL MEDIUM config.js:42 Si STAGE no está definido, usa config DEVEL con IP privada — falla garantizada.
F-06 Sin npm run dev / watch mode MEDIUM package.json Solo npm start; sin hot reload ni nodemon para desarrollo.
F-07 body-parser deprecated usage LOW app.js:38 app.use(bodyParser()) está deprecated desde Express 4.16.
F-08 log4js API deprecated LOW app.js:19-21 loadAppender y addAppender fueron removidos en log4js moderno.
F-09 Sin README para dev local HIGH README.md README solo cubre Docker path; desarrollo local no documentado.
F-10 Typo get_purcharsed LOW model/products.js:44 Nombre de función con typo (debería ser get_purchased).

4. Critical Dependencies Audit

Paquete Versión Actual EOL/Deprecated Riesgo de Seguridad Propósito
express ~4.13.1 Obsoleto (2015) HIGH - CVEs conocidos Web framework
ejs ^2.4.2 Obsoleto HIGH - RCE en versiones viejas Template engine
ejs-locals ^1.0.2 Abandonado (2013) HIGH - Sin mantenimiento EJS layout support
pg-promise ^4.4.6 Muy desactualizado MEDIUM PostgreSQL client
express-session ^1.13.0 Obsoleto MEDIUM - MemoryStore leaks Session management
log4js ^0.6.36 Muy obsoleto, API cambiada HIGH - Breaking changes Logging
body-parser ~1.13.2 Integrado en Express LOW Request body parsing
cookie-parser ~1.3.5 Obsoleto LOW Cookie parsing
morgan ~1.6.1 Obsoleto LOW HTTP request logging
serve-favicon ~2.3.0 Obsoleto LOW Favicon serving
debug ~2.2.0 Obsoleto LOW Debug utility