'use client' import { useState } from 'react' interface GuidelineItem { req_id: string title: string category: string annex_anchor: string severity: string effort_days?: number measures: { id: string; name: string }[] source?: string } interface ReadinessResult { in_scope: boolean classification: string rationale: string[] conformity_path_hint: string regulations: string[] guideline: { code: GuidelineItem[]; process: GuidelineItem[]; document: GuidelineItem[] } counts: { code: number; process: number; document: number } total_effort_days: number deadlines: { date: string; label: string }[] } const CLASS_LABEL: Record = { CRITICAL: 'Kritisch', IMPORTANT_II: 'Wichtig (Klasse II)', IMPORTANT_I: 'Wichtig (Klasse I)', STANDARD: 'Standard', NOT_IN_SCOPE: 'Nicht im CRA-Anwendungsbereich', } const BUCKETS: { key: 'code' | 'process' | 'document'; label: string; hint: string }[] = [ { key: 'code', label: 'Code / Technik', hint: 'im Produkt umzusetzen' }, { key: 'process', label: 'Prozesse', hint: 'organisatorisch zu etablieren' }, { key: 'document', label: 'Dokumentation', hint: 'nachzuweisen / beizulegen' }, ] export function ReadinessCheck({ onCreateProject }: { onCreateProject?: () => void }) { const [intendedUse, setIntendedUse] = useState('') const [flags, setFlags] = useState>({}) const [result, setResult] = useState(null) const [loading, setLoading] = useState(false) const toggle = (k: string) => setFlags((f) => ({ ...f, [k]: !f[k] })) const run = async () => { setLoading(true) try { const res = await fetch('/api/v1/cra/readiness', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ intended_use: intendedUse, ...flags }), }) setResult(res.ok ? await res.json() : null) } finally { setLoading(false) } } const QUESTIONS: { k: string; label: string }[] = [ { k: 'is_machinery', label: 'Ist das Produkt eine Maschine oder Anlage?' }, { k: 'connected_to_internet', label: 'Ist das Produkt mit Netzwerken oder dem Internet verbunden?' }, { k: 'has_firmware', label: 'Enthält das Produkt Software oder Firmware?' }, { k: 'has_software_updates', label: 'Werden Software- oder Firmware-Updates bereitgestellt?' }, { k: 'remote_maintenance', label: 'Gibt es Fernwartungszugänge?' }, { k: 'user_parameter_app', label: 'Gibt es eine App oder Weboberfläche für Nutzer?' }, { k: 'processes_personal_data', label: 'Werden personenbezogene Daten verarbeitet?' }, { k: 'is_critical_infra_supplier', label: 'Wird das Produkt in kritischen Umgebungen oder Infrastrukturen eingesetzt?' }, ] return (

CRA-Readiness-Check

Vernetzte Produkte und Maschinen treffen ab 2027 gleich zwei neue regulatorische Anforderungen:

  • Cyber Resilience Act (CRA) — Herstellerpflichten ab 11.12.2027
  • Maschinenverordnung (EU) 2023/1230 — Anwendung ab 20.01.2027

Während der CRA die Cybersecurity vernetzter Produkte über ihren gesamten Lebenszyklus regelt, verlangt die neue Maschinenverordnung Schutzmaßnahmen gegen digitale Manipulationen, soweit diese Auswirkungen auf die Sicherheit von Personen haben können.

Mit wenigen Fragen erhalten Sie eine erste Einschätzung, welche Anforderungen für Ihr Produkt relevant werden und welche Maßnahmen in den Bereichen Entwicklung, Dokumentation, Risikobeurteilung, Updates und Prozesse erforderlich sind.

Der CRA verlangt mehr als einen jährlichen Penetrationstest: Hersteller müssen Cyber-Risiken über den gesamten Produktlebenszyklus bewerten, dokumentieren und behandeln — von der Entwicklung bis zur Bereitstellung von Sicherheitsupdates.

Wir prüfen nicht nur die CRA-Konformität — wir übersetzen regulatorische Anforderungen direkt in Risiken, Maßnahmen, Tickets, Evidenzen und technische Umsetzungsaufgaben. (We turn regulation into code.)