package iace import "time" // builtinHazardsSoftwareHMI returns hazard library entries for // software faults and HMI errors. func builtinHazardsSoftwareHMI() []HazardLibraryEntry { now := time.Now() return []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, }, } }