diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended2.go b/ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended2.go index f0037db..5602bbf 100644 --- a/ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended2.go +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended2.go @@ -1,8 +1,7 @@ package iace -// GetCyberExtendedPatterns2 returns 35 hazard patterns (HP830-HP864) -// for AI/ML-specific hazards, network/communication failures, -// and human-machine interaction (HMI) issues. +// GetCyberExtendedPatterns2 returns 15 hazard patterns (HP830-HP844) +// for AI/ML-specific hazards in industrial automation systems. func GetCyberExtendedPatterns2() []HazardPattern { return []HazardPattern{ // ================================================================ @@ -237,313 +236,5 @@ func GetCyberExtendedPatterns2() []HazardPattern { ZoneDE: "Alle ueberwachten Verschleissteile und Lager", DefaultSeverity: 4, DefaultExposure: 2, }, - - // ================================================================ - // Netzwerk / Kommunikation (HP845-HP854) - // ================================================================ - { - ID: "HP845", NameDE: "Feldbusausfall (PROFINET/EtherCAT/Modbus)", NameEN: "Fieldbus failure (PROFINET/EtherCAT/Modbus)", - RequiredComponentTags: []string{"networked", "it_component"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure"}, - SuggestedMeasureIDs: []string{"M114", "M115"}, - SuggestedEvidenceIDs: []string{"E01", "E17"}, - Priority: 85, - ScenarioDE: "Kompletter Feldbusausfall trennt SPS von allen Antrieben und Sensoren; Maschine verliert Kontrolle.", - TriggerDE: "Kabelbruch, Switch-Ausfall, EMV-Stoerung, Stecker oxidiert, Master-Ausfall", - HarmDE: "Unkontrollierter Maschinenstillstand, Antriebe im letzten Zustand, Last faellt herab", - AffectedDE: "Bedienpersonal, Personen im Maschinenbereich", - ZoneDE: "Gesamte Maschine (alle Feldbus-Teilnehmer betroffen)", - DefaultSeverity: 4, DefaultExposure: 2, - }, - { - ID: "HP846", NameDE: "Telegrammverlust in Echtzeit-Kommunikation", NameEN: "Telegram loss in real-time communication", - RequiredComponentTags: []string{"networked"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure"}, - SuggestedMeasureIDs: []string{"M114", "M115"}, - SuggestedEvidenceIDs: []string{"E01", "E17"}, - Priority: 80, - ScenarioDE: "Einzelne Telegramme im Echtzeit-Bussystem gehen verloren; Antrieb erhaelt keinen neuen Sollwert und behlt den alten.", - TriggerDE: "EMV-Stoerung, Kabelknicke, Switch-Ueberlast, defekter Busteilnehmer stoert Zyklus", - HarmDE: "Antrieb faehrt mit veraltetem Sollwert weiter, Position stimmt nicht mehr, Kollision", - AffectedDE: "Bedienpersonal bei Mehrachssystemen", - ZoneDE: "Bewegungsbereich der betroffenen Achse, Synchron-Verfahrbereiche", - DefaultSeverity: 4, DefaultExposure: 2, - }, - { - ID: "HP847", NameDE: "Jitter in Synchronisation von Achssystem", NameEN: "Jitter in multi-axis synchronization", - RequiredComponentTags: []string{"networked", "moving_part"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure", "mechanical_hazard"}, - SuggestedMeasureIDs: []string{"M114"}, - SuggestedEvidenceIDs: []string{"E01", "E14", "E17"}, - Priority: 75, - ScenarioDE: "Zeitschwankungen (Jitter) in der Echtzeit-Kommunikation fuehren zu Synchronisationsverlust in Mehrachssystemen.", - TriggerDE: "Ungeeigneter Switch (nicht echtzeitfaehig), Cross-Traffic, falsches VLAN-Setup", - HarmDE: "Achsen laufen auseinander, mechanische Verspannung, Kollision zwischen Achsen", - AffectedDE: "Bedienpersonal an synchronisierten Mehrachssystemen", - ZoneDE: "Gesamter Verfahrbereich der synchronisierten Achsen", - DefaultSeverity: 4, DefaultExposure: 2, - }, - { - ID: "HP848", NameDE: "Gateway-Ausfall zwischen Feld- und Leitebene", NameEN: "Gateway failure between field and control level", - RequiredComponentTags: []string{"networked", "it_component"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure"}, - SuggestedMeasureIDs: []string{"M115"}, - SuggestedEvidenceIDs: []string{"E01", "E17"}, - Priority: 70, - ScenarioDE: "Gateway zwischen Feldbus und Leitebene faellt aus; SCADA verliert Sicht auf Prozess, Alarme kommen nicht durch.", - TriggerDE: "Hardware-Defekt, Software-Absturz, Speicherueberlauf im Gateway, Firmware-Fehler", - HarmDE: "Verlust der Prozessueberwachung, Alarme werden nicht weitergeleitet, Blindflug am Leitstand", - AffectedDE: "Leitstand-Personal, SCADA-Betreiber", - ZoneDE: "Gateway, Uebergabepunkt Feldbus/Ethernet, SCADA-Server", - DefaultSeverity: 3, DefaultExposure: 2, - }, - { - ID: "HP849", NameDE: "Firmware-Inkompatibilitaet nach Update", NameEN: "Firmware incompatibility after update", - RequiredComponentTags: []string{"has_software", "networked"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"update_failure", "communication_failure"}, - SuggestedMeasureIDs: []string{"M138", "M146"}, - SuggestedEvidenceIDs: []string{"E01", "E14"}, - Priority: 75, - ScenarioDE: "Firmware-Update eines Busteilnehmers ist inkompatibel mit der SPS-Version; Kommunikation bricht zusammen.", - TriggerDE: "Teilnehmer einzeln aktualisiert ohne Kompatibilitaetspruefung, Breaking Change in neuer Version", - HarmDE: "Busausfall, Antrieb nicht erreichbar, unkontrollierter Zustand", - AffectedDE: "Wartungspersonal (Update-Vorgang), anschliessend Bedienpersonal", - ZoneDE: "Aktualisierter Busteilnehmer, gesamter Busstrang bei Master-Update", - DefaultSeverity: 3, DefaultExposure: 1, - }, - { - ID: "HP850", NameDE: "IP-Konflikt im Maschinennetzwerk", NameEN: "IP conflict in machine network", - RequiredComponentTags: []string{"networked"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure"}, - SuggestedMeasureIDs: []string{"M114"}, - SuggestedEvidenceIDs: []string{"E01", "E17"}, - Priority: 65, - ScenarioDE: "Zwei Geraete im Maschinennetzwerk haben dieselbe IP-Adresse; Kommunikation ist unzuverlaessig.", - TriggerDE: "Manuelles IP-Management ohne Dokumentation, Ersatzgeraet mit werksseitiger IP, DHCP-Fehler", - HarmDE: "Sporadische Kommunikationsausfaelle, Steuerungsbefehle an falsches Geraet, undeterministisches Verhalten", - AffectedDE: "Bedienpersonal (schwer erkennbare Stoerung)", - ZoneDE: "Maschinennetzwerk, betroffene IP-Teilnehmer", - DefaultSeverity: 3, DefaultExposure: 2, - }, - { - ID: "HP851", NameDE: "Zeitsynchronisation verloren — Sequenzfehler", NameEN: "Time synchronization lost — sequence error", - RequiredComponentTags: []string{"networked", "has_software"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure", "software_fault"}, - SuggestedMeasureIDs: []string{"M114"}, - SuggestedEvidenceIDs: []string{"E01", "E14", "E17"}, - Priority: 75, - ScenarioDE: "PTP/NTP-Synchronisation im Netzwerk geht verloren; zeitgesteuerte Aktionen werden asynchron ausgefuehrt.", - TriggerDE: "Grand-Master-Clock faellt aus, Kabelbruch zum Zeitserver, Switch ohne PTP-Support", - HarmDE: "Achsen bewegen sich nicht mehr synchron, Sequenzen in falscher Reihenfolge", - AffectedDE: "Bedienpersonal bei synchronisierten Anlagen", - ZoneDE: "Alle zeitgesteuerten Stationen und Achsen", - DefaultSeverity: 4, DefaultExposure: 1, - }, - { - ID: "HP852", NameDE: "Bandbreite-Ueberlastung verzoegert Sicherheitsfunktion", NameEN: "Bandwidth overload delays safety function", - RequiredComponentTags: []string{"networked", "safety_device"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure", "safety_function_failure"}, - SuggestedMeasureIDs: []string{"M114", "M115"}, - SuggestedEvidenceIDs: []string{"E01", "E07", "E17"}, - Priority: 85, - ScenarioDE: "Netzwerk-Ueberlastung verzoegert sicherheitsrelevante Telegramme ueber die maximale Reaktionszeit hinaus.", - TriggerDE: "Datenintensiver Prozess (Vision-System) auf gleichem Netzwerk, Broadcast-Storm, fehlende QoS-Konfiguration", - HarmDE: "Sicherheitsfunktion reagiert zu spaet, Nachlaufweg vergroessert sich, Schutzfunktion unwirksam", - AffectedDE: "Bedienpersonal im Schutzbereich der verzoegerten Sicherheitsfunktion", - ZoneDE: "Netzwerkstrecke zum Safety-Controller, gesamter Schutzbereich", - DefaultSeverity: 5, DefaultExposure: 1, - }, - { - ID: "HP853", NameDE: "Fehlerhafte Routing-Konfiguration", NameEN: "Faulty routing configuration", - RequiredComponentTags: []string{"networked", "it_component"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure"}, - SuggestedMeasureIDs: []string{"M114"}, - SuggestedEvidenceIDs: []string{"E01", "E17"}, - Priority: 60, - ScenarioDE: "Falsche Routing-Konfiguration leitet Steuerbefehle an falsches Teilnetz oder laesst sie ins Leere laufen.", - TriggerDE: "Fehlkonfiguration nach Netzwerkaenderung, falsches Default-Gateway, Route Loop", - HarmDE: "Steuerbefehle kommen nicht an, Antriebe reagieren nicht, Fehlzuordnung von Befehlen", - AffectedDE: "Bedienpersonal, Netzwerkadministrator", - ZoneDE: "Router, Layer-3-Switches, Netzwerksegmentierung", - DefaultSeverity: 3, DefaultExposure: 1, - }, - { - ID: "HP854", NameDE: "Switch-Ausfall in Ring-Topologie", NameEN: "Switch failure in ring topology", - RequiredComponentTags: []string{"networked", "it_component"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"communication_failure"}, - SuggestedMeasureIDs: []string{"M115"}, - SuggestedEvidenceIDs: []string{"E01", "E17"}, - Priority: 75, - ScenarioDE: "Managed Switch in Ring-Topologie faellt aus; Ring-Redundanz uebernimmt, aber Umschaltzeit stoert Echtzeit-Kommunikation.", - TriggerDE: "Switch-Hardware-Defekt, Spannungsausfall am Switch, Ring-Rekonfiguration dauert zu lange (>Zykluszeit)", - HarmDE: "Kurzzeitiger Kommunikationsausfall, Antriebe verlieren Sollwerte, Synchronisationsverlust", - AffectedDE: "Bedienpersonal bei zeitkritischen Prozessen", - ZoneDE: "Ring-Netzwerk, alle Teilnehmer hinter dem ausgefallenen Switch", - DefaultSeverity: 3, DefaultExposure: 2, - }, - - // ================================================================ - // Mensch-Maschine-Interaktion / HMI (HP855-HP864) - // ================================================================ - { - ID: "HP855", NameDE: "HMI friert ein — Bediener handelt blind", NameEN: "HMI freezes — operator acts blind", - RequiredComponentTags: []string{"user_interface", "has_software"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"software_fault"}, - SuggestedMeasureIDs: []string{"M103", "M141"}, - SuggestedEvidenceIDs: []string{"E01", "E14"}, - Priority: 80, - ScenarioDE: "HMI-Bildschirm friert ein und zeigt veraltete Prozesswerte; Bediener trifft Entscheidungen auf Basis falscher Anzeige.", - TriggerDE: "Software-Absturz der HMI-Anwendung, Speicherueberlauf, Grafiktreiber-Fehler", - HarmDE: "Fehlbedienung aufgrund veralteter Anzeige, Eingriff in falschen Prozess, verpasster Alarm", - AffectedDE: "Bedienpersonal am eingefrorenen HMI", - ZoneDE: "Leitstand, HMI-Terminal, alle ueberwachten Prozessbereiche", - DefaultSeverity: 4, DefaultExposure: 2, - }, - { - ID: "HP856", NameDE: "Alarmueberschwemmung (Alarm Flooding)", NameEN: "Alarm flooding", - RequiredComponentTags: []string{"user_interface", "has_software"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"ergonomic"}, - SuggestedMeasureIDs: []string{"M141", "M149"}, - SuggestedEvidenceIDs: []string{"E01", "E14"}, - Priority: 80, - ScenarioDE: "Hunderte Alarme erscheinen gleichzeitig; Bediener kann kritischen Alarm nicht identifizieren.", - TriggerDE: "Kaskadenartige Stoerung, schlechtes Alarm-Design, keine Alarm-Priorisierung, zu niedrige Schwellwerte", - HarmDE: "Kritischer Alarm wird uebersehen, verzoegerte Reaktion, falsche Priorisierung", - AffectedDE: "Bedienpersonal am Leitstand", - ZoneDE: "Leitstand, Alarm-Management-System", - DefaultSeverity: 4, DefaultExposure: 3, - }, - { - ID: "HP857", NameDE: "Falscher Betriebsartenwahlschalter", NameEN: "Wrong operating mode selector", - RequiredComponentTags: []string{"user_interface", "programmable"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"configuration_error"}, - SuggestedMeasureIDs: []string{"M145", "M121"}, - SuggestedEvidenceIDs: []string{"E01", "E08"}, - Priority: 85, - ScenarioDE: "Bediener waehlt falsche Betriebsart (z. B. Automatik statt Einrichten); Maschine startet mit voller Geschwindigkeit.", - TriggerDE: "Verwechslung der Betriebsart, Schluesselschalter nicht verriegelt, fehlende Anzeige der aktiven Betriebsart", - HarmDE: "Unerwartete Maschinenbewegung bei voller Geschwindigkeit, Quetschung, Kollision", - AffectedDE: "Einrichter, Bedienpersonal im Maschinenbereich", - ZoneDE: "Gesamte Maschine, insbesondere Bereiche die bei Einrichten zugaenglich sind", - DefaultSeverity: 5, DefaultExposure: 2, - }, - { - ID: "HP858", NameDE: "Display zeigt falschen Prozesswert", NameEN: "Display shows wrong process value", - RequiredComponentTags: []string{"user_interface", "has_software"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"software_fault"}, - SuggestedMeasureIDs: []string{"M101", "M103"}, - SuggestedEvidenceIDs: []string{"E01", "E14"}, - Priority: 75, - ScenarioDE: "HMI zeigt falschen Messwert (z. B. falsche Zuordnung von Sensor zu Anzeige) und Bediener reagiert falsch.", - TriggerDE: "Programmierfehler in der Visualisierung, falscher Tag zugeordnet, Skalierungsfehler", - HarmDE: "Fehlbedienung auf Basis falscher Information, Prozess laeuft aus dem Toleranzbereich", - AffectedDE: "Bedienpersonal, das sich auf die Anzeige verlaesst", - ZoneDE: "HMI-Display, Prozessabbild auf dem Leitstand", - DefaultSeverity: 3, DefaultExposure: 3, - }, - { - ID: "HP859", NameDE: "Bediener umgeht Safety-Login am HMI", NameEN: "Operator bypasses safety login on HMI", - RequiredComponentTags: []string{"user_interface", "has_software"}, - RequiredEnergyTags: []string{"cyber"}, - GeneratedHazardCats: []string{"unauthorized_access", "safety_function_failure"}, - SuggestedMeasureIDs: []string{"M111", "M112"}, - SuggestedEvidenceIDs: []string{"E01", "E16"}, - Priority: 80, - ScenarioDE: "Bediener umgeht Login-Bildschirm am HMI und erlangt Zugang zu sicherheitsrelevanten Parametern.", - TriggerDE: "Gemeinsames Passwort, Post-It mit Passwort am Monitor, Auto-Login konfiguriert", - HarmDE: "Unberechtigte Aenderung von Sicherheitsparametern, Deaktivierung von Schutzfunktionen", - AffectedDE: "Bedienpersonal, alle Personen im Maschinenbereich", - ZoneDE: "HMI-Terminal, Parameterseiten der Steuerung", - DefaultSeverity: 4, DefaultExposure: 3, - }, - { - ID: "HP860", NameDE: "Touch-Fehlbedienung (nasse Finger/Handschuhe)", NameEN: "Touch misoperation (wet fingers/gloves)", - RequiredComponentTags: []string{"user_interface"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"ergonomic"}, - SuggestedMeasureIDs: []string{"M141"}, - SuggestedEvidenceIDs: []string{"E01", "E20"}, - Priority: 65, - ScenarioDE: "Touchscreen reagiert auf nasse Finger, Handschuhe oder Wassertropfen und loest unbeabsichtigte Funktion aus.", - TriggerDE: "Regen, Schwitzhaende, Oelfilm auf Handschuh, Wasserspritzer auf Display", - HarmDE: "Unbeabsichtigtes Starten einer Funktion, Parameterwechsel, Betriebsart-Umschaltung", - AffectedDE: "Bedienpersonal mit Handschuhen oder in nassem Umfeld", - ZoneDE: "Touch-HMI, Panel-PC, mobile Bediengeraete", - DefaultSeverity: 3, DefaultExposure: 3, - }, - { - ID: "HP861", NameDE: "Sprachbarriere bei mehrsprachiger Belegschaft", NameEN: "Language barrier in multilingual workforce", - RequiredComponentTags: []string{"user_interface"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"ergonomic"}, - SuggestedMeasureIDs: []string{"M141"}, - SuggestedEvidenceIDs: []string{"E24", "E25"}, - Priority: 60, - ScenarioDE: "Alarmmeldungen und Sicherheitshinweise am HMI sind nur in einer Sprache; Bediener versteht Warnung nicht.", - TriggerDE: "Einsprachiges HMI, fremdsprachige Zeitarbeitskraefte, fehlende Piktogramme", - HarmDE: "Warnung nicht verstanden, falsche Reaktion auf Alarm, Sicherheitsunterweisung nicht begriffen", - AffectedDE: "Nicht-muttersprachliche Bediener, Zeitarbeitskraefte, Leiharbeiter", - ZoneDE: "HMI-Terminal, Sicherheitsbeschilderung, Alarmanzeigen", - DefaultSeverity: 3, DefaultExposure: 3, - }, - { - ID: "HP862", NameDE: "Nachtschicht-Muedigkeit fuehrt zu Fehlreaktion", NameEN: "Night shift fatigue leads to wrong reaction", - RequiredComponentTags: []string{"user_interface"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"ergonomic"}, - SuggestedMeasureIDs: []string{"M141"}, - SuggestedEvidenceIDs: []string{"E25"}, - Priority: 60, - ScenarioDE: "Muedigkeit in der Nachtschicht verzoegert Reaktionszeit und erhoeht Wahrscheinlichkeit fuer Fehlbedienung.", - TriggerDE: "Lange Schichtdauer, monotone Ueberwachungsaufgabe, fehlende Pausenregelung", - HarmDE: "Verzoegerte Reaktion auf Alarm, Einschlafen am Leitstand, Fehlbedienung", - AffectedDE: "Nachtschicht-Personal, alle von der Ueberwachung abhaengigen Personen", - ZoneDE: "Leitstand, Ueberwachungsstationen", - DefaultSeverity: 3, DefaultExposure: 4, - }, - { - ID: "HP863", NameDE: "Informationsueberlastung am Bedienterminal", NameEN: "Information overload at operator terminal", - RequiredComponentTags: []string{"user_interface", "has_software"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"ergonomic"}, - SuggestedMeasureIDs: []string{"M141"}, - SuggestedEvidenceIDs: []string{"E01", "E14"}, - Priority: 55, - ScenarioDE: "Zu viele Informationen, Trends und Werte auf einem Bildschirm ueberfordern den Bediener kognitiv.", - TriggerDE: "Schlechtes UI-Design, zu viele gleichzeitig angezeigte Werte, fehlende Informationshierarchie", - HarmDE: "Kritische Information wird uebersehen, verzoegerte Erkennung von Anomalien", - AffectedDE: "Bedienpersonal, Leitstand-Operatoren", - ZoneDE: "HMI-Bildschirme, SCADA-Oberflaeche, Leitstand", - DefaultSeverity: 2, DefaultExposure: 4, - }, - { - ID: "HP864", NameDE: "Fehlende Rueckmeldung — Bediener drueckt erneut", NameEN: "Missing feedback — operator presses again", - RequiredComponentTags: []string{"user_interface"}, - RequiredEnergyTags: []string{}, - GeneratedHazardCats: []string{"ergonomic"}, - SuggestedMeasureIDs: []string{"M141"}, - SuggestedEvidenceIDs: []string{"E01", "E14"}, - Priority: 65, - ScenarioDE: "HMI gibt keine Rueckmeldung auf Tastendruck; Bediener drueckt erneut und loest unbeabsichtigte Doppelaktion aus.", - TriggerDE: "Fehlende akustische/visuelle Quittierung, langsame HMI-Reaktion, Netzwerk-Latenz", - HarmDE: "Doppelter Befehl (z. B. doppelter Zyklus-Start), Maschine startet erneut waehrend Entnahme", - AffectedDE: "Bedienpersonal", - ZoneDE: "HMI-Taster/Touchscreen, Gesamte Maschine bei Doppelausloesung", - DefaultSeverity: 3, DefaultExposure: 3, - }, } } diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended3.go b/ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended3.go new file mode 100644 index 0000000..cb79b9e --- /dev/null +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended3.go @@ -0,0 +1,316 @@ +package iace + +// GetCyberExtendedPatterns3 returns 20 hazard patterns (HP845-HP864) +// for network/communication failures and human-machine interaction (HMI) +// hazards in industrial control systems. +func GetCyberExtendedPatterns3() []HazardPattern { + return []HazardPattern{ + // ================================================================ + // Netzwerk / Kommunikation (HP845-HP854) + // ================================================================ + { + ID: "HP845", NameDE: "Feldbusausfall (PROFINET/EtherCAT/Modbus)", NameEN: "Fieldbus failure (PROFINET/EtherCAT/Modbus)", + RequiredComponentTags: []string{"networked", "it_component"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure"}, + SuggestedMeasureIDs: []string{"M114", "M115"}, + SuggestedEvidenceIDs: []string{"E01", "E17"}, + Priority: 85, + ScenarioDE: "Kompletter Feldbusausfall trennt SPS von allen Antrieben und Sensoren; Maschine verliert Kontrolle.", + TriggerDE: "Kabelbruch, Switch-Ausfall, EMV-Stoerung, Stecker oxidiert, Master-Ausfall", + HarmDE: "Unkontrollierter Maschinenstillstand, Antriebe im letzten Zustand, Last faellt herab", + AffectedDE: "Bedienpersonal, Personen im Maschinenbereich", + ZoneDE: "Gesamte Maschine (alle Feldbus-Teilnehmer betroffen)", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP846", NameDE: "Telegrammverlust in Echtzeit-Kommunikation", NameEN: "Telegram loss in real-time communication", + RequiredComponentTags: []string{"networked"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure"}, + SuggestedMeasureIDs: []string{"M114", "M115"}, + SuggestedEvidenceIDs: []string{"E01", "E17"}, + Priority: 80, + ScenarioDE: "Einzelne Telegramme im Echtzeit-Bussystem gehen verloren; Antrieb erhaelt keinen neuen Sollwert und behlt den alten.", + TriggerDE: "EMV-Stoerung, Kabelknicke, Switch-Ueberlast, defekter Busteilnehmer stoert Zyklus", + HarmDE: "Antrieb faehrt mit veraltetem Sollwert weiter, Position stimmt nicht mehr, Kollision", + AffectedDE: "Bedienpersonal bei Mehrachssystemen", + ZoneDE: "Bewegungsbereich der betroffenen Achse, Synchron-Verfahrbereiche", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP847", NameDE: "Jitter in Synchronisation von Achssystem", NameEN: "Jitter in multi-axis synchronization", + RequiredComponentTags: []string{"networked", "moving_part"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure", "mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M114"}, + SuggestedEvidenceIDs: []string{"E01", "E14", "E17"}, + Priority: 75, + ScenarioDE: "Zeitschwankungen (Jitter) in der Echtzeit-Kommunikation fuehren zu Synchronisationsverlust in Mehrachssystemen.", + TriggerDE: "Ungeeigneter Switch (nicht echtzeitfaehig), Cross-Traffic, falsches VLAN-Setup", + HarmDE: "Achsen laufen auseinander, mechanische Verspannung, Kollision zwischen Achsen", + AffectedDE: "Bedienpersonal an synchronisierten Mehrachssystemen", + ZoneDE: "Gesamter Verfahrbereich der synchronisierten Achsen", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP848", NameDE: "Gateway-Ausfall zwischen Feld- und Leitebene", NameEN: "Gateway failure between field and control level", + RequiredComponentTags: []string{"networked", "it_component"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure"}, + SuggestedMeasureIDs: []string{"M115"}, + SuggestedEvidenceIDs: []string{"E01", "E17"}, + Priority: 70, + ScenarioDE: "Gateway zwischen Feldbus und Leitebene faellt aus; SCADA verliert Sicht auf Prozess, Alarme kommen nicht durch.", + TriggerDE: "Hardware-Defekt, Software-Absturz, Speicherueberlauf im Gateway, Firmware-Fehler", + HarmDE: "Verlust der Prozessueberwachung, Alarme werden nicht weitergeleitet, Blindflug am Leitstand", + AffectedDE: "Leitstand-Personal, SCADA-Betreiber", + ZoneDE: "Gateway, Uebergabepunkt Feldbus/Ethernet, SCADA-Server", + DefaultSeverity: 3, DefaultExposure: 2, + }, + { + ID: "HP849", NameDE: "Firmware-Inkompatibilitaet nach Update", NameEN: "Firmware incompatibility after update", + RequiredComponentTags: []string{"has_software", "networked"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"update_failure", "communication_failure"}, + SuggestedMeasureIDs: []string{"M138", "M146"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 75, + ScenarioDE: "Firmware-Update eines Busteilnehmers ist inkompatibel mit der SPS-Version; Kommunikation bricht zusammen.", + TriggerDE: "Teilnehmer einzeln aktualisiert ohne Kompatibilitaetspruefung, Breaking Change in neuer Version", + HarmDE: "Busausfall, Antrieb nicht erreichbar, unkontrollierter Zustand", + AffectedDE: "Wartungspersonal (Update-Vorgang), anschliessend Bedienpersonal", + ZoneDE: "Aktualisierter Busteilnehmer, gesamter Busstrang bei Master-Update", + DefaultSeverity: 3, DefaultExposure: 1, + }, + { + ID: "HP850", NameDE: "IP-Konflikt im Maschinennetzwerk", NameEN: "IP conflict in machine network", + RequiredComponentTags: []string{"networked"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure"}, + SuggestedMeasureIDs: []string{"M114"}, + SuggestedEvidenceIDs: []string{"E01", "E17"}, + Priority: 65, + ScenarioDE: "Zwei Geraete im Maschinennetzwerk haben dieselbe IP-Adresse; Kommunikation ist unzuverlaessig.", + TriggerDE: "Manuelles IP-Management ohne Dokumentation, Ersatzgeraet mit werksseitiger IP, DHCP-Fehler", + HarmDE: "Sporadische Kommunikationsausfaelle, Steuerungsbefehle an falsches Geraet, undeterministisches Verhalten", + AffectedDE: "Bedienpersonal (schwer erkennbare Stoerung)", + ZoneDE: "Maschinennetzwerk, betroffene IP-Teilnehmer", + DefaultSeverity: 3, DefaultExposure: 2, + }, + { + ID: "HP851", NameDE: "Zeitsynchronisation verloren — Sequenzfehler", NameEN: "Time synchronization lost — sequence error", + RequiredComponentTags: []string{"networked", "has_software"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure", "software_fault"}, + SuggestedMeasureIDs: []string{"M114"}, + SuggestedEvidenceIDs: []string{"E01", "E14", "E17"}, + Priority: 75, + ScenarioDE: "PTP/NTP-Synchronisation im Netzwerk geht verloren; zeitgesteuerte Aktionen werden asynchron ausgefuehrt.", + TriggerDE: "Grand-Master-Clock faellt aus, Kabelbruch zum Zeitserver, Switch ohne PTP-Support", + HarmDE: "Achsen bewegen sich nicht mehr synchron, Sequenzen in falscher Reihenfolge", + AffectedDE: "Bedienpersonal bei synchronisierten Anlagen", + ZoneDE: "Alle zeitgesteuerten Stationen und Achsen", + DefaultSeverity: 4, DefaultExposure: 1, + }, + { + ID: "HP852", NameDE: "Bandbreite-Ueberlastung verzoegert Sicherheitsfunktion", NameEN: "Bandwidth overload delays safety function", + RequiredComponentTags: []string{"networked", "safety_device"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M114", "M115"}, + SuggestedEvidenceIDs: []string{"E01", "E07", "E17"}, + Priority: 85, + ScenarioDE: "Netzwerk-Ueberlastung verzoegert sicherheitsrelevante Telegramme ueber die maximale Reaktionszeit hinaus.", + TriggerDE: "Datenintensiver Prozess (Vision-System) auf gleichem Netzwerk, Broadcast-Storm, fehlende QoS-Konfiguration", + HarmDE: "Sicherheitsfunktion reagiert zu spaet, Nachlaufweg vergroessert sich, Schutzfunktion unwirksam", + AffectedDE: "Bedienpersonal im Schutzbereich der verzoegerten Sicherheitsfunktion", + ZoneDE: "Netzwerkstrecke zum Safety-Controller, gesamter Schutzbereich", + DefaultSeverity: 5, DefaultExposure: 1, + }, + { + ID: "HP853", NameDE: "Fehlerhafte Routing-Konfiguration", NameEN: "Faulty routing configuration", + RequiredComponentTags: []string{"networked", "it_component"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure"}, + SuggestedMeasureIDs: []string{"M114"}, + SuggestedEvidenceIDs: []string{"E01", "E17"}, + Priority: 60, + ScenarioDE: "Falsche Routing-Konfiguration leitet Steuerbefehle an falsches Teilnetz oder laesst sie ins Leere laufen.", + TriggerDE: "Fehlkonfiguration nach Netzwerkaenderung, falsches Default-Gateway, Route Loop", + HarmDE: "Steuerbefehle kommen nicht an, Antriebe reagieren nicht, Fehlzuordnung von Befehlen", + AffectedDE: "Bedienpersonal, Netzwerkadministrator", + ZoneDE: "Router, Layer-3-Switches, Netzwerksegmentierung", + DefaultSeverity: 3, DefaultExposure: 1, + }, + { + ID: "HP854", NameDE: "Switch-Ausfall in Ring-Topologie", NameEN: "Switch failure in ring topology", + RequiredComponentTags: []string{"networked", "it_component"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure"}, + SuggestedMeasureIDs: []string{"M115"}, + SuggestedEvidenceIDs: []string{"E01", "E17"}, + Priority: 75, + ScenarioDE: "Managed Switch in Ring-Topologie faellt aus; Ring-Redundanz uebernimmt, aber Umschaltzeit stoert Echtzeit-Kommunikation.", + TriggerDE: "Switch-Hardware-Defekt, Spannungsausfall am Switch, Ring-Rekonfiguration dauert zu lange (>Zykluszeit)", + HarmDE: "Kurzzeitiger Kommunikationsausfall, Antriebe verlieren Sollwerte, Synchronisationsverlust", + AffectedDE: "Bedienpersonal bei zeitkritischen Prozessen", + ZoneDE: "Ring-Netzwerk, alle Teilnehmer hinter dem ausgefallenen Switch", + DefaultSeverity: 3, DefaultExposure: 2, + }, + + // ================================================================ + // Mensch-Maschine-Interaktion / HMI (HP855-HP864) + // ================================================================ + { + ID: "HP855", NameDE: "HMI friert ein — Bediener handelt blind", NameEN: "HMI freezes — operator acts blind", + RequiredComponentTags: []string{"user_interface", "has_software"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M103", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 80, + ScenarioDE: "HMI-Bildschirm friert ein und zeigt veraltete Prozesswerte; Bediener trifft Entscheidungen auf Basis falscher Anzeige.", + TriggerDE: "Software-Absturz der HMI-Anwendung, Speicherueberlauf, Grafiktreiber-Fehler", + HarmDE: "Fehlbedienung aufgrund veralteter Anzeige, Eingriff in falschen Prozess, verpasster Alarm", + AffectedDE: "Bedienpersonal am eingefrorenen HMI", + ZoneDE: "Leitstand, HMI-Terminal, alle ueberwachten Prozessbereiche", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP856", NameDE: "Alarmueberschwemmung (Alarm Flooding)", NameEN: "Alarm flooding", + RequiredComponentTags: []string{"user_interface", "has_software"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"ergonomic"}, + SuggestedMeasureIDs: []string{"M141", "M149"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 80, + ScenarioDE: "Hunderte Alarme erscheinen gleichzeitig; Bediener kann kritischen Alarm nicht identifizieren.", + TriggerDE: "Kaskadenartige Stoerung, schlechtes Alarm-Design, keine Alarm-Priorisierung, zu niedrige Schwellwerte", + HarmDE: "Kritischer Alarm wird uebersehen, verzoegerte Reaktion, falsche Priorisierung", + AffectedDE: "Bedienpersonal am Leitstand", + ZoneDE: "Leitstand, Alarm-Management-System", + DefaultSeverity: 4, DefaultExposure: 3, + }, + { + ID: "HP857", NameDE: "Falscher Betriebsartenwahlschalter", NameEN: "Wrong operating mode selector", + RequiredComponentTags: []string{"user_interface", "programmable"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"configuration_error"}, + SuggestedMeasureIDs: []string{"M145", "M121"}, + SuggestedEvidenceIDs: []string{"E01", "E08"}, + Priority: 85, + ScenarioDE: "Bediener waehlt falsche Betriebsart (z. B. Automatik statt Einrichten); Maschine startet mit voller Geschwindigkeit.", + TriggerDE: "Verwechslung der Betriebsart, Schluesselschalter nicht verriegelt, fehlende Anzeige der aktiven Betriebsart", + HarmDE: "Unerwartete Maschinenbewegung bei voller Geschwindigkeit, Quetschung, Kollision", + AffectedDE: "Einrichter, Bedienpersonal im Maschinenbereich", + ZoneDE: "Gesamte Maschine, insbesondere Bereiche die bei Einrichten zugaenglich sind", + DefaultSeverity: 5, DefaultExposure: 2, + }, + { + ID: "HP858", NameDE: "Display zeigt falschen Prozesswert", NameEN: "Display shows wrong process value", + RequiredComponentTags: []string{"user_interface", "has_software"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M101", "M103"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 75, + ScenarioDE: "HMI zeigt falschen Messwert (z. B. falsche Zuordnung von Sensor zu Anzeige) und Bediener reagiert falsch.", + TriggerDE: "Programmierfehler in der Visualisierung, falscher Tag zugeordnet, Skalierungsfehler", + HarmDE: "Fehlbedienung auf Basis falscher Information, Prozess laeuft aus dem Toleranzbereich", + AffectedDE: "Bedienpersonal, das sich auf die Anzeige verlaesst", + ZoneDE: "HMI-Display, Prozessabbild auf dem Leitstand", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP859", NameDE: "Bediener umgeht Safety-Login am HMI", NameEN: "Operator bypasses safety login on HMI", + RequiredComponentTags: []string{"user_interface", "has_software"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"unauthorized_access", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M111", "M112"}, + SuggestedEvidenceIDs: []string{"E01", "E16"}, + Priority: 80, + ScenarioDE: "Bediener umgeht Login-Bildschirm am HMI und erlangt Zugang zu sicherheitsrelevanten Parametern.", + TriggerDE: "Gemeinsames Passwort, Post-It mit Passwort am Monitor, Auto-Login konfiguriert", + HarmDE: "Unberechtigte Aenderung von Sicherheitsparametern, Deaktivierung von Schutzfunktionen", + AffectedDE: "Bedienpersonal, alle Personen im Maschinenbereich", + ZoneDE: "HMI-Terminal, Parameterseiten der Steuerung", + DefaultSeverity: 4, DefaultExposure: 3, + }, + { + ID: "HP860", NameDE: "Touch-Fehlbedienung (nasse Finger/Handschuhe)", NameEN: "Touch misoperation (wet fingers/gloves)", + RequiredComponentTags: []string{"user_interface"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"ergonomic"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E01", "E20"}, + Priority: 65, + ScenarioDE: "Touchscreen reagiert auf nasse Finger, Handschuhe oder Wassertropfen und loest unbeabsichtigte Funktion aus.", + TriggerDE: "Regen, Schwitzhaende, Oelfilm auf Handschuh, Wasserspritzer auf Display", + HarmDE: "Unbeabsichtigtes Starten einer Funktion, Parameterwechsel, Betriebsart-Umschaltung", + AffectedDE: "Bedienpersonal mit Handschuhen oder in nassem Umfeld", + ZoneDE: "Touch-HMI, Panel-PC, mobile Bediengeraete", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP861", NameDE: "Sprachbarriere bei mehrsprachiger Belegschaft", NameEN: "Language barrier in multilingual workforce", + RequiredComponentTags: []string{"user_interface"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"ergonomic"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E24", "E25"}, + Priority: 60, + ScenarioDE: "Alarmmeldungen und Sicherheitshinweise am HMI sind nur in einer Sprache; Bediener versteht Warnung nicht.", + TriggerDE: "Einsprachiges HMI, fremdsprachige Zeitarbeitskraefte, fehlende Piktogramme", + HarmDE: "Warnung nicht verstanden, falsche Reaktion auf Alarm, Sicherheitsunterweisung nicht begriffen", + AffectedDE: "Nicht-muttersprachliche Bediener, Zeitarbeitskraefte, Leiharbeiter", + ZoneDE: "HMI-Terminal, Sicherheitsbeschilderung, Alarmanzeigen", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP862", NameDE: "Nachtschicht-Muedigkeit fuehrt zu Fehlreaktion", NameEN: "Night shift fatigue leads to wrong reaction", + RequiredComponentTags: []string{"user_interface"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"ergonomic"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E25"}, + Priority: 60, + ScenarioDE: "Muedigkeit in der Nachtschicht verzoegert Reaktionszeit und erhoeht Wahrscheinlichkeit fuer Fehlbedienung.", + TriggerDE: "Lange Schichtdauer, monotone Ueberwachungsaufgabe, fehlende Pausenregelung", + HarmDE: "Verzoegerte Reaktion auf Alarm, Einschlafen am Leitstand, Fehlbedienung", + AffectedDE: "Nachtschicht-Personal, alle von der Ueberwachung abhaengigen Personen", + ZoneDE: "Leitstand, Ueberwachungsstationen", + DefaultSeverity: 3, DefaultExposure: 4, + }, + { + ID: "HP863", NameDE: "Informationsueberlastung am Bedienterminal", NameEN: "Information overload at operator terminal", + RequiredComponentTags: []string{"user_interface", "has_software"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"ergonomic"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 55, + ScenarioDE: "Zu viele Informationen, Trends und Werte auf einem Bildschirm ueberfordern den Bediener kognitiv.", + TriggerDE: "Schlechtes UI-Design, zu viele gleichzeitig angezeigte Werte, fehlende Informationshierarchie", + HarmDE: "Kritische Information wird uebersehen, verzoegerte Erkennung von Anomalien", + AffectedDE: "Bedienpersonal, Leitstand-Operatoren", + ZoneDE: "HMI-Bildschirme, SCADA-Oberflaeche, Leitstand", + DefaultSeverity: 2, DefaultExposure: 4, + }, + { + ID: "HP864", NameDE: "Fehlende Rueckmeldung — Bediener drueckt erneut", NameEN: "Missing feedback — operator presses again", + RequiredComponentTags: []string{"user_interface"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"ergonomic"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 65, + ScenarioDE: "HMI gibt keine Rueckmeldung auf Tastendruck; Bediener drueckt erneut und loest unbeabsichtigte Doppelaktion aus.", + TriggerDE: "Fehlende akustische/visuelle Quittierung, langsame HMI-Reaktion, Netzwerk-Latenz", + HarmDE: "Doppelter Befehl (z. B. doppelter Zyklus-Start), Maschine startet erneut waehrend Entnahme", + AffectedDE: "Bedienpersonal", + ZoneDE: "HMI-Taster/Touchscreen, Gesamte Maschine bei Doppelausloesung", + DefaultSeverity: 3, DefaultExposure: 3, + }, + } +} diff --git a/ai-compliance-sdk/internal/iace/pattern_engine.go b/ai-compliance-sdk/internal/iace/pattern_engine.go index b25d41d..b8929e5 100644 --- a/ai-compliance-sdk/internal/iace/pattern_engine.go +++ b/ai-compliance-sdk/internal/iace/pattern_engine.go @@ -87,7 +87,8 @@ func NewPatternEngine() *PatternEngine { patterns = append(patterns, GetSpecificMachinePatterns()...) // HP730-HP755 pressure/wind/solar/battery patterns = append(patterns, GetSpecificMachinePatterns2()...) // HP756-HP784 escalator/pool/playground/fitness/laundry/glass patterns = append(patterns, GetCyberExtendedPatterns()...) // HP800-HP829 software faults/cyber-security - patterns = append(patterns, GetCyberExtendedPatterns2()...) // HP830-HP864 AI-ML/network/HMI + patterns = append(patterns, GetCyberExtendedPatterns2()...) // HP830-HP844 AI-ML specific + patterns = append(patterns, GetCyberExtendedPatterns3()...) // HP845-HP864 network/communication + HMI patterns = append(patterns, GetWorkshopPatterns()...) // HP600-HP664 cross-machine workshop patterns = append(patterns, GetMaintenanceExtPatterns()...) // HP700-HP729,HP900-HP934 maintenance lifecycle return &PatternEngine{