Перейти до вмісту

Інциденти CRA (Cyber Resilience Act)

Модуль Інциденти CRA допомагає виконати обов’язок звітування зі ст. 14 загальноєвропейського Cyber Resilience Act: реєструє активно експлуатовані вразливості та серйозні інциденти, стежить за 24-годинним терміном раннього попередження і готує структурований експорт JSON для подання на платформі ENISA SRP (Single Reporting Platform).

CRA ст. 14 виокремлює три пороги звітування для виробників цифрових продуктів:

ПорігТермінОбсяг
Раннє попередження24гФакт виявлення, компонент, попередня оцінка
Звіт про інцидент72гОпис причини, обсяг, застосовані заходи
Підсумковий звіт14 днівПовна причина, коригувальні заходи, рекомендації

Модуль рахує 24г автоматично від discoveredAt. Решту термінів (72г, 14 днів) відстежуйте вручну, вони поза межами FREE.

Перейдіть до Polski > Інциденти CRA > Record incident. Форма:

ПолеПримітки
TitleКороткий заголовок (обов’язковий)
Affected componentНазва продукту / модуля (наприклад, polski-free, custom-checkout-module)
Affected versionsДіапазон версій (наприклад, <= 2.0.4)
ReporterОсоба, яка зареєструвала звернення
External referenceІдентифікатор з CVE / bug tracker / CVD (опціональний)
Kindactively_exploited_vulnerability, security_incident, near_miss
Severitycritical, high, medium, low
SummaryТехнічний опис (обов’язковий)

Після збереження інцидент має статус Open і обчислений deadlineAt = discoveredAt + 24h.

Для кожного інциденту Open доступна кнопка Dispatch notification. Вона надсилає паралельно:

  • Webhook (POST JSON) на URL з опції polski_cra_incident_webhook
  • Email з підсумком на адресу з опції polski_cra_incident_email

Обидві опції налаштовуються в Polski > Settings > CRA incidents. Після отримання відповіді 2xx з webhook або успішного надсилання email інцидент переходить у статус Notified і зберігає notifiedAt.

Дія Export JSON у списку повертає файл cra-incident-<id>-<timestamp>.json із заголовком Content-Type: application/json. Форма відповідає проєкту схеми ENISA Single Reporting Platform, поля охоплюють: ідентифікацію виробника, компонента, часу виявлення, оцінку серйозності, категорію інциденту та опис.

Приклад:

{
"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": "..."
}
// Після реєстрації інциденту (перед сповіщенням).
add_action('polski_cra_incident_recorded', function (int $id, $incident): void {
// власна інтеграція: Jira, PagerDuty, Slack
}, 10, 2);
// Коли до терміну 24г залишилось менше ніж 2г.
add_action('polski_cra_incident_deadline_approaching', function ($incident): void {
// ескалація до DPO
});

Версія 2.1.0 створює таблицю {$wpdb->prefix}polski_cra_incidents. Міграція запускається автоматично при активації, якщо не спрацювала, виконайте вручну:

Okno terminala
wp polski migrate --module=cra
  • UI та дії: manage_woocommerce
  • Webhook/email: налаштовуються довільно (немає вимоги прав, це вихідні канали)
  • Модуль не відстежує автоматично поріг 72г / 14 днів (лише 24г)
  • Виявлення інцидентів є ручним, ми не скануємо логи
  • Webhook не має підпису HMAC (планується в PRO)
  • Форма не підтримує бінарних вкладень, додавайте їх до звернення в ENISA SRP вручну