Saltar al contenido principal
Principiante IACódigoHerramientas

La IA Me Sugirió un Paquete NPM que No Existe: Alucinaciones en Desarrollo Web

ChatGPT y Copilot inventan paquetes npm, APIs y funciones que no existen. Cómo detectar alucinaciones, verificar dependencias y evitar instalar malware camuflado.

Fran Cobos 6 min de lectura 1048 palabras

Tabla de contenidos

Le pides a ChatGPT cómo implementar autenticación con OAuth en Express y te responde:

npm install express-oauth2-simple

Lo ejecutas. npm ERR! 404 Not Found. El paquete no existe. ChatGPT lo inventó.

No es un bug. Es una alucinación — el modelo generó un nombre de paquete que “suena” correcto pero nunca existió en npm.

Y lo peor: a veces el paquete sí existe… porque un atacante lo registró sabiendo que la IA lo iba a sugerir.

Por qué la IA inventa paquetes

Los LLMs no tienen acceso en tiempo real a npm. Generan texto basándose en patrones estadísticos:

  • “express” + “oauth” + “simple” = combinación probable → genera express-oauth2-simple
  • “react” + “auth” + “helper” = combinación probable → genera react-auth-helper
  • “python” + “flask” + “cors” = combinación probable → genera flask-cors-helper

Ninguno de estos existe (al momento de escribir esto). Pero el modelo no sabe que no existen — solo sabe que el nombre encaja con el patrón.

Cuándo ocurre más

ContextoProbabilidad de alucinación
Paquetes populares (express, react, lodash)Baja (~2%)
Paquetes de nichoAlta (~15-20%)
Paquetes con nombre de 3+ palabrasMuy alta (~25%)
APIs internas de un paquete realMedia (~10%)

El modelo no solo inventa paquetes — también inventa funciones y métodos de paquetes reales. Ejemplo:

// ❌ La IA genera esto, pero .streamChat() no existe en el SDK de OpenAI
const stream = await openai.streamChat({ model: 'gpt-4.1', ... });

// ✅ La API real es:
const stream = await openai.chat.completions.create({ ..., stream: true });

El peligro real: Slopsquatting

Un investigador de seguridad publicó en 2025 un estudio que demostró:

  1. Recopiló los 1.000 nombres de paquetes que ChatGPT más alucinaba
  2. Registró 10 de ellos en npm con código inofensivo (para la investigación)
  3. En una semana, recibieron +4.500 descargas — la mayoría de desarrolladores que copiaron y pegaron código de la IA

El ataque se llama slopsquatting (una variación de typosquatting):

1. La IA alucina "react-oauth-simplified"
2. Un atacante registra "react-oauth-simplified" en npm con malware
3. Un desarrollador hace: npm install react-oauth-simplified
4. El paquete malicioso se ejecuta en postinstall
5. Roba variables de entorno (.env), tokens, SSH keys

No es teoría. Ya ha ocurrido con paquetes reales.

Cómo verificar antes de instalar

Paso 1: Busca en npmjs.com

Antes de npm install lo-que-sea, abre npmjs.com y busca el paquete:

  • ¿Existe? Si no aparece, la IA lo inventó
  • ¿Tiene descargas? Un paquete legítimo tiene miles/semana. Menos de 100 → sospechoso
  • ¿Cuándo se publicó? Si se publicó hace días y la IA lo sugiere… es slopsquatting
  • ¿Tiene repositorio de GitHub? Un paquete sin repo es una red flag

Paso 2: Usa npm info

# Antes de instalar, verifica
npm info react-oauth-simplified

# Si no existe, verás:
# npm ERR! 404 'react-oauth-simplified' is not in this registry

# Si existe, revisa los campos:
# - maintainers (¿quién lo mantiene?)
# - repository (¿tiene GitHub?)  
# - weekly downloads (¿es popular?)
# - created (¿es nuevo sospechoso?)

Paso 3: Usa Socket.dev o Snyk

# Socket.dev analiza paquetes npm buscando malware
npx socket optimize  # Audita tu package.json

# Snyk
npx snyk test  # Busca vulnerabilidades conocidas

Paso 4: Verifica la API del paquete real

Si la IA te sugiere un método de un paquete que sí existe, verifica en la documentación oficial:

// La IA dice:
import { verifyJWT } from 'jsonwebtoken';

// Pero la API real es:
import jwt from 'jsonwebtoken';
jwt.verify(token, secret);

Abre la documentación o el README del paquete en GitHub. Nunca confíes en la API que la IA te muestra.

Tabla de alucinaciones comunes

Paquetes que la IA sugiere frecuentemente y no existen:

La IA sugiereEl paquete real es
express-oauth2-simplepassport + passport-google-oauth20
react-auth-helpernext-auth o @auth/core
node-env-configdotenv
mongodb-easy-connectmongoose o el driver oficial mongodb
typescript-path-resolvertsconfig-paths
react-form-validationreact-hook-form + zod

Regla general: Si el nombre del paquete describe exactamente lo que quieres hacer, probablemente la IA lo inventó. Los paquetes reales suelen tener nombres más creativos (express, lodash, zod, prisma).

Cómo pedir dependencias a la IA sin riesgo

Prompt seguro

Necesito implementar autenticación OAuth2 en Express.js.
Dame el nombre EXACTO del paquete npm más popular para esto.
Incluye el enlace a su página en npmjs.com o su repositorio de GitHub.
NO inventes paquetes — si no estás seguro del nombre exacto, dímelo.

Prompt de verificación

¿El paquete "express-oauth2-simple" existe realmente en npm? 
Si no existe, ¿cuál es la alternativa real más usada?

La mayoría de modelos recientes (GPT-4.1, Claude Sonnet 4) son más honestos cuando les preguntas directamente si están seguros.

Script para auditar dependencias alucinadas

Si ya tienes un proyecto con muchas dependencias y quieres verificar que todas son legítimas:

#!/bin/bash
# audit-deps.sh — Verifica que todas tus dependencias existen en npm

echo "🔍 Verificando dependencias..."

for pkg in $(node -e "
  const pkg = require('./package.json');
  const deps = { ...pkg.dependencies, ...pkg.devDependencies };
  console.log(Object.keys(deps).join('\n'));
"); do
  result=$(npm view "$pkg" name 2>&1)
  if echo "$result" | grep -q "404"; then
    echo "❌ $pkg — NO EXISTE en npm"
  else
    downloads=$(npm view "$pkg" --json 2>/dev/null | node -e "
      let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{
        try{console.log(JSON.parse(d).name)}catch{console.log('?')}
      })")
    echo "✅ $pkg"
  fi
done

Resumen

AcciónCuándo
Buscar en npmjs.comSiempre antes de instalar un paquete sugerido por IA
npm info paqueteCuando tienes dudas sobre un nombre
Verificar descargas semanalesSi el paquete existe pero no lo conoces
Revisar la API en la documentaciónCuando la IA usa métodos que no reconoces
Pedir enlace a GitHub/npm al promptComo hábito en cada prompt

Artículos relacionados

Fran Cobos

Fran Cobos

Desarrollador Full Stack especializado en IA aplicada, automatización y desarrollo web. Escribo sobre herramientas, tutoriales y casos reales para programadores.

¿Necesitas desarrollo a medida?

Apps web, IA, módulos ERP — cuéntame tu proyecto.