El archivo package.json no forma parte del núcleo de WordPress, sino del ecosistema Node.js. Se utiliza para gestionar dependencias y scripts de desarrollo mediante herramientas como npm, Yarn o pnpm. Si está accesible públicamente, no suele contener información crítica, pero puede revelar detalles técnicos del proyecto. Por ello, normalmente se clasifica como una vulnerabilidad de divulgación de información (Information Disclosure) de baja severidad.
¿Qué es package.json?
Este archivo es el manifiesto central de un proyecto de Node.js. En el contexto de WordPress, se usa principalmente para:
Gestionar dependencias JavaScript: Define las librerías y paquetes de npm que tu proyecto necesita, tanto para el desarrollo como para la producción. Por ejemplo, el conocido paquete @wordpress/scripts suele aparecer aquí para proporcionar herramientas de compilación y linting optimizadas para el entorno de bloques de WordPress.
Definir scripts de automatización: Permite crear atajos para tareas comunes de desarrollo como compilar código, ejecutar pruebas o empaquetar el proyecto.
Especificar metadatos del proyecto: Incluye información como el nombre del paquete, versión, descripción, autor y licencia.
Un ejemplo de contenido es:
⚠️ El Riesgo de Seguridad
Al igual que con composer.json y composer.lock, el principal peligro no es el archivo en sí, sino que sea accesible al público a través de la URL https://tudominio.com/package.json.
Si un atacante puede leerlo, obtiene información valiosa para planificar un ataque:
- Enumeración de herramientas y versiones: El archivo revela exactamente qué paquetes y versiones específicas de JavaScript estás utilizando . Un atacante puede usar esta lista para buscar vulnerabilidades de seguridad conocidas que afecten a esas versiones concretas.
- Mapa de tu infraestructura de desarrollo: Conocer las herramientas que usas (como
@wordpress/scriptso@babel/core) ayuda a un atacante a entender mejor tu configuración y potencialmente explotar fallos en el entorno de desarrollo.
¿Cómo comprobar si está expuesto?
Accede a: https://tudominio.com/package.json
Resultados esperados:
¿Es una vulnerabilidad?
No por sí mismo.
El problema aparece cuando un atacante puede acceder a: https://tudominio.com/package.json y obtener información sobre el entorno de desarrollo del proyecto.
Riesgos asociados
Divulgación de tecnologías
Puede revelar:
- Frameworks JavaScript utilizados.
- Librerías CSS.
- Herramientas de compilación.
- Versiones de paquetes.
Identificación de componentes vulnerables
Si el archivo muestra dependencias con versiones antiguas, un atacante puede comprobar si tienen vulnerabilidades conocidas.
Por ejemplo:
podría indicar una versión obsoleta con fallos conocidos.
Exposición de scripts internos
Puede contener scripts como:
Esto ayuda a comprender cómo está estructurado el proyecto.
Información sobre la arquitectura
También puede revelar:
- Nombre interno del proyecto.
- Organización del código.
- Herramientas utilizadas para el despliegue.
¿Contiene información sensible?
Normalmente no.
No debería incluir:
- Contraseñas.
- Claves API.
- Tokens.
- Credenciales de bases de datos.
Si aparecen este tipo de datos, se trata de una mala práctica y la severidad aumenta considerablemente.
¿Cómo protegerlo?
No publicar archivos de desarrollo
package.json normalmente no es necesario para que el sitio funcione en producción.
Bloquear el acceso
Apache (.htaccess):
Nginx:
Mantener las dependencias actualizadas
Actualiza regularmente los paquetes de Node.js para reducir el riesgo de vulnerabilidades conocidas.