Files
breakpilot-compliance/ai-compliance-sdk/internal/iace/measures_library_cra.go
T
Benjamin Admin 4a5924b8c4 feat(iace): CRA / DIN EN 40000-1-2 cyber-resilience spur
[guardrail-change]

Phase 18 adds an EU Cyber Resilience Act compliance track to IACE:
the engine now fires patterns that surface the manufacturer-side CRA
obligations whenever a project's components carry digital elements.

Patterns (HP1910-HP1918, hazard_patterns_cra.go):
  HP1910  Missing SBOM
  HP1911  Unsigned firmware/software updates
  HP1912  Factory-default credentials still active
  HP1913  No coordinated vulnerability disclosure (CVD) policy
  HP1914  No documented security patch SLA
  HP1915  Missing user-facing hardening guide
  HP1916  No incident-notification process to ENISA / CSIRT
  HP1917  No security assessment prior to placing on market
  HP1918  AI component without cybersecurity risk assessment

Each pattern carries ClarificationQuestionsDE so the operator gets
auditor-grade questions to take back to the Anlagenbauer instead of
the engine inventing prose. PatternMatch carries DefaultAvoidability
(P=1 for all CRA patterns), feeding the PLr graph from Phase 17.

Measures (M540-M548, measures_library_cra.go):
  M540  SBOM (SPDX or CycloneDX) with each machine release
  M541  Signed updates with rollback protection
  M542  Forced default-password change at first boot
  M543  Published CVD policy (security.txt / PSIRT)
  M544  Documented patch SLA with CVSS-tier response times
  M545  User-facing hardening guide in the machine docs
  M546  ENISA incident-notification process (24h/72h/14d)
  M547  Authenticated update channel + integrity check
  M548  Pre-market security assessment / pen-test

The library is urheberrechtlich neutral: identifiers only
(Verordnung (EU) 2024/2847, DIN EN 40000-1-2 Entwurf, IEC 62443,
ETSI EN 303 645, ISO/IEC 5962, ISO/IEC 29147). No normative text
is reproduced — DIN/Beuth proprietary content is referenced by
section number only.

Category-compatibility:
  cyber_resilience pattern category accepts measures with
  HazardCategory cyber_resilience, cyber_network, or
  software_control. Updated in both the runtime helper
  (iace_handler_init_helpers.go) and its test-mirror
  (pattern_coverage_test.go) — both must move in lockstep.

Frontend (clarifications page):
  When at least one clarification references "2024/2847" or
  "40000-1-2" in its norm_references, a blue info-banner is
  rendered at the top of the page:
    "Cyber Resilience Act (CRA) — Hinweis zur Geltung
     Diese Klärungsliste enthält Fragen zur Verordnung (EU)
     2024/2847 (CRA). Die CRA gilt für Produkte mit digitalen
     Elementen, die ab dem 11.12.2027 auf dem EU-Markt bereit-
     gestellt werden. ..."
  Reminds the user that the CRA pflichten are forward-looking
  while still allowing the manufacturer to bake them in now.

LOC exceptions:
  Added three pre-existing files to .claude/rules/loc-exceptions.txt
  (manufacturer_safety_features.go, iace_handler_clarifications.go,
  routes.go). All three grew across Phases 16-17 and are tagged as
  Phase 5+ refactor backlog. [guardrail-change] marker required.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 02:15:51 +02:00

71 lines
7.6 KiB
Go

package iace
// GetCRAMeasures returns measures specific to the EU Cyber Resilience Act
// (Verordnung (EU) 2024/2847, CRA). They cover the obligations the CRA
// imposes on manufacturers of "products with digital elements" — SBOM,
// vulnerability handling, secure updates, security documentation, incident
// notification. Identifiers and short obligation summaries only — the
// regulation itself is EU law and freely reproducible, but the harmonised
// standard DIN EN 40000-1-2 (Entwurf) is DIN/Beuth proprietary and is
// referenced by identifier only.
//
// M-ID range: M540-M548.
func GetCRAMeasures() []ProtectiveMeasureEntry {
return []ProtectiveMeasureEntry{
{ID: "M540", ReductionType: "information", SubType: "documentation",
Name: "Software Bill of Materials (SBOM) erstellen und mit der Maschine ausliefern",
Description: "Der Anlagenbauer fuehrt eine maschinenlesbare Komponentenliste aller in der Steuerungs- und Anwendungssoftware enthaltenen Module (inkl. Open-Source-Bibliotheken, Lizenzen und Versionen) in einem Standardformat (SPDX oder CycloneDX). Die SBOM wird mit der Maschine uebergeben und bei Updates aktualisiert. Sie ist Grundlage fuer das Schwachstellen-Management nach CRA.",
HazardCategory: "cyber_resilience",
Examples: []string{"SBOM im CycloneDX-JSON-Format auf Wartungs-USB", "SPDX-Datei im Geraete-Webinterface unter /system/sbom"},
NormReferences: []string{"Verordnung (EU) 2024/2847 (CRA)", "DIN EN 40000-1-2 (Entwurf)", "ISO/IEC 5962 (SPDX)"}},
{ID: "M541", ReductionType: "design", SubType: "secure_update",
Name: "Signierte Software- und Firmware-Updates mit Rollback-Schutz",
Description: "Updates der Steuerungs-, Roboter- und Visualisierungssoftware werden ausschliesslich kryptographisch signiert ausgeliefert. Die Steuerung prueft die Signatur vor der Installation und verweigert das Einspielen unsignierter Pakete. Ein Rollback-Schutz verhindert das Downgraden auf nachweislich verwundbare Versionen.",
HazardCategory: "cyber_resilience",
Examples: []string{"X.509-signierte Update-Pakete mit Root-CA des Herstellers", "TPM-gestuetzter Boot-Pfad mit Versions-Counter"},
NormReferences: []string{"Verordnung (EU) 2024/2847 (CRA), Anhang I", "DIN EN 40000-1-2 (Entwurf)", "IEC 62443-4-1"}},
{ID: "M542", ReductionType: "design", SubType: "auth",
Name: "Initiale Default-Passwoerter beim ersten Start erzwungen aendern",
Description: "Die Maschine fordert beim ersten Hochfahren zwingend die Aenderung aller werkseitigen Default-Passwoerter (Bediener, Wartung, Admin). Default-Credentials werden nicht in Klartext in der Dokumentation veroeffentlicht, sondern dem Betreiber separat (versiegelt) uebergeben. Eine Wiederherstellung auf Default-Credentials ist nur ueber physischen Zugriff moeglich.",
HazardCategory: "cyber_resilience",
Examples: []string{"First-Boot-Wizard mit Passwort-Komplexitaetspruefung", "Versiegeltes Werks-Passwort-Tag am HMI"},
NormReferences: []string{"Verordnung (EU) 2024/2847 (CRA), Anhang I", "DIN EN 40000-1-2 (Entwurf)", "ETSI EN 303 645"}},
{ID: "M543", ReductionType: "information", SubType: "process",
Name: "CVD-Policy (Coordinated Vulnerability Disclosure) veroeffentlichen",
Description: "Der Hersteller veroeffentlicht eine Coordinated-Vulnerability-Disclosure-Policy: Eine eindeutige Kontaktstelle (E-Mail, PGP-Key oder Web-Formular) ermoeglicht die vertrauliche Meldung von Schwachstellen. Antwort- und Behebungsfristen sind dokumentiert. Die Policy wird mit der Maschinendokumentation ausgeliefert und auf der Hersteller-Website publiziert.",
HazardCategory: "cyber_resilience",
Examples: []string{"security.txt nach RFC 9116 auf Hersteller-Website", "PSIRT-Kontakt mit PGP-Public-Key in der Betriebsanleitung"},
NormReferences: []string{"Verordnung (EU) 2024/2847 (CRA), Art. 11", "DIN EN 40000-1-2 (Entwurf)", "ISO/IEC 29147"}},
{ID: "M544", ReductionType: "information", SubType: "process",
Name: "Patch-SLA mit Severity-Tiers dokumentieren",
Description: "Der Hersteller dokumentiert verbindliche Reaktionszeiten fuer Sicherheits-Updates abhaengig von der CVSS-Schwere: Kritisch (CVSS 9.0+): Patch innerhalb von 30 Tagen; Hoch (7.0+): 90 Tage; Mittel (4.0+): 180 Tage. Die Patch-SLA wird mit der Lieferung uebergeben. Erforderlich fuer den gesamten CRA-Supportzeitraum (typ. 5 Jahre, max. erwartete Nutzungsdauer).",
HazardCategory: "cyber_resilience",
Examples: []string{"Sicherheits-Support-Erklaerung im Vertrag", "Online-Statusseite mit Roadmap der CVE-Reaktionen"},
NormReferences: []string{"Verordnung (EU) 2024/2847 (CRA), Art. 13", "DIN EN 40000-1-2 (Entwurf)"}},
{ID: "M545", ReductionType: "information", SubType: "documentation",
Name: "Cybersecurity-Hardening-Guide fuer den Anwender beilegen",
Description: "Die mit der Maschine ausgelieferte Dokumentation enthaelt einen Cybersecurity-Hardening-Guide: empfohlene Netzwerk-Segmentierung, deaktivierbare Dienste, sichere Konfiguration aller eingebauten Komponenten (PLC, HMI, Roboter), Empfehlungen zur Benutzer-Verwaltung. Der Guide wird bei Update-Releases gepflegt.",
HazardCategory: "cyber_resilience",
Examples: []string{"Kapitel 'Sichere Inbetriebnahme' in der Betriebsanleitung", "Separater PDF-Guide mit aktualisierter Pflege"},
NormReferences: []string{"Verordnung (EU) 2024/2847 (CRA), Anhang II", "DIN EN 40000-1-2 (Entwurf)", "IEC 62443-3-3"}},
{ID: "M546", ReductionType: "information", SubType: "process",
Name: "Incident-Meldeprozess an ENISA / nationale CSIRT definieren",
Description: "Der Hersteller hat einen dokumentierten Prozess fuer die Meldung aktiv ausgenutzter Schwachstellen und schwerer Sicherheitsvorfaelle an ENISA bzw. die zustaendige nationale Stelle gemaess CRA-Pflichten (Erstmeldung innerhalb von 24 h, Update binnen 72 h, Abschlussbericht binnen 14 Tagen).",
HazardCategory: "cyber_resilience",
Examples: []string{"Interner PSIRT-Workflow mit Eskalationsmatrix", "Vorlage Meldebogen 'ENISA Initial Notification'"},
NormReferences: []string{"Verordnung (EU) 2024/2847 (CRA), Art. 14", "Richtlinie (EU) 2022/2555 (NIS2)"}},
{ID: "M547", ReductionType: "design", SubType: "secure_update",
Name: "Updates ueber authentisierten Kanal mit Integritaetspruefung",
Description: "Der Update-Kanal (Online-Pull oder USB-Push) ist gegen Manipulation gesichert: TLS-1.3 mit Zertifikatspruefung bei Online-Updates, Hash-Pruefung der Update-Datei vor dem Anwenden. Der Update-Prozess ist atomar: bei Abbruch bleibt die alte Version lauffaehig.",
HazardCategory: "cyber_resilience",
Examples: []string{"HTTPS-Update-Endpoint mit Pin der Hersteller-CA", "A/B-Slot-Update mit Roll-Back bei Boot-Fehler"},
NormReferences: []string{"Verordnung (EU) 2024/2847 (CRA), Anhang I", "DIN EN 40000-1-2 (Entwurf)", "IEC 62443-4-2"}},
{ID: "M548", ReductionType: "information", SubType: "validation",
Name: "Sicherheitsbewertung / Penetrationstest vor Inverkehrbringen",
Description: "Vor dem erstmaligen Inverkehrbringen wird eine dokumentierte Sicherheitsbewertung der Maschine durchgefuehrt (mind. statische Analyse + Schwachstellen-Scan, bei hoeherem Risiko: Penetrationstest durch unabhaengige Stelle). Die Ergebnisse werden in der technischen Dokumentation aufbewahrt und bei wesentlichen Aenderungen wiederholt.",
HazardCategory: "cyber_resilience",
Examples: []string{"Statische Code-Analyse + OWASP-Dependency-Check im CI", "Penetrationstest-Bericht eines akkreditierten Labors"},
NormReferences: []string{"Verordnung (EU) 2024/2847 (CRA), Anhang I", "DIN EN 40000-1-2 (Entwurf)", "ISO/IEC 15408 (Common Criteria)"}},
}
}