API REST pública · v1

API de vulnerabilidades de PrestaShield

API JSON gratuita y de solo lectura sobre la mayor base de vulnerabilidades de PrestaShop: core y módulos, CVE y GHSA, con los rangos de versiones afectadas que necesitas para saber si una tienda está expuesta. Es la que alimenta el conector y el panel de PrestaShield, y puedes usarla tú también.

385avisos publicados
94en el core de PrestaShop
209módulos afectados
193críticos (CVSS ≥ 9)
30/10/2026último aviso

Lo básico

URL base

https://api.prestashield.com/v1 · JSON en UTF-8 · sin autenticación · CORS abierto (Access-Control-Allow-Origin: *) · OpenAPI 3.0.

Límites

POST /v1/check admite 60 peticiones por minuto y por IP. Las lecturas se cachean 5 minutos; cachea también en tu lado y manda un User-Agent descriptivo (por ejemplo MiHerramienta/1.2 (+https://ejemplo.com)).

Idiomas

Añade lang=es o lang=en (por defecto en) para recibir el titular, el resumen y los rangos afectados en ese idioma. El texto largo del aviso se sirve en el idioma de su fuente, casi siempre inglés, con traducción cuando existe.

Versiones

Las versiones de PrestaShop tienen cuatro números en la rama 1.x (1.7.8.11) y tres desde la 8 (8.2.1, 9.1.5). La de un módulo es la que declare el módulo.

Endpoints

EndpointQué devuelve
GET /v1/vulnerabilities?type=core&version=8.2.1Avisos del core que afectan a esa versión (todos los del core si no se indica version).
GET /v1/vulnerabilities?type=module&slug=ps_facetedsearch&version=3.0.0Avisos de un módulo que afectan a esa versión. slug es su nombre técnico (la carpeta).
GET /v1/vulnerabilities?type=php&version=8.2.30Avisos del propio intérprete PHP (recientes, graves, sin los que solo afectan a Windows) que afectan a esa versión. Se compara la parte numérica: «8.2.29-nmm1» vale.
GET /v1/vulnerabilities/{slug|CVE|GHSA}Un aviso con descripción, referencias, CWE y métricas CVSS. Vale cualquier identificador: cve-2026-44212, CVE-2026-44212, GHSA-w9f3-qc75-qgx9.
POST /v1/checkTodo lo que afecta a una tienda en una sola llamada: el core, todos sus módulos y, si se envía php_version, el propio PHP. La forma recomendada de integrarse.
GET /v1/catalog?page=1&per_page=100El catálogo completo con todo el detalle, paginado. Para builds y réplicas, no para consultar en cada petición.
GET /v1/modules · GET /v1/modules/{slug}Módulos con avisos y sus cifras; y todos los avisos de un módulo.
GET /v1/connector/latestÚltima versión del conector veoprestashield y su ZIP.

Comprobar una tienda entera

Petición
curl -X POST https://api.prestashield.com/v1/check \
  -H "Content-Type: application/json" \
  -H "User-Agent: MyTool/1.0 (+https://example.com)" \
  -d '{"ps_version":"8.2.1","php_version":"8.2.30","lang":"es","modules":[{"slug":"ps_facetedsearch","version":"3.0.0"},{"slug":"productcomments","version":"4.1.0"}]}'
Respuesta (recortada)
{
  "core": [ { "slug": "cve-2026-44212", "cve": "CVE-2026-44212", "score": 9.3, "severity": "critical",
              "affected": ["…"], "url": "https://www.prestashield.com/es/vulnerabilidades/cve-2026-44212/", "…": "…" } ],
  "php": [ { "slug": "cve-2026-109618", "score": 9.2, "…": "…" } ],
  "modules": { "ps_facetedsearch": [ { "slug": "cve-2026-54159", "score": 10, "…": "…" } ],
               "productcomments": [ "…" ] },
  "meta": { "ps_version": "8.2.1", "modules_checked": 2, "modules_vulnerable": 2, "generated_at": "2026-10-25T12:00:00+00:00" }
}

Campos de un aviso

CampoSignificado
slug, cve, ghsaIdentificador estable (el de la URL) y los identificadores públicos a los que corresponde. Un GHSA que luego recibe CVE conserva su slug.
type, modulecore, module (más el nombre técnico) o php (el intérprete; los rangos son versiones de PHP). dependency y other existen para casos límite.
score, severityPuntuación base CVSS (la más alta disponible: v4 > v3.1 > v3.0) y su etiqueta: none, low (<4), medium (<7), high (<9), critical.
ranges, affectedRangos legibles por máquina y lo mismo en palabras. Un rango tiene unique (exactamente esa versión) o límites: start (incluido), included (tope incluido), excluded (tope excluido). Al comparar solo se evalúan los rangos de la rama mayor instalada cuando los hay: con «< 8.2.6» y «< 9.1.1», una tienda 8.2.7 no está afectada.
has_patch, patchesSi existe corrección y, en avisos del core, módulos que lo parchean sin actualizar.
back_officeSolo explotable con privilegios altos (una cuenta de empleado): menos urgente que un aviso del front.
urlFicha pública del aviso en www.prestashield.com, en el idioma pedido.
description, references, weaknesses, metricsSolo en los endpoints de detalle. description es HTML; metrics sigue la estructura de la NVD para todas las fuentes.

De dónde salen los datos

Tres fuentes fundidas en una ficha por aviso: NVD (CVE, CVSS y rangos CPE; se refresca continuamente), los GitHub Security Advisories de la organización PrestaShop (los avisos del propio fabricante, también los que no tienen CVE) y Friends of Presta (avisos de módulos de terceros con el nombre técnico del módulo). Cada día entran avisos nuevos; los que no se pueden clasificar automáticamente se revisan a mano antes de publicarse.

¿Un error, un aviso que falta o un rango mal? Escribe a hola@kebes.es.

Endpoints antiguos (WordPress)

Los conectores instalados antes del cambio de API siguen llamando a /wp-json/wp/v2/vulnerability?vulnerability_core=true&version=… y ?vulnerability_module_slug=…&version=…. Esas URL siguen funcionando con la misma forma de respuesta (title.rendered, content.rendered, acf.base_score), ahora sobre esta base. Están obsoletas: toda integración nueva usa /v1.

Uso razonable y privacidad

La API es gratuita para cualquier uso, también comercial, mientras no la satures: cachea las respuestas, agrupa con /v1/check y usa /v1/catalog para réplicas. Por seguridad y control de uso registramos cada petición (endpoint, parámetros, dirección IP, dominio de origen y user agent). Los registros en bruto se borran a los 90 días; solo se conservan recuentos agregados sin direcciones IP. Base legal: interés legítimo (art. 6.1.f del RGPD).

Cambios

2026-10 · v1 — API nueva en un backend propio con un único motor de comparación de versiones (rangos por rama), tres fuentes fundidas, POST /v1/check, catálogo y especificación OpenAPI. Los endpoints de WordPress pasan a ser una capa de compatibilidad.