El endpoint composer.json en una web WordPress representa la interfaz de un archivo de configuración legítimo para el administrador de paquetes PHP, Composer. Su presencia es cada vez más común, ya sea para la gestión avanzada de un proyecto o para el desarrollo de plugins y temas.

¿Qué es?

Este archivo es la receta de dependencias de tu proyecto. Define qué paquetes PHP necesita tu sitio, junto con sus versiones y otras configuraciones. En el contexto de WordPress, su uso está muy extendido en:

Sitios modernos: Proyectos como Bedrock (una estructura de WordPress más robusta) lo utilizan para gestionar el núcleo de WordPress y los plugins como dependencias externas. Un ejemplo de su contenido muestra cómo se declaran los requisitos, incluyendo plugins y temas de repositorios como wpackagist.org.

Desarrollo de plugins y temas: Los desarrolladores lo utilizan para declarar las librerías de PHP que necesitan sus productos. Es un estándar en el ecosistema PHP para gestionar código de terceros.

Un ejemplo de su contenido es:

{ "name": "miempresa/wordpress", "require": { "php": "^8.2", "roots/bedrock": "^1.25", "monolog/monolog": "^3.0" }, "autoload": { "psr-4": { "App\\": "app/" } } }

⚠️ El Riesgo de Seguridad

El principal problema con este archivo no es el archivo en sí, sino que esté accesible públicamente en tu servidor. Un atacante que pueda leer https://tudominio.com/composer.json puede obtener información valiosa de tu sitio.

Enumeración de tecnologías: El archivo revela exactamente qué versiones de WordPress, plugins y librerías PHP estás utilizando . Un atacante puede usar esta información para buscar vulnerabilidades conocidas en esas versiones específicas, lo que se conoce como un ataque "dirigido" o para "aumentar el éxito de otros ataques".

Riesgos de suministro (Supply Chain): Los atacantes también atacan el ecosistema de Composer en sí. Por ejemplo, pueden intentar crear paquetes maliciosos con nombres similares a los que usas (typosquatting) o aprovechar "plugins" de Composer maliciosos que ejecutan código durante la instalación para robar credenciales.

¿Cómo protegerlo?

No publicar composer.json si no es necesario

En producción, lo ideal es que este archivo no sea accesible desde Internet.

Bloquear el acceso

Apache (.htaccess):

<FilesMatch "^composer\.(json|lock)$"> Require all denied </FilesMatch>

Nginx:

location ~ ^/(composer\.(json|lock))$ { deny all; return 403; }

Revisar el contenido

Comprueba que el archivo no incluya:

  1. Contraseñas.
  2. Tokens.
  3. Claves API.
  4. Rutas sensibles.
  5. Información interna innecesaria.

Aunque composer.json no sea peligroso por sí mismo, las librerías que referencia pueden contener vulnerabilidades si están desactualizadas.