El endpoint /package-lock.json en una web WordPress es un archivo de configuración legítimo que pertenece al ecosistema de desarrollo de Node.js y npm (Node Package Manager). Sin embargo, al igual que otros archivos de configuración, exponerlo públicamente supone un riesgo de seguridad para tu sitio.
¿Qué es package-lock.json?
Este archivo es el registro exacto de todas las dependencias de JavaScript que tu proyecto está utilizando en un momento dado. Mientras que package.json define las dependencias de forma flexible, package-lock.json registra la versión precisa de cada paquete y sus sub-dependencias, garantizando que todos los entornos (desarrollo, pruebas, producción) utilicen exactamente el mismo árbol de dependencias.
En el contexto de WordPress, es común encontrarlo en:
Temas y plugins modernos: Muchos desarrolladores lo utilizan para gestionar las herramientas de compilación (como @wordpress/scripts) y librerías JavaScript que necesita su producto.
Proyectos con estructura avanzada: En configuraciones como Bedrock o proyectos que usan wp-env, es parte habitual de la estructura de desarrollo.
Su finalidad es garantizar que todos los desarrolladores y servidores instalen exactamente las mismas versiones de las dependencias.
Por ello, normalmente se considera una vulnerabilidad de divulgación de información (Information Disclosure) de baja severidad.
⚠️ Riesgos de seguridad al exponerlo públicamente
El principal problema no es el archivo en sí, sino que esté accesible al público a través de la URL https://tudominio.com/package-lock.json. Un atacante que pueda leerlo obtiene información valiosa:
- Enumeración de paquetes y versiones: El archivo revela cada paquete npm que usas, con su versión exacta. Esto permite a un atacante buscar vulnerabilidades de seguridad conocidas para esas versiones específicas.
Un ejemplo real: el tema Twenty Twenty de WordPress (
versión 1.2) incluía un package-lock.json con una versión antigua de minimist que tenía una vulnerabilidad de seguridad conocida (CVE-2020-7598). - Riesgo por dependencias obsoletas o comprometidas: Incluso si tu sitio no ejecuta directamente el código de desarrollo, el lockfile puede contener paquetes con vulnerabilidades. Es más, en agosto de 2026 se detectó un ataque a la cadena de suministro de npm donde paquetes populares como
flat-cacheycacheablefueron comprometidos. Unnpm installque regenerara el lockfile desde cero habría instalado versiones maliciosas capaces de robar tokens y claves de CI. - Alarmas de seguridad en herramientas de monitoreo: Herramientas como GitHub o servicios de escaneo de vulnerabilidades alertan automáticamente sobre paquetes inseguros en un
package-lock.jsonexpuesto, lo que puede generar ruido o, peor, revelar a un atacante qué tipo de vulnerabilidades tienes sin parchear.
¿Cómo comprobar si está expuesto?
Accede a: https://tudominio.com/package-lock.json
Resultados posibles:
¿Cómo protegerlo?
No publicar archivos de desarrollo
En producción, package-lock.json normalmente no es necesario para el funcionamiento del sitio.
Bloquear el acceso
Apache (.htaccess):
O para bloquear ambos archivos:
Nginx:
Mantener las dependencias actualizadas
Actualiza periódicamente las dependencias de Node.js y utiliza herramientas como npm audit para detectar vulnerabilidades conocidas.
En resumen, package-lock.json es un archivo de desarrollo legítimo, pero su exposición pública convierte a tu sitio en un objetivo más fácil al revelar información detallada sobre tu infraestructura de JavaScript y sus posibles vulnerabilidades.