Ir al contenido

CRA incidents (Cyber Resilience Act)

El módulo CRA incidents le ayuda a cumplir la obligación de notificación del Art. 14 del Reglamento de Ciberresiliencia de la UE: registra vulnerabilidades explotadas activamente e incidentes de seguridad graves, hace el seguimiento del plazo de 24 horas para la alerta temprana y prepara una exportación JSON estructurada para su presentación en la ENISA Single Reporting Platform (SRP).

El Art. 14 del CRA define tres umbrales de notificación para los fabricantes de productos digitales:

Umbral Plazo Alcance
Alerta temprana 24h Hecho de la detección, componente, evaluación preliminar
Informe del incidente 72h Causa raíz, alcance, mitigaciones aplicadas
Informe final 14 días Causa raíz completa, corrección, recomendaciones

El módulo calcula el plazo de 24h automáticamente a partir de discoveredAt. Los demás plazos (72h, 14 días) deben seguirse manualmente - quedan fuera del alcance FREE.

Vaya a Polski > CRA incidents > Record incident. El formulario:

Campo Notas
Title Título breve (obligatorio)
Affected component Nombre del producto o módulo (p. ej. polski-free, custom-checkout-module)
Affected versions Rango de versiones (p. ej. <= 2.0.4)
Reporter Persona que registró la notificación
External reference Identificador CVE / gestor de incidencias / CVD (opcional)
Kind actively_exploited_vulnerability, security_incident, near_miss
Severity critical, high, medium, low
Summary Descripción técnica (obligatorio)

Tras guardar, el incidente queda en estado Open y tiene deadlineAt = discoveredAt + 24h.

Para cada incidente Open, la lista ofrece la acción Dispatch notification. Se dispara en paralelo:

  • Webhook (POST JSON) a la URL de la opción polski_cra_incident_webhook
  • Correo electrónico con un resumen legible a la dirección de la opción polski_cra_incident_email

Ambas opciones se configuran en Polski > Settings > CRA incidents. Tras una respuesta 2xx del webhook o un envío de correo correcto, el incidente pasa al estado Notified y almacena notifiedAt.

La acción Export JSON devuelve cra-incident-<id>-<timestamp>.json con Content-Type: application/json. La estructura sigue el borrador del esquema de la ENISA Single Reporting Platform - los campos cubren la identidad del fabricante, el componente, el momento de detección, la gravedad, el tipo de incidente y el resumen.

Ejemplo:

{
"reference_id": "CVE-2026-1234",
"kind": "actively_exploited_vulnerability",
"severity": "high",
"title": "Stored XSS in checkout notes",
"affected_component": "polski-free",
"affected_versions": "<= 2.0.4",
"discovered_at": "2026-04-19T08:12:00+00:00",
"deadline_at": "2026-04-20T08:12:00+00:00",
"summary": "..."
}
// Después de registrar un incidente (antes de cualquier notificación).
add_action('polski_cra_incident_recorded', function (int $id, $incident): void {
// Su integración: Jira, PagerDuty, Slack
}, 10, 2);
// Cuando quedan menos de 2h para el plazo de 24h.
add_action('polski_cra_incident_deadline_approaching', function ($incident): void {
// Escalar al DPD
});

La versión 2.1.0 introduce la tabla {$wpdb->prefix}polski_cra_incidents. La migración se ejecuta automáticamente en la activación. Si no lo hace, fuércela manualmente:

Ventana de terminal
wp polski migrate --module=cra
  • UI y acciones: manage_woocommerce
  • Webhook / correo electrónico: configurables libremente (sin requisito de capacidad - son canales salientes)
  • El módulo no realiza el seguimiento automático de los umbrales de 72h / 14 días (solo 24h)
  • La detección de incidentes es manual - no escaneamos registros
  • El webhook no tiene firma HMAC (previsto para PRO)
  • El formulario no admite adjuntos binarios - añádalos manualmente a la presentación en la ENISA SRP