package iace import ( "encoding/json" "fmt" "time" "github.com/google/uuid" ) // hazardUUID generates a deterministic UUID for a hazard library entry // based on category and a 1-based index within that category. func hazardUUID(category string, index int) uuid.UUID { name := fmt.Sprintf("iace.hazard.%s.%d", category, index) return uuid.NewSHA1(uuid.NameSpaceDNS, []byte(name)) } // mustMarshalJSON marshals the given value to json.RawMessage, panicking on error. // This is safe to use for static data known at compile time. func mustMarshalJSON(v interface{}) json.RawMessage { data, err := json.Marshal(v) if err != nil { panic(fmt.Sprintf("hazard_library: failed to marshal JSON: %v", err)) } return data } // GetBuiltinHazardLibrary returns the complete built-in hazard library with 40+ // template entries for SW/FW/KI hazards in industrial machines. These entries are // intended to be seeded into the iace_hazard_library table during initial setup. // // All entries have IsBuiltin=true and TenantID=nil (system-level templates). // UUIDs are deterministic, generated via uuid.NewSHA1 based on category and index. func GetBuiltinHazardLibrary() []HazardLibraryEntry { now := time.Now() entries := []HazardLibraryEntry{ // ==================================================================== // Category: false_classification (4 entries) // ==================================================================== { ID: hazardUUID("false_classification", 1), Category: "false_classification", Name: "Falsche Bauteil-Klassifikation durch KI", Description: "Das KI-Modell klassifiziert ein Bauteil fehlerhaft, was zu falscher Weiterverarbeitung oder Montage fuehren kann.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"ai_model", "sensor"}, RegulationReferences: []string{"EU AI Act Art. 9", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Redundante Pruefung", "Konfidenz-Schwellwert"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("false_classification", 2), Category: "false_classification", Name: "Falsche Qualitaetsentscheidung (IO/NIO)", Description: "Fehlerhafte IO/NIO-Entscheidung durch das KI-System fuehrt dazu, dass defekte Teile als gut bewertet oder gute Teile verworfen werden.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"ai_model", "software"}, RegulationReferences: []string{"EU AI Act Art. 9", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Human-in-the-Loop", "Stichproben-Gegenpruefung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("false_classification", 3), Category: "false_classification", Name: "Fehlklassifikation bei Grenzwertfaellen", Description: "Bauteile nahe an Toleranzgrenzen werden systematisch falsch klassifiziert, da das Modell in Grenzwertbereichen unsicher agiert.", DefaultSeverity: 3, DefaultProbability: 4, ApplicableComponentTypes: []string{"ai_model"}, RegulationReferences: []string{"EU AI Act Art. 9", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Erweitertes Training", "Grauzone-Eskalation"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("false_classification", 4), Category: "false_classification", Name: "Verwechslung von Bauteiltypen", Description: "Unterschiedliche Bauteiltypen werden vom KI-Modell verwechselt, was zu falscher Montage oder Verarbeitung fuehrt.", DefaultSeverity: 4, DefaultProbability: 2, ApplicableComponentTypes: []string{"ai_model", "sensor"}, RegulationReferences: []string{"EU AI Act Art. 9", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Barcode-Gegenpruefung", "Doppelte Sensorik"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: timing_error (3 entries) // ==================================================================== { ID: hazardUUID("timing_error", 1), Category: "timing_error", Name: "Verzoegerte KI-Reaktion in Echtzeitsystem", Description: "Die KI-Inferenz dauert laenger als die zulaessige Echtzeitfrist, was zu verspaeteten Sicherheitsreaktionen fuehrt.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "ai_model"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849", "IEC 62443"}, SuggestedMitigations: mustMarshalJSON([]string{"Watchdog-Timer", "Fallback-Steuerung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("timing_error", 2), Category: "timing_error", Name: "Echtzeit-Verletzung Safety-Loop", Description: "Der sicherheitsgerichtete Regelkreis kann die geforderten Zykluszeiten nicht einhalten, wodurch Sicherheitsfunktionen versagen koennen.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"ISO 13849", "IEC 61508", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Deterministische Ausfuehrung", "WCET-Analyse"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("timing_error", 3), Category: "timing_error", Name: "Timing-Jitter bei Netzwerkkommunikation", Description: "Schwankende Netzwerklatenzen fuehren zu unvorhersehbaren Verzoegerungen in der Datenuebertragung sicherheitsrelevanter Signale.", DefaultSeverity: 3, DefaultProbability: 3, ApplicableComponentTypes: []string{"network", "software"}, RegulationReferences: []string{"IEC 62443", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"TSN-Netzwerk", "Pufferung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: data_poisoning (2 entries) // ==================================================================== { ID: hazardUUID("data_poisoning", 1), Category: "data_poisoning", Name: "Manipulierte Trainingsdaten", Description: "Trainingsdaten werden absichtlich oder unbeabsichtigt manipuliert, wodurch das Modell systematisch fehlerhafte Entscheidungen trifft.", DefaultSeverity: 4, DefaultProbability: 2, ApplicableComponentTypes: []string{"ai_model"}, RegulationReferences: []string{"EU AI Act Art. 10", "CRA"}, SuggestedMitigations: mustMarshalJSON([]string{"Daten-Validierung", "Anomalie-Erkennung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("data_poisoning", 2), Category: "data_poisoning", Name: "Adversarial Input Angriff", Description: "Gezielte Manipulation von Eingabedaten (z.B. Bilder, Sensorsignale), um das KI-Modell zu taeuschen und Fehlentscheidungen auszuloesen.", DefaultSeverity: 4, DefaultProbability: 2, ApplicableComponentTypes: []string{"ai_model", "sensor"}, RegulationReferences: []string{"EU AI Act Art. 15", "CRA", "IEC 62443"}, SuggestedMitigations: mustMarshalJSON([]string{"Input-Validation", "Adversarial Training"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: model_drift (3 entries) // ==================================================================== { ID: hazardUUID("model_drift", 1), Category: "model_drift", Name: "Performance-Degradation durch Concept Drift", Description: "Die statistische Verteilung der Eingabedaten aendert sich ueber die Zeit, wodurch die Modellgenauigkeit schleichend abnimmt.", DefaultSeverity: 3, DefaultProbability: 4, ApplicableComponentTypes: []string{"ai_model"}, RegulationReferences: []string{"EU AI Act Art. 9", "EU AI Act Art. 72"}, SuggestedMitigations: mustMarshalJSON([]string{"Monitoring-Dashboard", "Automatisches Retraining"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("model_drift", 2), Category: "model_drift", Name: "Data Drift durch veraenderte Umgebung", Description: "Aenderungen in der physischen Umgebung (Beleuchtung, Temperatur, Material) fuehren zu veraenderten Sensordaten und Modellfehlern.", DefaultSeverity: 3, DefaultProbability: 4, ApplicableComponentTypes: []string{"ai_model", "sensor"}, RegulationReferences: []string{"EU AI Act Art. 9", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Statistische Ueberwachung", "Sensor-Kalibrierung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("model_drift", 3), Category: "model_drift", Name: "Schleichende Modell-Verschlechterung", Description: "Ohne aktives Monitoring verschlechtert sich die Modellqualitaet ueber Wochen oder Monate unbemerkt.", DefaultSeverity: 3, DefaultProbability: 3, ApplicableComponentTypes: []string{"ai_model"}, RegulationReferences: []string{"EU AI Act Art. 9", "EU AI Act Art. 72"}, SuggestedMitigations: mustMarshalJSON([]string{"Regelmaessige Evaluierung", "A/B-Testing"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: sensor_spoofing (3 entries) // ==================================================================== { ID: hazardUUID("sensor_spoofing", 1), Category: "sensor_spoofing", Name: "Kamera-Manipulation / Abdeckung", Description: "Kamerasensoren werden absichtlich oder unbeabsichtigt abgedeckt oder manipuliert, sodass das System auf Basis falscher Bilddaten agiert.", DefaultSeverity: 4, DefaultProbability: 2, ApplicableComponentTypes: []string{"sensor"}, RegulationReferences: []string{"IEC 62443", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Plausibilitaetspruefung", "Mehrfach-Sensorik"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("sensor_spoofing", 2), Category: "sensor_spoofing", Name: "Sensor-Signal-Injection", Description: "Einspeisung gefaelschter Signale in die Sensorleitungen oder Schnittstellen, um das System gezielt zu manipulieren.", DefaultSeverity: 5, DefaultProbability: 1, ApplicableComponentTypes: []string{"sensor", "network"}, RegulationReferences: []string{"IEC 62443", "CRA"}, SuggestedMitigations: mustMarshalJSON([]string{"Signalverschluesselung", "Anomalie-Erkennung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("sensor_spoofing", 3), Category: "sensor_spoofing", Name: "Umgebungsbasierte Sensor-Taeuschung", Description: "Natuerliche oder kuenstliche Umgebungsveraenderungen (Licht, Staub, Vibration) fuehren zu fehlerhaften Sensorwerten.", DefaultSeverity: 3, DefaultProbability: 3, ApplicableComponentTypes: []string{"sensor"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Sensor-Fusion", "Redundanz"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: communication_failure (3 entries) // ==================================================================== { ID: hazardUUID("communication_failure", 1), Category: "communication_failure", Name: "Feldbus-Ausfall", Description: "Ausfall des industriellen Feldbusses (z.B. PROFINET, EtherCAT) fuehrt zum Verlust der Kommunikation zwischen Steuerung und Aktorik.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"network", "controller"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849", "IEC 62443"}, SuggestedMitigations: mustMarshalJSON([]string{"Redundanter Bus", "Safe-State-Transition"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("communication_failure", 2), Category: "communication_failure", Name: "Cloud-Verbindungsverlust", Description: "Die Verbindung zur Cloud-Infrastruktur bricht ab, wodurch cloud-abhaengige Funktionen (z.B. Modell-Updates, Monitoring) nicht verfuegbar sind.", DefaultSeverity: 3, DefaultProbability: 4, ApplicableComponentTypes: []string{"network", "software"}, RegulationReferences: []string{"CRA", "EU AI Act Art. 15"}, SuggestedMitigations: mustMarshalJSON([]string{"Offline-Faehigkeit", "Edge-Computing"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("communication_failure", 3), Category: "communication_failure", Name: "Netzwerk-Latenz-Spitzen", Description: "Unkontrollierte Latenzspitzen im Netzwerk fuehren zu Timeouts und verspaeteter Datenlieferung an sicherheitsrelevante Systeme.", DefaultSeverity: 3, DefaultProbability: 3, ApplicableComponentTypes: []string{"network"}, RegulationReferences: []string{"IEC 62443", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"QoS-Konfiguration", "Timeout-Handling"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: unauthorized_access (4 entries) // ==================================================================== { ID: hazardUUID("unauthorized_access", 1), Category: "unauthorized_access", Name: "Unautorisierter Remote-Zugriff", Description: "Ein Angreifer erlangt ueber das Netzwerk Zugriff auf die Maschinensteuerung und kann sicherheitsrelevante Parameter aendern.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"network", "software"}, RegulationReferences: []string{"IEC 62443", "CRA", "EU AI Act Art. 15"}, SuggestedMitigations: mustMarshalJSON([]string{"VPN", "MFA", "Netzwerksegmentierung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("unauthorized_access", 2), Category: "unauthorized_access", Name: "Konfigurations-Manipulation", Description: "Sicherheitsrelevante Konfigurationsparameter werden unautorisiert geaendert, z.B. Grenzwerte, Schwellwerte oder Betriebsmodi.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"IEC 62443", "CRA", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Zugriffskontrolle", "Audit-Log"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("unauthorized_access", 3), Category: "unauthorized_access", Name: "Privilege Escalation", Description: "Ein Benutzer oder Prozess erlangt hoehere Berechtigungen als vorgesehen und kann sicherheitskritische Aktionen ausfuehren.", DefaultSeverity: 5, DefaultProbability: 1, ApplicableComponentTypes: []string{"software"}, RegulationReferences: []string{"IEC 62443", "CRA"}, SuggestedMitigations: mustMarshalJSON([]string{"RBAC", "Least Privilege"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("unauthorized_access", 4), Category: "unauthorized_access", Name: "Supply-Chain-Angriff auf Komponente", Description: "Eine kompromittierte Softwarekomponente oder Firmware wird ueber die Lieferkette eingeschleust und enthaelt Schadcode oder Backdoors.", DefaultSeverity: 5, DefaultProbability: 1, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"CRA", "IEC 62443", "EU AI Act Art. 15"}, SuggestedMitigations: mustMarshalJSON([]string{"SBOM", "Signaturpruefung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: firmware_corruption (3 entries) // ==================================================================== { ID: hazardUUID("firmware_corruption", 1), Category: "firmware_corruption", Name: "Update-Abbruch mit inkonsistentem Zustand", Description: "Ein Firmware-Update wird unterbrochen (z.B. Stromausfall), wodurch das System in einem inkonsistenten und potenziell unsicheren Zustand verbleibt.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"firmware"}, RegulationReferences: []string{"CRA", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"A/B-Partitioning", "Rollback"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("firmware_corruption", 2), Category: "firmware_corruption", Name: "Rollback-Fehler auf alte Version", Description: "Ein Rollback auf eine aeltere Firmware-Version schlaegt fehl oder fuehrt zu Inkompatibilitaeten mit der aktuellen Hardware-/Softwarekonfiguration.", DefaultSeverity: 4, DefaultProbability: 2, ApplicableComponentTypes: []string{"firmware"}, RegulationReferences: []string{"CRA", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Versionsmanagement", "Kompatibilitaetspruefung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("firmware_corruption", 3), Category: "firmware_corruption", Name: "Boot-Chain-Angriff", Description: "Die Bootsequenz wird manipuliert, um unsignierte oder kompromittierte Firmware auszufuehren, was die gesamte Sicherheitsarchitektur untergaebt.", DefaultSeverity: 5, DefaultProbability: 1, ApplicableComponentTypes: []string{"firmware"}, RegulationReferences: []string{"CRA", "IEC 62443"}, SuggestedMitigations: mustMarshalJSON([]string{"Secure Boot", "TPM"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: safety_boundary_violation (4 entries) // ==================================================================== { ID: hazardUUID("safety_boundary_violation", 1), Category: "safety_boundary_violation", Name: "Kraft-/Drehmoment-Ueberschreitung", Description: "Aktorische Systeme ueberschreiten die zulaessigen Kraft- oder Drehmomentwerte, was zu Verletzungen oder Maschinenschaeden fuehren kann.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"controller", "actuator"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849", "IEC 62061"}, SuggestedMitigations: mustMarshalJSON([]string{"Hardware-Limiter", "SIL-Ueberwachung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("safety_boundary_violation", 2), Category: "safety_boundary_violation", Name: "Geschwindigkeitsueberschreitung Roboter", Description: "Ein Industrieroboter ueberschreitet die zulaessige Geschwindigkeit, insbesondere bei Mensch-Roboter-Kollaboration.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"controller", "software"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849", "ISO 10218"}, SuggestedMitigations: mustMarshalJSON([]string{"Safe Speed Monitoring", "Lichtgitter"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("safety_boundary_violation", 3), Category: "safety_boundary_violation", Name: "Versagen des Safe-State", Description: "Das System kann im Fehlerfall keinen sicheren Zustand einnehmen, da die Sicherheitssteuerung selbst versagt.", DefaultSeverity: 5, DefaultProbability: 1, ApplicableComponentTypes: []string{"controller", "software", "firmware"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849", "IEC 62061"}, SuggestedMitigations: mustMarshalJSON([]string{"Redundante Sicherheitssteuerung", "Diverse Programmierung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("safety_boundary_violation", 4), Category: "safety_boundary_violation", Name: "Arbeitsraum-Verletzung", Description: "Ein Roboter oder Aktor verlaesst seinen definierten Arbeitsraum und dringt in den Schutzbereich von Personen ein.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"controller", "sensor"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849", "ISO 10218"}, SuggestedMitigations: mustMarshalJSON([]string{"Sichere Achsueberwachung", "Schutzzaun-Sensorik"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: mode_confusion (3 entries) // ==================================================================== { ID: hazardUUID("mode_confusion", 1), Category: "mode_confusion", Name: "Falsche Betriebsart aktiv", Description: "Das System befindet sich in einer unbeabsichtigten Betriebsart (z.B. Automatik statt Einrichtbetrieb), was zu unerwarteten Maschinenbewegungen fuehrt.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"hmi", "software"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Betriebsart-Anzeige", "Schluesselschalter"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("mode_confusion", 2), Category: "mode_confusion", Name: "Wartung/Normal-Verwechslung", Description: "Das System wird im Normalbetrieb gewartet oder der Wartungsmodus wird nicht korrekt verlassen, was zu gefaehrlichen Situationen fuehrt.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"hmi", "software"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Zugangskontrolle", "Sicherheitsverriegelung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("mode_confusion", 3), Category: "mode_confusion", Name: "Automatik-Eingriff waehrend Handbetrieb", Description: "Das System wechselt waehrend des Handbetriebs unerwartet in den Automatikbetrieb, wodurch eine Person im Gefahrenbereich verletzt werden kann.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "controller"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Exklusive Betriebsarten", "Zustimmtaster"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: unintended_bias (2 entries) // ==================================================================== { ID: hazardUUID("unintended_bias", 1), Category: "unintended_bias", Name: "Diskriminierende KI-Entscheidung", Description: "Das KI-Modell trifft systematisch diskriminierende Entscheidungen, z.B. bei der Qualitaetsbewertung bestimmter Produktchargen oder Lieferanten.", DefaultSeverity: 3, DefaultProbability: 2, ApplicableComponentTypes: []string{"ai_model"}, RegulationReferences: []string{"EU AI Act Art. 10", "EU AI Act Art. 71"}, SuggestedMitigations: mustMarshalJSON([]string{"Bias-Testing", "Fairness-Metriken"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("unintended_bias", 2), Category: "unintended_bias", Name: "Verzerrte Trainingsdaten", Description: "Die Trainingsdaten sind nicht repraesentativ und enthalten systematische Verzerrungen, die zu unfairen oder fehlerhaften Modellergebnissen fuehren.", DefaultSeverity: 3, DefaultProbability: 3, ApplicableComponentTypes: []string{"ai_model"}, RegulationReferences: []string{"EU AI Act Art. 10", "EU AI Act Art. 71"}, SuggestedMitigations: mustMarshalJSON([]string{"Datensatz-Audit", "Ausgewogenes Sampling"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: update_failure (3 entries) // ==================================================================== { ID: hazardUUID("update_failure", 1), Category: "update_failure", Name: "Unvollstaendiges OTA-Update", Description: "Ein Over-the-Air-Update wird nur teilweise uebertragen oder angewendet, wodurch das System in einem inkonsistenten Zustand verbleibt.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"firmware", "software"}, RegulationReferences: []string{"CRA", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Atomare Updates", "Integritaetspruefung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("update_failure", 2), Category: "update_failure", Name: "Versionskonflikt nach Update", Description: "Nach einem Update sind Software- und Firmware-Versionen inkompatibel, was zu Fehlfunktionen oder Ausfaellen fuehrt.", DefaultSeverity: 3, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"CRA", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Kompatibilitaetsmatrix", "Staging-Tests"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("update_failure", 3), Category: "update_failure", Name: "Unkontrollierter Auto-Update", Description: "Ein automatisches Update wird ohne Genehmigung oder ausserhalb eines Wartungsfensters eingespielt und stoert den laufenden Betrieb.", DefaultSeverity: 4, DefaultProbability: 2, ApplicableComponentTypes: []string{"software"}, RegulationReferences: []string{"CRA", "Maschinenverordnung 2023/1230", "IEC 62443"}, SuggestedMitigations: mustMarshalJSON([]string{"Update-Genehmigung", "Wartungsfenster"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, } // ==================================================================== // Neue Kategorien (extended library ~100 neue Eintraege) // ==================================================================== extended := []HazardLibraryEntry{ // ==================================================================== // Category: software_fault (10 entries) // ==================================================================== { ID: hazardUUID("software_fault", 1), Category: "software_fault", Name: "Race Condition in Sicherheitsfunktion", Description: "Zwei Tasks greifen ohne Synchronisation auf gemeinsame Ressourcen zu, was zu unvorhersehbarem Verhalten in sicherheitsrelevanten Funktionen fuehren kann.", DefaultSeverity: 5, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"EU 2023/1230 Anhang I §1.2", "IEC 62304", "IEC 61508"}, SuggestedMitigations: mustMarshalJSON([]string{"Mutex/Semaphor", "RTOS-Task-Prioritaeten", "WCET-Analyse"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("software_fault", 2), Category: "software_fault", Name: "Stack Overflow in Echtzeit-Task", Description: "Ein rekursiver Aufruf oder grosse lokale Variablen fuehren zum Stack-Ueberlauf, was Safety-Tasks zum Absturz bringt.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"IEC 62304", "IEC 61508"}, SuggestedMitigations: mustMarshalJSON([]string{"Stack-Groessen-Analyse", "Stack-Guard", "Statische Code-Analyse"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("software_fault", 3), Category: "software_fault", Name: "Integer Overflow in Sicherheitsberechnung", Description: "Arithmetischer Ueberlauf bei der Berechnung sicherheitskritischer Grenzwerte fuehrt zu falschen Ergebnissen und unkontrolliertem Verhalten.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"IEC 62304", "MISRA-C", "IEC 61508"}, SuggestedMitigations: mustMarshalJSON([]string{"Datentyp-Pruefung", "Overflow-Detection", "MISRA-C-Analyse"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("software_fault", 4), Category: "software_fault", Name: "Deadlock zwischen Safety-Tasks", Description: "Gegenseitige Sperrung von Tasks durch zyklische Ressourcenabhaengigkeiten verhindert die Ausfuehrung sicherheitsrelevanter Funktionen.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"IEC 62304", "IEC 61508"}, SuggestedMitigations: mustMarshalJSON([]string{"Ressourcen-Hierarchie", "Watchdog", "Deadlock-Analyse"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("software_fault", 5), Category: "software_fault", Name: "Memory Leak im Langzeitbetrieb", Description: "Nicht freigegebener Heap-Speicher akkumuliert sich ueber Zeit, bis das System abstuerzt und Sicherheitsfunktionen nicht mehr verfuegbar sind.", DefaultSeverity: 3, DefaultProbability: 4, ApplicableComponentTypes: []string{"software"}, RegulationReferences: []string{"IEC 62304", "IEC 61508"}, SuggestedMitigations: mustMarshalJSON([]string{"Memory-Profiling", "Valgrind", "Statisches Speichermanagement"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("software_fault", 6), Category: "software_fault", Name: "Null-Pointer-Dereferenz in Safety-Code", Description: "Zugriff auf einen Null-Zeiger fuehrt zu einem undefinierten Systemzustand oder Absturz des sicherheitsrelevanten Software-Moduls.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"IEC 62304", "MISRA-C"}, SuggestedMitigations: mustMarshalJSON([]string{"Null-Check vor Zugriff", "Statische Analyse", "Defensiv-Programmierung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("software_fault", 7), Category: "software_fault", Name: "Unbehandelte Ausnahme in Safety-Code", Description: "Eine nicht abgefangene Ausnahme bricht die Ausfuehrung des sicherheitsrelevanten Codes ab und hinterlaesst das System in einem undefinierten Zustand.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"software"}, RegulationReferences: []string{"IEC 62304", "IEC 61508"}, SuggestedMitigations: mustMarshalJSON([]string{"Globaler Exception-Handler", "Exception-Safety-Analyse", "Fail-Safe-Rueckfall"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("software_fault", 8), Category: "software_fault", Name: "Korrupte Konfigurationsdaten", Description: "Beschaedigte oder unvollstaendige Konfigurationsdaten werden ohne Validierung geladen und fuehren zu falschem Systemverhalten.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"IEC 62304", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Konfig-Validierung", "CRC-Pruefung", "Fallback-Konfiguration"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("software_fault", 9), Category: "software_fault", Name: "Division durch Null in Regelkreis", Description: "Ein Divisor im sicherheitsrelevanten Regelkreis erreicht den Wert Null, was zu einem Laufzeitfehler oder undefiniertem Ergebnis fuehrt.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"IEC 62304", "IEC 61508", "MISRA-C"}, SuggestedMitigations: mustMarshalJSON([]string{"Vorbedingungspruefung", "Statische Analyse", "Defensiv-Programmierung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("software_fault", 10), Category: "software_fault", Name: "Falscher Safety-Parameter durch Software-Bug", Description: "Ein Software-Fehler setzt einen sicherheitsrelevanten Parameter auf einen falschen Wert, ohne dass eine Plausibilitaetspruefung dies erkennt.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"IEC 62304", "IEC 61508", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Parametervalidierung", "Redundante Speicherung", "Diversitaere Pruefung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: hmi_error (8 entries) // ==================================================================== { ID: hazardUUID("hmi_error", 1), Category: "hmi_error", Name: "Falsche Einheitendarstellung", Description: "Das HMI zeigt Werte in einer falschen Masseinheit an (z.B. mm statt inch), was zu Fehlbedienung und Maschinenfehlern fuehren kann.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"hmi", "software"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang III", "EN ISO 9241"}, SuggestedMitigations: mustMarshalJSON([]string{"Einheiten-Label im UI", "Lokalisierungstests", "Einheiten-Konvertierungspruefung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("hmi_error", 2), Category: "hmi_error", Name: "Fehlender oder stummer Sicherheitsalarm", Description: "Ein kritisches Sicherheitsereignis wird dem Bediener nicht oder nicht rechtzeitig angezeigt, weil die Alarmfunktion deaktiviert oder fehlerhaft ist.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"hmi", "software"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849", "EN ISO 9241"}, SuggestedMitigations: mustMarshalJSON([]string{"Alarmtest im Rahmen der Inbetriebnahme", "Akustischer Backup-Alarm", "Alarmverwaltungssystem"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("hmi_error", 3), Category: "hmi_error", Name: "Sprachfehler in Bedienoberflaeche", Description: "Fehlerhafte oder mehrdeutige Bezeichnungen in der Benutzersprache fuehren zu Fehlbedienung sicherheitsrelevanter Funktionen.", DefaultSeverity: 3, DefaultProbability: 3, ApplicableComponentTypes: []string{"hmi"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang III"}, SuggestedMitigations: mustMarshalJSON([]string{"Usability-Test", "Lokalisierungs-Review", "Mehrsprachige Dokumentation"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("hmi_error", 4), Category: "hmi_error", Name: "Fehlende Eingabevalidierung im HMI", Description: "Das HMI akzeptiert ausserhalb des gueltigen Bereichs liegende Eingaben ohne Warnung und leitet sie an die Steuerung weiter.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"hmi", "software"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "IEC 62304"}, SuggestedMitigations: mustMarshalJSON([]string{"Grenzwertpruefung", "Eingabemaske mit Bereichen", "Warnung bei Grenzwertnaehe"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("hmi_error", 5), Category: "hmi_error", Name: "Defekter Statusindikator", Description: "Ein LED, Anzeigeelement oder Softwaresymbol zeigt einen falschen Systemstatus an und verleitet den Bediener zu falschen Annahmen.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"hmi"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang III"}, SuggestedMitigations: mustMarshalJSON([]string{"Regelmaessige HMI-Tests", "Selbsttest beim Einschalten", "Redundante Statusanzeige"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("hmi_error", 6), Category: "hmi_error", Name: "Quittierung ohne Ursachenbehebung", Description: "Der Bediener kann einen Sicherheitsalarm quittieren, ohne die zugrundeliegende Ursache behoben zu haben, was das Risiko wiederkehrender Ereignisse erhoet.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"hmi", "software"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Ursachen-Checkliste vor Quittierung", "Pflicht-Ursachen-Eingabe", "Audit-Log der Quittierungen"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("hmi_error", 7), Category: "hmi_error", Name: "Veraltete Anzeige durch Caching-Fehler", Description: "Die HMI-Anzeige wird nicht aktualisiert und zeigt veraltete Sensorwerte oder Zustaende an, was zu Fehlentscheidungen fuehrt.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"hmi", "software"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang III"}, SuggestedMitigations: mustMarshalJSON([]string{"Timestamp-Anzeige", "Refresh-Watchdog", "Verbindungsstatus-Indikator"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("hmi_error", 8), Category: "hmi_error", Name: "Fehlende Betriebsart-Kennzeichnung", Description: "Die aktive Betriebsart (Automatik, Einrichten, Wartung) ist im HMI nicht eindeutig sichtbar, was zu unerwarteten Maschinenbewegungen fuehren kann.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"hmi", "software"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Dauerhafte Betriebsart-Anzeige", "Farbliche Kennzeichnung", "Bestaetigung bei Modewechsel"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: mechanical_hazard (6 entries) // ==================================================================== { ID: hazardUUID("mechanical_hazard", 1), Category: "mechanical_hazard", Name: "Unerwarteter Anlauf nach Spannungsausfall", Description: "Nach Wiederkehr der Versorgungsspannung laeuft die Maschine unerwartet an, ohne dass eine Startfreigabe durch den Bediener erfolgt ist.", DefaultSeverity: 5, DefaultProbability: 3, ApplicableComponentTypes: []string{"controller", "firmware"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.2.6", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Anlaufschutz", "Anti-Restart-Funktion", "Sicherheitsrelais"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("mechanical_hazard", 2), Category: "mechanical_hazard", Name: "Restenergie nach Abschalten", Description: "Gespeicherte kinetische oder potentielle Energie (z.B. Schwungmasse, abgesenktes Werkzeug) wird nach dem Abschalten nicht sicher abgebaut.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"actuator", "controller"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.6", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Energieabbau-Prozedur", "Mechanische Haltevorrichtung", "LOTO-Freischaltung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("mechanical_hazard", 3), Category: "mechanical_hazard", Name: "Unerwartete Maschinenbewegung", Description: "Die Maschine fuehrt eine unkontrollierte Bewegung durch (z.B. Antrieb faehrt ohne Kommando los), was Personen im Gefahrenbereich verletzt.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"actuator", "controller", "software"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849", "IEC 62061"}, SuggestedMitigations: mustMarshalJSON([]string{"Safe Torque Off (STO)", "Geschwindigkeitsueberwachung", "Schutzzaun-Sensorik"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("mechanical_hazard", 4), Category: "mechanical_hazard", Name: "Teileauswurf durch Fehlfunktion", Description: "Werkzeuge, Werkstuecke oder Maschinenteile werden bei einer Fehlfunktion unkontrolliert aus der Maschine geschleudert.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"actuator", "controller"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.3.2"}, SuggestedMitigations: mustMarshalJSON([]string{"Trennende Schutzeinrichtung", "Sicherheitsglas", "Spannkraft-Ueberwachung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("mechanical_hazard", 5), Category: "mechanical_hazard", Name: "Quetschstelle durch fehlende Schutzeinrichtung", Description: "Zwischen beweglichen und festen Maschinenteilen entstehen Quetschstellen, die bei fehlendem Schutz zu schweren Verletzungen fuehren koennen.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"actuator"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.3.7", "ISO 13857"}, SuggestedMitigations: mustMarshalJSON([]string{"Schutzverkleidung", "Sicherheitsabstaende nach ISO 13857", "Lichtvorhang"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("mechanical_hazard", 6), Category: "mechanical_hazard", Name: "Instabile Struktur unter Last", Description: "Die Maschinenstruktur oder ein Anbauteil versagt unter statischer oder dynamischer Belastung und gefaehrdet Personen in der Naehe.", DefaultSeverity: 5, DefaultProbability: 1, ApplicableComponentTypes: []string{"other"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.3.1"}, SuggestedMitigations: mustMarshalJSON([]string{"Festigkeitsberechnung", "Ueberlastsicherung", "Regelmaessige Inspektion"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: electrical_hazard (6 entries) // ==================================================================== { ID: hazardUUID("electrical_hazard", 1), Category: "electrical_hazard", Name: "Elektrischer Schlag an Bedienpanel", Description: "Bediener kommen mit spannungsfuehrenden Teilen in Beruehrung, z.B. durch defekte Gehaeuseerdung oder fehlerhafte Isolierung.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"hmi", "controller"}, RegulationReferences: []string{"Niederspannungsrichtlinie 2014/35/EU", "IEC 60204-1"}, SuggestedMitigations: mustMarshalJSON([]string{"Schutzkleinspannung (SELV)", "Schutzerdung", "Isolationsmonitoring"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("electrical_hazard", 2), Category: "electrical_hazard", Name: "Lichtbogen durch Schaltfehler", Description: "Ein Schaltfehler erzeugt einen Lichtbogen, der Bediener verletzen, Geraete beschaedigen oder einen Brand ausloesen kann.", DefaultSeverity: 5, DefaultProbability: 1, ApplicableComponentTypes: []string{"controller"}, RegulationReferences: []string{"Niederspannungsrichtlinie 2014/35/EU", "IEC 60204-1"}, SuggestedMitigations: mustMarshalJSON([]string{"Lichtbogenschutz-Schalter", "Kurzschlussschutz", "Geeignete Schaltgeraete"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("electrical_hazard", 3), Category: "electrical_hazard", Name: "Kurzschluss durch Isolationsfehler", Description: "Beschaedigte Kabelisolierungen fuehren zu einem Kurzschluss, der Feuer ausloesen oder Sicherheitsfunktionen ausser Betrieb setzen kann.", DefaultSeverity: 4, DefaultProbability: 2, ApplicableComponentTypes: []string{"network", "controller"}, RegulationReferences: []string{"Niederspannungsrichtlinie 2014/35/EU", "IEC 60204-1"}, SuggestedMitigations: mustMarshalJSON([]string{"Isolationsueberwachung", "Kabelschutz", "Regelmaessige Sichtpruefung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("electrical_hazard", 4), Category: "electrical_hazard", Name: "Erdschluss in Steuerkreis", Description: "Ein Erdschluss im Steuerkreis kann unbeabsichtigte Schaltzustaende ausloesen und Sicherheitsfunktionen beeinflussen.", DefaultSeverity: 4, DefaultProbability: 2, ApplicableComponentTypes: []string{"controller", "network"}, RegulationReferences: []string{"IEC 60204-1", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Erdschluss-Monitoring", "IT-Netz fuer Steuerkreise", "Regelmaessige Pruefung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("electrical_hazard", 5), Category: "electrical_hazard", Name: "Gespeicherte Energie in Kondensatoren", Description: "Nach dem Abschalten verbleiben hohe Spannungen in Kondensatoren (z.B. Frequenzumrichter, USV), was bei Wartungsarbeiten gefaehrlich ist.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"controller"}, RegulationReferences: []string{"Niederspannungsrichtlinie 2014/35/EU", "IEC 60204-1"}, SuggestedMitigations: mustMarshalJSON([]string{"Entladewartezeit", "Automatische Entladeschaltung", "Warnhinweise am Geraet"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("electrical_hazard", 6), Category: "electrical_hazard", Name: "Elektromagnetische Kopplung auf Safety-Leitung", Description: "Hochfrequente Stoerfelder koppeln auf ungeschirmte Safety-Leitungen und erzeugen Falschsignale, die Sicherheitsfunktionen fehl ausloesen.", DefaultSeverity: 3, DefaultProbability: 3, ApplicableComponentTypes: []string{"network", "sensor"}, RegulationReferences: []string{"EMV-Richtlinie 2014/30/EU", "IEC 62061"}, SuggestedMitigations: mustMarshalJSON([]string{"Geschirmte Kabel", "Raeumliche Trennung", "EMV-Pruefung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: thermal_hazard (4 entries) // ==================================================================== { ID: hazardUUID("thermal_hazard", 1), Category: "thermal_hazard", Name: "Ueberhitzung der Steuereinheit", Description: "Die Steuereinheit ueberschreitet die zulaessige Betriebstemperatur durch Lueftungsausfall oder hohe Umgebungstemperatur, was zu Fehlfunktionen fuehrt.", DefaultSeverity: 3, DefaultProbability: 3, ApplicableComponentTypes: []string{"controller", "firmware"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "IEC 60068"}, SuggestedMitigations: mustMarshalJSON([]string{"Temperaturueberwachung", "Redundante Lueftung", "Thermisches Abschalten"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("thermal_hazard", 2), Category: "thermal_hazard", Name: "Brandgefahr durch Leistungselektronik", Description: "Defekte Leistungshalbleiter oder Kondensatoren in der Leistungselektronik erwaermen sich unkontrolliert und koennen einen Brand ausloesen.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"controller"}, RegulationReferences: []string{"Niederspannungsrichtlinie 2014/35/EU", "IEC 60204-1"}, SuggestedMitigations: mustMarshalJSON([]string{"Thermosicherungen", "Temperatursensoren", "Brandschutzmassnahmen"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("thermal_hazard", 3), Category: "thermal_hazard", Name: "Einfrieren bei Tieftemperatur", Description: "Sehr tiefe Umgebungstemperaturen fuehren zum Einfrieren von Hydraulikleitungen oder Elektronik und damit zum Ausfall von Sicherheitsfunktionen.", DefaultSeverity: 3, DefaultProbability: 3, ApplicableComponentTypes: []string{"controller", "actuator"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "IEC 60068"}, SuggestedMitigations: mustMarshalJSON([]string{"Heizung", "Mindestbetriebstemperatur definieren", "Temperatursensor"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("thermal_hazard", 4), Category: "thermal_hazard", Name: "Waermestress an Kabelisolierung", Description: "Langfristige Einwirkung hoher Temperaturen auf Kabelisolierungen fuehrt zu Alterung und Isolationsversagen mit Kurzschlussrisiko.", DefaultSeverity: 3, DefaultProbability: 3, ApplicableComponentTypes: []string{"network", "controller"}, RegulationReferences: []string{"IEC 60204-1", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Hitzebestaendige Kabel (z.B. PTFE)", "Kabelverlegung mit Abstand zur Waermequelle", "Regelmaessige Inspektion"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: emc_hazard (5 entries) // ==================================================================== { ID: hazardUUID("emc_hazard", 1), Category: "emc_hazard", Name: "EMV-Stoerabstrahlung auf Safety-Bus", Description: "Hohe elektromagnetische Stoerabstrahlung aus benachbarten Geraeten stoert den industriellen Safety-Bus (z.B. PROFIsafe) und erzeugt Kommunikationsfehler.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"network", "controller"}, RegulationReferences: []string{"EMV-Richtlinie 2014/30/EU", "IEC 62061", "IEC 61784-3"}, SuggestedMitigations: mustMarshalJSON([]string{"EMV-gerechte Verkabelung", "Schirmung", "EMC-Pruefung nach EN 55011"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("emc_hazard", 2), Category: "emc_hazard", Name: "Unbeabsichtigte elektromagnetische Abstrahlung", Description: "Die Maschine selbst strahlt starke EM-Felder ab, die andere sicherheitsrelevante Einrichtungen in der Naehe stoeren.", DefaultSeverity: 2, DefaultProbability: 3, ApplicableComponentTypes: []string{"controller", "actuator"}, RegulationReferences: []string{"EMV-Richtlinie 2014/30/EU"}, SuggestedMitigations: mustMarshalJSON([]string{"EMV-Filter", "Gehaeuseabschirmung", "CE-Zulassung Frequenzumrichter"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("emc_hazard", 3), Category: "emc_hazard", Name: "Frequenzumrichter-Stoerung auf Steuerleitung", Description: "Der Frequenzumrichter erzeugt hochfrequente Stoerungen, die auf benachbarte Steuerleitungen koppeln und falsche Signale erzeugen.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"actuator", "network"}, RegulationReferences: []string{"EMV-Richtlinie 2014/30/EU", "IEC 60204-1"}, SuggestedMitigations: mustMarshalJSON([]string{"Motorfilter", "Kabeltrennabstand", "Separate Kabelkanaele"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("emc_hazard", 4), Category: "emc_hazard", Name: "ESD-Schaden an Elektronik", Description: "Elektrostatische Entladung bei Wartung oder Austausch beschaedigt empfindliche Elektronikbauteile, was zu latenten Fehlfunktionen fuehrt.", DefaultSeverity: 3, DefaultProbability: 3, ApplicableComponentTypes: []string{"controller", "firmware"}, RegulationReferences: []string{"IEC 61000-4-2", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"ESD-Schulung", "ESD-Schutzausruestung", "ESD-gerechte Verpackung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("emc_hazard", 5), Category: "emc_hazard", Name: "HF-Stoerung des Sicherheitssensors", Description: "Hochfrequenz-Stoerquellen (z.B. Schweissgeraete, Mobiltelefone) beeinflussen die Funktion von Sicherheitssensoren (Lichtvorhang, Scanner).", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"sensor"}, RegulationReferences: []string{"EMV-Richtlinie 2014/30/EU", "IEC 61496"}, SuggestedMitigations: mustMarshalJSON([]string{"EMV-zertifizierte Sicherheitssensoren", "HF-Quellen trennen", "Gegensprechanlagenverbot in Gefahrenzone"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: configuration_error (8 entries) // ==================================================================== { ID: hazardUUID("configuration_error", 1), Category: "configuration_error", Name: "Falscher Safety-Parameter bei Inbetriebnahme", Description: "Beim Einrichten werden sicherheitsrelevante Parameter (z.B. Maximalgeschwindigkeit, Abschaltgrenzen) falsch konfiguriert und nicht verifiziert.", DefaultSeverity: 5, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "firmware", "controller"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849", "IEC 62061"}, SuggestedMitigations: mustMarshalJSON([]string{"Parameterpruefung nach Inbetriebnahme", "4-Augen-Prinzip", "Parameterprotokoll in technischer Akte"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("configuration_error", 2), Category: "configuration_error", Name: "Factory Reset loescht Sicherheitskonfiguration", Description: "Ein Factory Reset setzt alle Parameter auf Werkseinstellungen zurueck, einschliesslich sicherheitsrelevanter Konfigurationen, ohne Warnung.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"firmware", "software"}, RegulationReferences: []string{"IEC 62304", "CRA", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Separate Safety-Partition", "Bestaetigung vor Reset", "Safety-Config vor Reset sichern"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("configuration_error", 3), Category: "configuration_error", Name: "Fehlerhafte Parameter-Migration bei Update", Description: "Beim Software-Update werden vorhandene Konfigurationsparameter nicht korrekt in das neue Format migriert, was zu falschen Systemeinstellungen fuehrt.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"IEC 62304", "CRA"}, SuggestedMitigations: mustMarshalJSON([]string{"Migrations-Skript-Tests", "Konfig-Backup vor Update", "Post-Update-Verifikation"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("configuration_error", 4), Category: "configuration_error", Name: "Konflikthafte redundante Einstellungen", Description: "Widersprüchliche Parameter in verschiedenen Konfigurationsdateien oder -ebenen fuehren zu unvorhersehbarem Systemverhalten.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"IEC 62304", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Konfig-Validierung beim Start", "Einzelne Quelle fuer Safety-Params", "Konsistenzpruefung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("configuration_error", 5), Category: "configuration_error", Name: "Hard-coded Credentials in Konfiguration", Description: "Passwörter oder Schluessel sind fest im Code oder in Konfigurationsdateien hinterlegt und koennen nicht geaendert werden.", DefaultSeverity: 4, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"CRA", "IEC 62443"}, SuggestedMitigations: mustMarshalJSON([]string{"Secrets-Management", "Kein Hard-Coding", "Credential-Scan im CI"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("configuration_error", 6), Category: "configuration_error", Name: "Debug-Modus in Produktionsumgebung aktiv", Description: "Debug-Schnittstellen oder erhoehte Logging-Level sind in der Produktionsumgebung aktiv und ermoeglichen Angreifern Zugang zu sensiblen Systeminfos.", DefaultSeverity: 4, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"CRA", "IEC 62443"}, SuggestedMitigations: mustMarshalJSON([]string{"Build-Konfiguration pruefe Debug-Flag", "Produktions-Checkliste", "Debug-Port-Deaktivierung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("configuration_error", 7), Category: "configuration_error", Name: "Out-of-Bounds-Eingabe ohne Validierung", Description: "Nutzereingaben oder Schnittstellendaten werden ohne Bereichspruefung in sicherheitsrelevante Parameter uebernommen.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "hmi"}, RegulationReferences: []string{"IEC 62304", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Eingabevalidierung", "Bereichsgrenzen definieren", "Sanity-Check"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("configuration_error", 8), Category: "configuration_error", Name: "Konfigurationsdatei nicht schreibgeschuetzt", Description: "Sicherheitsrelevante Konfigurationsdateien koennen von unautorisierten Nutzern oder Prozessen veraendert werden.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "firmware"}, RegulationReferences: []string{"IEC 62443", "CRA"}, SuggestedMitigations: mustMarshalJSON([]string{"Dateisystem-Berechtigungen", "Code-Signing fuer Konfig", "Integritaetspruefung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: safety_function_failure (8 entries) // ==================================================================== { ID: hazardUUID("safety_function_failure", 1), Category: "safety_function_failure", Name: "Not-Halt trennt Energieversorgung nicht", Description: "Der Not-Halt-Taster betaetigt die Sicherheitsschalter, die Energiezufuhr wird jedoch nicht vollstaendig unterbrochen, weil das Sicherheitsrelais versagt.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"controller", "actuator"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.2.4", "IEC 60947-5-5", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Regelmaessiger Not-Halt-Test", "Redundantes Sicherheitsrelais", "Selbstueberwachender Sicherheitskreis"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("safety_function_failure", 2), Category: "safety_function_failure", Name: "Schutztuer-Monitoring umgangen", Description: "Das Schutztuer-Positionssignal wird durch einen Fehler oder Manipulation als 'geschlossen' gemeldet, obwohl die Tuer offen ist.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"sensor", "controller"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 14119", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Zwangsöffnender Positionsschalter", "Codierter Sicherheitssensor", "Anti-Tamper-Masssnahmen"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("safety_function_failure", 3), Category: "safety_function_failure", Name: "Safe Speed Monitoring fehlt", Description: "Beim Einrichten im reduzierten Betrieb fehlt eine unabhaengige Geschwindigkeitsueberwachung, so dass der Bediener nicht ausreichend geschuetzt ist.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"controller", "software"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "IEC 62061", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Sicherheitsumrichter mit SLS", "Unabhaengige Drehzahlmessung", "SIL-2-Geschwindigkeitsueberwachung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("safety_function_failure", 4), Category: "safety_function_failure", Name: "STO-Funktion (Safe Torque Off) Fehler", Description: "Die STO-Sicherheitsfunktion schaltet den Antriebsmoment nicht ab, obwohl die Funktion aktiviert wurde, z.B. durch Fehler im Sicherheits-SPS-Ausgang.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"actuator", "controller"}, RegulationReferences: []string{"IEC 61800-5-2", "Maschinenverordnung 2023/1230", "IEC 62061"}, SuggestedMitigations: mustMarshalJSON([]string{"STO-Pruefung bei Inbetriebnahme", "Pruefzyklus im Betrieb", "Zertifizierter Sicherheitsumrichter"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("safety_function_failure", 5), Category: "safety_function_failure", Name: "Muting-Missbrauch bei Lichtvorhang", Description: "Die Muting-Funktion des Lichtvorhangs wird durch Fehler oder Manipulation zu lange oder unkontrolliert aktiviert, was den Schutz aufhebt.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"sensor", "controller"}, RegulationReferences: []string{"IEC 61496-3", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Zeitbegrenztes Muting", "Muting-Lampe und Alarm", "Protokollierung der Muting-Ereignisse"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("safety_function_failure", 6), Category: "safety_function_failure", Name: "Zweihand-Taster durch Gegenstand ueberbrueckt", Description: "Die Zweihand-Betaetigungseinrichtung wird durch ein eingeklemmtes Objekt permanent aktiviert, was den Bediener aus dem Schutzkonzept loest.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"hmi", "controller"}, RegulationReferences: []string{"ISO 13851", "Maschinenverordnung 2023/1230", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Anti-Tie-Down-Pruefung", "Typ-III-Zweihand-Taster", "Regelmaessige Funktionskontrolle"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("safety_function_failure", 7), Category: "safety_function_failure", Name: "Sicherheitsrelais-Ausfall ohne Erkennung", Description: "Ein Sicherheitsrelais versagt unentdeckt (z.B. verklebte Kontakte), sodass der Sicherheitskreis nicht mehr auftrennt.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"controller"}, RegulationReferences: []string{"ISO 13849", "IEC 62061"}, SuggestedMitigations: mustMarshalJSON([]string{"Selbstueberwachung (zwangsgefuehrt)", "Regelmaessiger Testlauf", "Redundantes Relais"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("safety_function_failure", 8), Category: "safety_function_failure", Name: "Logic-Solver-Fehler in Sicherheits-SPS", Description: "Die Sicherheitssteuerung (Safety-SPS) fuehrt sicherheitsrelevante Logik fehlerhaft aus, z.B. durch Speicherfehler oder Prozessorfehler.", DefaultSeverity: 5, DefaultProbability: 1, ApplicableComponentTypes: []string{"controller", "software"}, RegulationReferences: []string{"IEC 61511", "IEC 61508", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"SIL-zertifizierte SPS", "Watchdog", "Selbsttest-Routinen (BIST)"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: logging_audit_failure (5 entries) // ==================================================================== { ID: hazardUUID("logging_audit_failure", 1), Category: "logging_audit_failure", Name: "Safety-Events nicht protokolliert", Description: "Sicherheitsrelevante Ereignisse (Alarme, Not-Halt-Betaetigungen, Fehlerzustaende) werden nicht in ein Protokoll geschrieben.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "controller"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "IEC 62443", "CRA"}, SuggestedMitigations: mustMarshalJSON([]string{"Pflicht-Logging Safety-Events", "Unveraenderliches Audit-Log", "Log-Integritaetspruefung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("logging_audit_failure", 2), Category: "logging_audit_failure", Name: "Log-Manipulation moeglich", Description: "Authentifizierte Benutzer oder Angreifer koennen Protokolleintraege aendern oder loeschen und so Beweise fuer Sicherheitsvorfaelle vernichten.", DefaultSeverity: 4, DefaultProbability: 2, ApplicableComponentTypes: []string{"software"}, RegulationReferences: []string{"CRA", "IEC 62443"}, SuggestedMitigations: mustMarshalJSON([]string{"Write-Once-Speicher", "Kryptografische Signaturen", "Externes Log-Management"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("logging_audit_failure", 3), Category: "logging_audit_failure", Name: "Log-Overflow ueberschreibt alte Eintraege", Description: "Wenn der Log-Speicher voll ist, werden aeltere Eintraege ohne Warnung ueberschrieben, was eine lueckenlose Rueckverfolgung verhindert.", DefaultSeverity: 3, DefaultProbability: 4, ApplicableComponentTypes: []string{"software", "controller"}, RegulationReferences: []string{"CRA", "IEC 62443"}, SuggestedMitigations: mustMarshalJSON([]string{"Log-Kapazitaetsalarm", "Externes Log-System", "Zirkulaerpuffer mit Warnschwelle"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("logging_audit_failure", 4), Category: "logging_audit_failure", Name: "Fehlende Zeitstempel in Protokolleintraegen", Description: "Log-Eintraege enthalten keine oder ungenaue Zeitstempel, was die zeitliche Rekonstruktion von Ereignissen bei der Fehlersuche verhindert.", DefaultSeverity: 3, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "controller"}, RegulationReferences: []string{"CRA", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"NTP-Synchronisation", "RTC im Geraet", "ISO-8601-Zeitstempel"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("logging_audit_failure", 5), Category: "logging_audit_failure", Name: "Audit-Trail loeschbar durch Bediener", Description: "Der Audit-Trail kann von einem normalen Bediener geloescht werden, was die Nachvollziehbarkeit von Sicherheitsereignissen untergaebt.", DefaultSeverity: 4, DefaultProbability: 2, ApplicableComponentTypes: []string{"software"}, RegulationReferences: []string{"CRA", "IEC 62443", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"RBAC: Nur Admin darf loeschen", "Log-Export vor Loeschung", "Unanderbare Log-Speicherung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: integration_error (8 entries) // ==================================================================== { ID: hazardUUID("integration_error", 1), Category: "integration_error", Name: "Datentyp-Mismatch an Schnittstelle", Description: "Zwei Systeme tauschen Daten ueber eine Schnittstelle aus, die inkompatible Datentypen verwendet, was zu Interpretationsfehlern fuehrt.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "network"}, RegulationReferences: []string{"IEC 62304", "IEC 62443"}, SuggestedMitigations: mustMarshalJSON([]string{"Schnittstellendefinition (IDL/Protobuf)", "Integrationstests", "Datentypvalidierung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("integration_error", 2), Category: "integration_error", Name: "Endianness-Fehler bei Datenuebertragung", Description: "Big-Endian- und Little-Endian-Systeme kommunizieren ohne Byte-Order-Konvertierung, was zu falsch interpretierten numerischen Werten fuehrt.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "network"}, RegulationReferences: []string{"IEC 62304", "IEC 62443"}, SuggestedMitigations: mustMarshalJSON([]string{"Explizite Byte-Order-Definiton", "Integrationstests", "Schnittstellenspezifikation"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("integration_error", 3), Category: "integration_error", Name: "Protokoll-Versions-Konflikt", Description: "Sender und Empfaenger verwenden unterschiedliche Protokollversionen, die nicht rueckwaertskompatibel sind, was zu Paketablehnung oder Fehlinterpretation fuehrt.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "network", "firmware"}, RegulationReferences: []string{"IEC 62443", "CRA"}, SuggestedMitigations: mustMarshalJSON([]string{"Versions-Aushandlung beim Verbindungsaufbau", "Backward-Compatibilitaet", "Kompatibilitaets-Matrix"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("integration_error", 4), Category: "integration_error", Name: "Timeout nicht behandelt bei Kommunikation", Description: "Eine Kommunikationsverbindung bricht ab oder antwortet nicht, der Sender erkennt dies nicht und wartet unendlich lang.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "network"}, RegulationReferences: []string{"IEC 62443", "Maschinenverordnung 2023/1230"}, SuggestedMitigations: mustMarshalJSON([]string{"Timeout-Konfiguration", "Watchdog-Timer", "Fail-Safe bei Verbindungsverlust"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("integration_error", 5), Category: "integration_error", Name: "Buffer Overflow an Schnittstelle", Description: "Eine Schnittstelle akzeptiert Eingaben, die groesser als der zugewiesene Puffer sind, was zu Speicher-Ueberschreibung und Kontrollfluss-Manipulation fuehrt.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "firmware", "network"}, RegulationReferences: []string{"CRA", "IEC 62443", "IEC 62304"}, SuggestedMitigations: mustMarshalJSON([]string{"Laengenvalidierung", "Sichere Puffer-Funktionen", "Statische Analyse (z.B. MISRA)"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("integration_error", 6), Category: "integration_error", Name: "Fehlender Heartbeat bei Safety-Verbindung", Description: "Eine Safety-Kommunikationsverbindung sendet keinen periodischen Heartbeat, so dass ein stiller Ausfall (z.B. unterbrochenes Kabel) nicht erkannt wird.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"network", "software"}, RegulationReferences: []string{"IEC 61784-3", "ISO 13849", "IEC 62061"}, SuggestedMitigations: mustMarshalJSON([]string{"Heartbeat-Protokoll", "Verbindungsueberwachung", "Safe-State bei Heartbeat-Ausfall"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("integration_error", 7), Category: "integration_error", Name: "Falscher Skalierungsfaktor bei Sensordaten", Description: "Sensordaten werden mit einem falschen Faktor skaliert, was zu signifikant fehlerhaften Messwerten und moeglichen Fehlentscheidungen fuehrt.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"sensor", "software"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "IEC 62304"}, SuggestedMitigations: mustMarshalJSON([]string{"Kalibrierungspruefung", "Plausibilitaetstest", "Schnittstellendokumentation"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("integration_error", 8), Category: "integration_error", Name: "Einheitenfehler (mm vs. inch)", Description: "Unterschiedliche Masseinheiten zwischen Systemen fuehren zu fehlerhaften Bewegungsbefehlen oder Werkzeugpositionierungen.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"software", "hmi"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "IEC 62304"}, SuggestedMitigations: mustMarshalJSON([]string{"Explizite Einheitendefinition", "Einheitenkonvertierung in der Schnittstelle", "Integrationstests"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: environmental_hazard (5 entries) // ==================================================================== { ID: hazardUUID("environmental_hazard", 1), Category: "environmental_hazard", Name: "Ausfall durch hohe Umgebungstemperatur", Description: "Hohe Umgebungstemperaturen ueberschreiten die spezifizierten Grenzwerte der Elektronik oder Aktorik und fuehren zu Fehlfunktionen.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"controller", "sensor"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "IEC 60068-2"}, SuggestedMitigations: mustMarshalJSON([]string{"Betriebstemperatur-Spezifikation einhalten", "Klimaanlagensystem", "Temperatursensor + Abschaltung"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("environmental_hazard", 2), Category: "environmental_hazard", Name: "Ausfall bei Tieftemperatur", Description: "Sehr tiefe Temperaturen reduzieren die Viskositaet von Hydraulikfluessigkeiten, beeinflussen Elektronik und fuehren zu mechanischen Ausfaellen.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"actuator", "controller"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "IEC 60068-2"}, SuggestedMitigations: mustMarshalJSON([]string{"Tieftemperatur-spezifizierte Komponenten", "Heizung im Schaltschrank", "Anlaeufroutine bei Kaeltestart"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("environmental_hazard", 3), Category: "environmental_hazard", Name: "Korrosion durch Feuchtigkeit", Description: "Hohe Luftfeuchtigkeit oder Kondenswasser fuehrt zur Korrosion von Kontakten und Leiterbahnen, was zu Ausfaellen und Isolationsfehlern fuehrt.", DefaultSeverity: 3, DefaultProbability: 4, ApplicableComponentTypes: []string{"controller", "sensor"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "IEC 60529"}, SuggestedMitigations: mustMarshalJSON([]string{"IP-Schutz entsprechend der Umgebung", "Belueftung mit Filter", "Regelmaessige Inspektion"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("environmental_hazard", 4), Category: "environmental_hazard", Name: "Fehlfunktion durch Vibrationen", Description: "Mechanische Vibrationen lockern Verbindungen, schuetteln Kontakte auf oder beschaedigen Loetpunkte in Elektronikbaugruppen.", DefaultSeverity: 4, DefaultProbability: 3, ApplicableComponentTypes: []string{"controller", "sensor"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "IEC 60068-2-6"}, SuggestedMitigations: mustMarshalJSON([]string{"Vibrationsdaempfung", "Vergossene Elektronik", "Regelmaessige Verbindungskontrolle"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("environmental_hazard", 5), Category: "environmental_hazard", Name: "Kontamination durch Staub oder Fluessigkeiten", Description: "Staub, Metallspaeene oder Kuehlmittel gelangen in das Gehaeuseinnere und fuehren zu Kurzschluessen, Isolationsfehlern oder Kuehlproblemen.", DefaultSeverity: 3, DefaultProbability: 4, ApplicableComponentTypes: []string{"controller", "hmi"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "IEC 60529"}, SuggestedMitigations: mustMarshalJSON([]string{"Hohe IP-Schutzklasse", "Dichtungen regelmaessig pruefen", "Ueberdruck im Schaltschrank"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, // ==================================================================== // Category: maintenance_hazard (6 entries) // ==================================================================== { ID: hazardUUID("maintenance_hazard", 1), Category: "maintenance_hazard", Name: "Wartung ohne LOTO-Prozedur", Description: "Wartungsarbeiten werden ohne korrekte Lockout/Tagout-Prozedur durchgefuehrt, sodass die Maschine waehrend der Arbeit anlaufen kann.", DefaultSeverity: 5, DefaultProbability: 3, ApplicableComponentTypes: []string{"controller", "software"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.6.3"}, SuggestedMitigations: mustMarshalJSON([]string{"LOTO-Funktion in Software", "Schulung", "Prozedur im Betriebshandbuch"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("maintenance_hazard", 2), Category: "maintenance_hazard", Name: "Fehlende LOTO-Funktion in Software", Description: "Die Steuerungssoftware bietet keine Moeglichkeit, die Maschine fuer Wartungsarbeiten sicher zu sperren und zu verriegeln.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "hmi"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.6.3"}, SuggestedMitigations: mustMarshalJSON([]string{"Software-LOTO implementieren", "Wartungsmodus mit Schluessel", "Energiesperrfunktion"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("maintenance_hazard", 3), Category: "maintenance_hazard", Name: "Wartung bei laufender Maschine", Description: "Wartungsarbeiten werden an betriebener Maschine durchgefuehrt, weil kein erzwungener Wartungsmodus vorhanden ist.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "controller"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Erzwungenes Abschalten fuer Wartungsmodus", "Schluesselschalter", "Schutzmassnahmen im Wartungsmodus"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("maintenance_hazard", 4), Category: "maintenance_hazard", Name: "Wartungs-Tool ohne Zugangskontrolle", Description: "Ein Diagnose- oder Wartungswerkzeug ist ohne Authentifizierung zugaenglich und ermoeglicht die unbeaufsichtigte Aenderung von Sicherheitsparametern.", DefaultSeverity: 4, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "hmi"}, RegulationReferences: []string{"IEC 62443", "CRA"}, SuggestedMitigations: mustMarshalJSON([]string{"Authentifizierung fuer Wartungs-Tools", "Rollenkonzept", "Audit-Log fuer Wartungszugriffe"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("maintenance_hazard", 5), Category: "maintenance_hazard", Name: "Unsichere Demontage gefaehrlicher Baugruppen", Description: "Die Betriebsanleitung beschreibt nicht, wie gefaehrliche Baugruppen (z.B. Hochvolt, gespeicherte Energie) sicher demontiert werden.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"other"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.7.4"}, SuggestedMitigations: mustMarshalJSON([]string{"Detaillierte Demontageanleitung", "Warnhinweise an Geraet", "Schulung des Wartungspersonals"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, { ID: hazardUUID("maintenance_hazard", 6), Category: "maintenance_hazard", Name: "Wiederanlauf nach Wartung ohne Freigabeprozedur", Description: "Nach Wartungsarbeiten wird die Maschine ohne formelle Freigabeprozedur wieder in Betrieb genommen, was zu Verletzungen bei noch anwesendem Personal fuehren kann.", DefaultSeverity: 5, DefaultProbability: 2, ApplicableComponentTypes: []string{"software", "hmi"}, RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.6.3", "ISO 13849"}, SuggestedMitigations: mustMarshalJSON([]string{"Software-Wiederanlauf-Freigabe", "Gefahrenbereich-Pruefung vor Anlauf", "Akustisches Warnsignal vor Anlauf"}), IsBuiltin: true, TenantID: nil, CreatedAt: now, }, } entries = append(entries, extended...) return entries }