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:

Prog Termin Zakres
Wczesne ostrzeżenie 24h Fakt wykrycia, komponent, wstępna ocena
Raport incydentu 72h Opis przyczyny, zakres, zastosowane środki
Raport końcowy 14 dni Peł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:

Pole Uwagi
Title Krótki tytuł (wymagany)
Affected component Nazwa produktu / modułu (np. polski-free, custom-checkout-module)
Affected versions Zakres wersji (np. <= 2.0.4)
Reporter Osoba, która zgłoszenie zarejestrowała
External reference Identyfikator z CVE / bug trackera / CVD (opcjonalny)
Kind actively_exploited_vulnerability, security_incident, near_miss
Severity critical, high, medium, low
Summary Opis 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