criticalCWE-89A03:2021

Inyección (SQL, NoSQL, Comandos)

El atacante inserta código malicioso en queries o comandos explotando input de usuario sin sanitizar — inyección SQL, NoSQL y de comandos del sistema.

Cómo Funciona

Los ataques de inyección ocurren cuando datos no confiables se envían a un intérprete como parte de un comando o query. Los datos hostiles del atacante engañan al intérprete para ejecutar comandos no deseados o acceder a datos sin autorización. SQL injection es la más común: el atacante ingresa sintaxis SQL en un campo de formulario, y la aplicación lo concatena directamente en un query. Esto puede volcar toda la base de datos, bypasear autenticación o hasta ejecutar comandos del sistema.

Código Vulnerable
const userId = req.params.id;
const result = await db.query(
  `SELECT * FROM users WHERE id = ${userId}`
);
Código Seguro
const userId = req.params.id;
const result = await db.query(
  'SELECT * FROM users WHERE id = $1',
  [userId]
);

Ejemplo Real

La inyección SQL de MOVEit Transfer (CVE-2023-34362) fue explotada por el grupo de ransomware Cl0p en 2023, comprometiendo más de 2,600 organizaciones y exponiendo datos de 77+ millones de individuos incluyendo agencias gubernamentales y empresas Fortune 500.

Cómo Prevenirlo

  • Usa queries parametrizados o prepared statements
  • Usa un ORM como Prisma o Sequelize
  • Valida y sanitiza todo input de usuario
  • Aplica el principio de menor privilegio a cuentas de base de datos

Tecnologías Afectadas

Node.jsReactNext.jsPythonGoJavaPHPC#

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas