Przejdź do głównej zawartości

Incydenty CRA (Cyber Resilience Act)

Moduł Incydenty CRA pomaga spełnić obowiązek zgłaszania z Art. 14 unijnego Cyber Resilience Act: rejestruje aktywnie wykorzystywane podatności i poważne incydenty, pilnuje 24-godzinnego terminu wczesnego ostrzeżenia i przygotowuje strukturalny eksport JSON do złożenia w platformie ENISA SRP (Single Reporting Platform).

CRA Art. 14 wyróżnia trzy progi raportowania dla producentów produktów cyfrowych:

ProgTerminZakres
Wczesne ostrzeżenie24hFakt wykrycia, komponent, wstępna ocena
Raport incydentu72hOpis przyczyny, zakres, zastosowane środki
Raport końcowy14 dniPełna przyczyna, środki zaradcze, rekomendacje

Moduł liczy 24h automatycznie od discoveredAt. Pozostałe terminy (72h, 14 dni) śledź ręcznie - są one poza zakresem FREE.

Przejdź do Polski > Incydenty CRA > Record incident. Formularz:

PoleUwagi
TitleKrótki tytuł (wymagany)
Affected componentNazwa produktu / modułu (np. polski-free, custom-checkout-module)
Affected versionsZakres wersji (np. <= 2.0.4)
ReporterOsoba, która zgłoszenie zarejestrowała
External referenceIdentyfikator z CVE / bug trackera / CVD (opcjonalny)
Kindactively_exploited_vulnerability, security_incident, near_miss
Severitycritical, high, medium, low
SummaryOpis techniczny (wymagany)

Po zapisaniu incydent jest w statusie Open i ma obliczone deadlineAt = discoveredAt + 24h.

Dla każdego incydentu Open dostępny jest przycisk Dispatch notification. Wysyła on równolegle:

  • Webhook (POST JSON) na URL z opcji polski_cra_incident_webhook
  • Email z podsumowaniem na adres z opcji polski_cra_incident_email

Obie opcje konfigurujesz w Polski > Settings > CRA incidents. Po otrzymaniu odpowiedzi 2xx z webhooka lub pomyślnym wysłaniu emaila incydent przechodzi w status Notified i zapisuje notifiedAt.

Akcja Export JSON w liście zwraca plik cra-incident-<id>-<timestamp>.json z nagłówkiem Content-Type: application/json. Kształt odpowiada projektowi schematu ENISA Single Reporting Platform - pola pokrywają: identyfikację producenta, komponentu, czasu wykrycia, ocenę wagi, kategorie incydentu oraz opis.

Przykład:

{
"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": "..."
}
// Po zarejestrowaniu incydentu (przed powiadomieniem).
add_action('polski_cra_incident_recorded', function (int $id, $incident): void {
// własna integracja: Jira, PagerDuty, Slack
}, 10, 2);
// Gdy do terminu 24h zostały mniej niż 2h.
add_action('polski_cra_incident_deadline_approaching', function ($incident): void {
// eskalacja do DPO
});

Wersja 2.1.0 zakłada tabelę {$wpdb->prefix}polski_cra_incidents. Migracja uruchamia się automatycznie przy aktywacji - jeśli nie działa, wymuś ręcznie:

Okno terminala
wp polski migrate --module=cra
  • UI i akcje: manage_woocommerce
  • Webhook/email: dowolnie konfigurowalne (brak wymogu uprawnień - to kanały wyjściowe)
  • Moduł nie śledzi automatycznie progu 72h / 14 dni (tylko 24h)
  • Wykrywanie incydentów jest manualne - nie skanujemy logów
  • Webhook nie posiada podpisu HMAC (planowane w PRO)
  • Formularz nie wspiera załączników binarnych - dołącz je do zgłoszenia w ENISA SRP ręcznie