package iace

// GetCRAPatterns returns hazard patterns for the EU Cyber Resilience Act
// compliance track. They fire when a project's components carry digital
// elements (software, network, AI) and therefore fall under the CRA.
//
// The CRA itself (Verordnung (EU) 2024/2847) became force-of-law on
// 11 December 2024 and applies to products with digital elements placed
// on the EU market from 11 December 2027. The harmonised standard for
// machinery is DIN EN 40000-1-2 (Entwurf November 2025).
//
// Identifiers only — no normative text is reproduced.
//
// HP range: HP1910-HP1918.
func GetCRAPatterns() []HazardPattern {
	return []HazardPattern{
		{
			ID: "HP1910", NameDE: "Fehlende Software-Stueckliste (SBOM) fuer die Maschine", NameEN: "Missing Software Bill of Materials (SBOM)",
			RequiredComponentTags: []string{"has_software"},
			GeneratedHazardCats:   []string{"cyber_resilience"},
			SuggestedMeasureIDs:   []string{"M540"},
			Priority: 70,
			ApplicableLifecycles: []string{"normal_operation", "maintenance"},
			ScenarioDE:  "Die Maschine enthaelt Software-Komponenten (PLC-Firmware, HMI, Roboter-Controller). Wird keine maschinenlesbare Komponentenliste mitgeliefert, kann der Betreiber im Falle einer veroeffentlichten Schwachstelle (CVE) nicht feststellen, ob seine Maschine betroffen ist.",
			TriggerDE:   "Veroeffentlichung einer Sicherheitsluecke in einer mitverwendeten Bibliothek (z.B. log4j, OpenSSL); Audit-Anfrage des Betreibers; Schwachstellenmeldung durch Forscher.",
			HarmDE:      "Cybersecurity-Folgeschaden: nicht behebbare Schwachstelle, Maschinen-Stillstand bei Behoerden-Audit, Reputations- und Haftungsrisiko.",
			AffectedDE:  "Betreiber, IT-/OT-Verantwortliche, Anlagenbauer",
			ZoneDE:      "Maschinendokumentation, Software-Auslieferung",
			ISO12100Section: "6.3.5.7",
			ClarificationQuestionsDE: []string{
				"Wird eine SBOM (SPDX oder CycloneDX) mit jeder Maschine bzw. jedem Software-Release ausgeliefert?",
				"Sind alle Open-Source-Bibliotheken in der SBOM mit Version und Lizenz inventarisiert?",
				"Wie wird die SBOM bei einem Software-Update aktualisiert?",
			},
			DefaultSeverity: 3, DefaultExposure: 4, DefaultAvoidability: 1,
		},
		{
			ID: "HP1911", NameDE: "Updates ohne kryptographische Signatur einspielbar", NameEN: "Unsigned firmware/software updates accepted",
			RequiredComponentTags: []string{"has_software", "networked"},
			GeneratedHazardCats:   []string{"cyber_resilience"},
			SuggestedMeasureIDs:   []string{"M541", "M547"},
			Priority: 90,
			ApplicableLifecycles: []string{"maintenance", "fault_clearing"},
			ScenarioDE:  "Software- oder Firmware-Updates der Maschine koennen ohne Pruefung einer Hersteller-Signatur eingespielt werden. Ein Angreifer mit physischem oder Netzwerk-Zugriff kann manipulierte Updates aufspielen und die Maschinensicherheit kompromittieren.",
			TriggerDE:   "Update-USB an HMI angesteckt; ungesicherter Update-Endpoint im Netzwerk erreichbar; Service-Techniker bringt nicht authentifiziertes Update mit.",
			HarmDE:      "Kompromittierung der Steuerung mit Folgewirkung auf Maschinensicherheit (z.B. Deaktivieren von Sicherheitsfunktionen, Manipulation von Achs-Limits, Daten-Diebstahl).",
			AffectedDE:  "Bedienpersonal, Wartungspersonal, Betreiber",
			ZoneDE:      "Steuerung, HMI, Update-Schnittstellen",
			ISO12100Section: "6.3.5.7",
			ClarificationQuestionsDE: []string{
				"Werden alle Software-/Firmware-Updates kryptographisch signiert ausgeliefert?",
				"Prueft die Maschine die Signatur vor dem Anwenden eines Updates und verweigert unsignierte Pakete?",
				"Ist ein Rollback auf nachweislich verwundbare Versionen durch einen Versions-Counter blockiert?",
			},
			DefaultSeverity: 4, DefaultExposure: 2, DefaultAvoidability: 1,
		},
		{
			ID: "HP1912", NameDE: "Werkseitige Default-Passwoerter bleiben im Betrieb aktiv", NameEN: "Factory-default credentials remain active in production",
			RequiredComponentTags: []string{"has_software", "user_interface"},
			GeneratedHazardCats:   []string{"cyber_resilience"},
			SuggestedMeasureIDs:   []string{"M542"},
			Priority: 85,
			ApplicableLifecycles: []string{"setup", "normal_operation"},
			ScenarioDE:  "Die Maschine wird mit werkseitigen Standard-Passwoertern (z.B. admin/admin, 1234, Werks-Default-PIN) ausgeliefert. Werden diese nicht beim ersten Hochfahren zwangsweise geaendert, sind sie ueblicherweise oeffentlich bekannt.",
			TriggerDE:   "Inbetriebnahme ohne Initialisierungs-Wizard; Werks-Reset durch unbefugte Person; Werks-Default in Online-Listen veroeffentlicht.",
			HarmDE:      "Unautorisierter Zugriff auf Bediener-/Wartungsebene, Manipulation der Maschinen-Konfiguration, Abgriff von Produktions-/Personendaten.",
			AffectedDE:  "Betreiber, IT-/OT-Verantwortliche",
			ZoneDE:      "HMI, Wartungs-Login, Remote-Service-Zugang",
			ISO12100Section: "6.3.5.7",
			ClarificationQuestionsDE: []string{
				"Erzwingt die Maschine beim ersten Hochfahren die Aenderung aller werkseitigen Default-Passwoerter?",
				"Sind die werkseitigen Credentials in der oeffentlichen Dokumentation NICHT enthalten?",
				"Wie wird ein Werks-Reset gegen unbefugten Zugriff geschuetzt?",
			},
			DefaultSeverity: 3, DefaultExposure: 3, DefaultAvoidability: 1,
		},
		{
			ID: "HP1913", NameDE: "Keine veroeffentlichte CVD-Policy (Vulnerability Disclosure)", NameEN: "No coordinated vulnerability disclosure policy",
			RequiredComponentTags: []string{"has_software"},
			GeneratedHazardCats:   []string{"cyber_resilience"},
			SuggestedMeasureIDs:   []string{"M543"},
			Priority: 70,
			ApplicableLifecycles: []string{"normal_operation"},
			ScenarioDE:  "Der Anlagenbauer hat keine veroeffentlichte Kontaktstelle fuer die Meldung von Schwachstellen. Externe Sicherheitsforscher oder Kunden finden keinen Weg, Schwachstellen vertraulich zu melden — diese werden im Zweifel ungefiltert oeffentlich (Full-Disclosure).",
			TriggerDE:   "Sicherheitsforscher findet Schwachstelle, kein PSIRT-Kontakt; Kunde will Schwachstelle melden, scheitert an Erreichbarkeit.",
			HarmDE:      "Veroeffentlichung von Schwachstellen ohne Patch verfuegbar (0-day in der Wildbahn), Reputationsverlust, Behoerden-Sanktion nach CRA.",
			AffectedDE:  "Hersteller, Betreiber, Sicherheitsforscher",
			ZoneDE:      "Hersteller-Website, Dokumentation",
			ISO12100Section: "6.3.5.7",
			ClarificationQuestionsDE: []string{
				"Existiert eine veroeffentlichte CVD-Policy mit eindeutiger Meldekontaktstelle?",
				"Ist eine security.txt nach RFC 9116 auf der Hersteller-Website hinterlegt?",
				"Sind Antwort- und Behebungsfristen in der Policy dokumentiert?",
			},
			DefaultSeverity: 2, DefaultExposure: 3, DefaultAvoidability: 1,
		},
		{
			ID: "HP1914", NameDE: "Keine dokumentierte Patch-SLA fuer Sicherheits-Updates", NameEN: "No documented security patch SLA",
			RequiredComponentTags: []string{"has_software"},
			GeneratedHazardCats:   []string{"cyber_resilience"},
			SuggestedMeasureIDs:   []string{"M544"},
			Priority: 70,
			ApplicableLifecycles: []string{"normal_operation"},
			ScenarioDE:  "Der Hersteller hat keine verbindlichen Reaktionszeiten fuer Sicherheits-Patches definiert. Im Schwachstellenfall ist offen, wie schnell ein Patch geliefert wird — Betreiber kann sein Risiko nicht steuern.",
			TriggerDE:   "CVE wird veroeffentlicht; Betreiber fragt Patch-Termin an; Hersteller hat keine SLA und kann keinen Termin nennen.",
			HarmDE:      "Lange Exposition gegenueber bekannter Schwachstelle; Verstoss gegen CRA-Pflichten zur Schwachstellenbehandlung.",
			AffectedDE:  "Hersteller, Betreiber, IT-/OT-Verantwortliche",
			ZoneDE:      "Vertrags-/Dokumentationsebene",
			ISO12100Section: "6.3.5.7",
			ClarificationQuestionsDE: []string{
				"Existiert eine dokumentierte Patch-SLA mit CVSS-abhaengigen Reaktionszeiten?",
				"Welcher Sicherheits-Supportzeitraum wird zugesagt (CRA-Mindest: erwartete Nutzungsdauer, typ. 5 Jahre)?",
				"Wird die SLA mit der Maschine ausgeliefert oder vertraglich vereinbart?",
			},
			DefaultSeverity: 2, DefaultExposure: 3, DefaultAvoidability: 1,
		},
		{
			ID: "HP1915", NameDE: "Fehlende Cybersecurity-Anwender-Dokumentation (Hardening-Guide)", NameEN: "Missing user-facing cybersecurity hardening guide",
			RequiredComponentTags: []string{"has_software", "networked"},
			GeneratedHazardCats:   []string{"cyber_resilience"},
			SuggestedMeasureIDs:   []string{"M545"},
			Priority: 65,
			ApplicableLifecycles: []string{"setup", "normal_operation"},
			ScenarioDE:  "Der Betreiber erhaelt keine Anleitung zur sicheren Inbetriebnahme und Konfiguration der Maschine im Werks-Netzwerk. Konfigurations-Fehler (offene Ports, ungehaerteter Default-Zustand) bleiben unentdeckt.",
			TriggerDE:   "Inbetriebnahme der Maschine im IT/OT-Netzwerk; Sicherheits-Audit beim Betreiber.",
			HarmDE:      "Angreifbares Konfigurations-Profil, das vom Standardzustand der Maschine vererbt wurde; Verstoss gegen CRA Anhang II (Anwender-Information).",
			AffectedDE:  "Betreiber, IT-/OT-Verantwortliche",
			ZoneDE:      "Maschinen-Konfiguration, Netzwerk-Anbindung",
			ISO12100Section: "6.3.5.7",
			ClarificationQuestionsDE: []string{
				"Liegt der Maschine ein Cybersecurity-Hardening-Guide bei (Netzwerk-Segmentierung, deaktivierbare Dienste, sichere Konfiguration)?",
				"Wird der Guide bei Updates gepflegt?",
				"Enthaelt die Betriebsanleitung ein Kapitel 'Sichere Inbetriebnahme'?",
			},
			DefaultSeverity: 2, DefaultExposure: 3, DefaultAvoidability: 1,
		},
		{
			ID: "HP1916", NameDE: "Kein definierter Meldeprozess fuer Sicherheitsvorfaelle an ENISA/CSIRT", NameEN: "No incident notification process to ENISA / national CSIRT",
			RequiredComponentTags: []string{"has_software"},
			GeneratedHazardCats:   []string{"cyber_resilience"},
			SuggestedMeasureIDs:   []string{"M546"},
			Priority: 75,
			ApplicableLifecycles: []string{"normal_operation"},
			ScenarioDE:  "Der Hersteller hat keinen internen Prozess, um aktiv ausgenutzte Schwachstellen oder schwere Sicherheitsvorfaelle innerhalb der CRA-Meldefristen (24 h / 72 h / 14 Tage) an ENISA bzw. die zustaendige nationale Stelle zu melden.",
			TriggerDE:   "Schwachstelle wird in der Wildbahn ausgenutzt; Sicherheitsvorfall bei einem Kunden gemeldet.",
			HarmDE:      "Versaeumte Meldefrist nach CRA Art. 14 — Bussgeldrisiko, Verlust der CE-Konformitaetsvermutung.",
			AffectedDE:  "Hersteller, Compliance/PSIRT-Team",
			ZoneDE:      "Hersteller-Prozesse",
			ISO12100Section: "6.3.5.7",
			ClarificationQuestionsDE: []string{
				"Existiert ein dokumentierter Incident-Notification-Prozess mit Eskalationsmatrix?",
				"Sind die CRA-Meldefristen (Erstmeldung 24 h, Update 72 h, Abschluss 14 Tage) als interne SLA umgesetzt?",
				"Ist die zustaendige nationale CSIRT-Stelle ermittelt und der Meldekanal getestet?",
			},
			DefaultSeverity: 3, DefaultExposure: 2, DefaultAvoidability: 1,
		},
		{
			ID: "HP1917", NameDE: "Keine Sicherheitsbewertung vor Inverkehrbringen (Pen-Test / Static Analysis)", NameEN: "No security assessment prior to placing on market",
			RequiredComponentTags: []string{"has_software"},
			GeneratedHazardCats:   []string{"cyber_resilience"},
			SuggestedMeasureIDs:   []string{"M548"},
			Priority: 70,
			ApplicableLifecycles: []string{"setup"},
			ScenarioDE:  "Vor dem erstmaligen Inverkehrbringen wurde keine dokumentierte Sicherheitsbewertung (mind. statische Code-Analyse + Schwachstellen-Scan) durchgefuehrt. Bekannte Schwachstellen-Klassen gelangen unbemerkt in die Auslieferung.",
			TriggerDE:   "Inverkehrbringen einer neuen Maschinen-Variante oder eines Major-Updates; behoerdlicher Konformitaetsnachweis.",
			HarmDE:      "Auslieferung von Maschinen mit bekannten Schwachstellen; Verstoss gegen CRA Anhang I (Cybersecurity-Anforderungen).",
			AffectedDE:  "Hersteller, Betreiber",
			ZoneDE:      "Entwicklungs-/Auslieferungsprozess",
			ISO12100Section: "6.3.5.7",
			ClarificationQuestionsDE: []string{
				"Wird vor jedem Major-Release eine dokumentierte Sicherheitsbewertung durchgefuehrt?",
				"Sind statische Analyse und Dependency-Scan in den CI-Pipeline integriert?",
				"Werden bei erhoehtem Risiko Penetrationstests durch unabhaengige Stellen durchgefuehrt?",
			},
			DefaultSeverity: 3, DefaultExposure: 2, DefaultAvoidability: 1,
		},
		{
			ID: "HP1918", NameDE: "AI-Komponente ohne Cybersecurity-Risikobetrachtung", NameEN: "AI component without cybersecurity risk assessment",
			RequiredComponentTags: []string{"has_ai"},
			GeneratedHazardCats:   []string{"cyber_resilience"},
			SuggestedMeasureIDs:   []string{"M548", "M545"},
			Priority: 75,
			ApplicableLifecycles: []string{"normal_operation"},
			ScenarioDE:  "Die Maschine enthaelt KI-Komponenten (z.B. Bildverarbeitung, anomalie-basierte Wartung). Cybersecurity-spezifische KI-Risiken (Model Inversion, Adversarial Examples, Poisoning des Trainingsdatensatzes) wurden nicht geprueft.",
			TriggerDE:   "Adversarial Input wird ueber Sensor-/HMI-Schnittstelle eingespielt; manipuliertes Update-Modell wird ausgespielt.",
			HarmDE:      "Fehlsteuerung der Maschine durch manipuliertes KI-Modell; mittelbare Sicherheitsfolgen, Datenleckage aus Modell.",
			AffectedDE:  "Bedienpersonal, Betreiber",
			ZoneDE:      "KI-Modul, Modell-Auslieferungspfad",
			ISO12100Section: "6.3.5.7",
			ClarificationQuestionsDE: []string{
				"Sind KI-spezifische Cybersecurity-Risiken (Adversarial Inputs, Poisoning, Model Inversion) im Risikobeurteilungsprozess betrachtet?",
				"Wie wird die Integritaet ausgelieferter KI-Modelle sichergestellt (Signatur, Hash, sichere Auslieferungs-Kanal)?",
				"Existiert ein Monitoring auf ungewoehnliche Eingangsmuster im Betrieb?",
			},
			DefaultSeverity: 3, DefaultExposure: 2, DefaultAvoidability: 1,
		},
	}
}
