mediumCWE-20API10:2023

Consumo Inseguro de API

Tu API confía ciegamente en respuestas de APIs de terceros sin validación, permitiendo a atacantes explotar servicios upstream para comprometer tu aplicación.

Cómo Funciona

Cuando tu API consume datos de servicios de terceros, frecuentemente confía en la respuesta implícitamente. Si una API upstream es comprometida o retorna datos inesperados, tu aplicación los procesa sin sanitización. Esto puede llevar a ataques de inyección, corrupción de datos o bypass de lógica de negocio. Los atacantes pueden comprometer una API de terceros menos segura o hacer ataques man-in-the-middle para inyectar payloads maliciosos que tu aplicación procesa como datos de confianza.

Código Vulnerable
app.get('/api/enrichment/:email', async (req, res) => {
  const data = await fetch(`https://api.third-party.com/lookup?email=${req.params.email}`);
  const profile = await data.json();
  await db.query(`UPDATE users SET name = '${profile.name}' WHERE email = '${req.params.email}'`);
  res.json(profile);
});
Código Seguro
import { z } from 'zod';
const ProfileSchema = z.object({ name: z.string().max(100), company: z.string().optional() });

app.get('/api/enrichment/:email', async (req, res) => {
  const data = await fetch(`https://api.third-party.com/lookup?email=${encodeURIComponent(req.params.email)}`);
  const raw = await data.json();
  const profile = ProfileSchema.parse(raw);
  await db.query('UPDATE users SET name = $1 WHERE email = $2', [profile.name, req.params.email]);
  res.json(profile);
});

Ejemplo Real

En 2021, el Bash Uploader de Codecov fue comprometido, inyectando código malicioso que exfiltraba variables de entorno de pipelines CI/CD. Empresas como Twilio, HashiCorp y Confluent que consumían el script de Codecov sin verificación de integridad fueron afectadas.

Cómo Prevenirlo

  • Valida y sanitiza todos los datos recibidos de APIs de terceros con schemas
  • Usa queries parametrizados incluso con fuentes de datos de confianza
  • Verifica certificados TLS y usa certificate pinning para integraciones críticas
  • Configura timeouts y circuit breakers para llamadas a APIs externas

Tecnologías Afectadas

Node.jsPythonGoJavaPHPC#

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas