B 5.27 Software-Entwicklung

Beschreibung
Häufig hat verfügbare Standardsoftware nicht den erwarteten Funktionsumfang oder entspricht nicht den gewünschten Anforderungen. Ebenso existieren in vielen Institutionen bereits individuell entwickelte Software-Produkte, die veraltet sind oder um zusätzliche Funktionen erweitert werden müssen, um sie an neue bzw. geänderte Geschäftsprozesse anzupassen. Diese Anforderungen kann oft nur eine eigenentwickelte Software erfüllen.
Der Baustein Software-Entwicklung beschäftigt sich mit allen relevanten Aspekten, die von Institutionen bei der Verwendung von eigenentwickelter Software zu beachten sind. Hierzu werden Vorbereitung, Abwicklung und Inbetriebnahme seitens der Institution betrachtet und dementsprechende Gefährdungen und Maßnahmen ausgewählt.
Der Baustein stellt keine vollständige Anleitung zur generellen Vorgehensweise bei der Software-Entwicklung dar, sondern konzentriert sich auf die relevanten Aspekte der Informationssicherheit bei der Software-Entwicklung. Mit diesem Baustein werden die Bausteine B 5.25 Allgemeine Anwendungen und B 1.10 Standardsoftware um konkrete Umsetzungshinweise zur Eigenentwicklung von Software erweitert.
Gefährdungslage
Für die Software-Entwicklung werden für den IT-Grundschutz die folgenden typischen Gefährdungen angenommen:
Höhere Gewalt
- | G 1.2 | Ausfall von IT-Systemen |
Organisatorische Mängel
- | G 2.1 | Fehlende oder unzureichende Regelungen |
- | G 2.2 | Unzureichende Kenntnis über Regelungen |
- | G 2.4 | Unzureichende Kontrolle der Sicherheitsmaßnahmen |
- | G 2.7 | Unerlaubte Ausübung von Rechten |
- | G 2.26 | Fehlendes oder unzureichendes Test- und Freigabeverfahren |
- | G 2.27 | Fehlende oder unzureichende Dokumentation |
- | G 2.28 | Verstöße gegen das Urheberrecht |
- | G 2.29 | Softwaretest mit Produktionsdaten |
- | G 2.66 | Unzureichendes Sicherheitsmanagement |
- | G 2.67 | Ungeeignete Verwaltung von Zutritts-, Zugangs- und Zugriffsrechten |
- | G 2.87 | Verwendung unsicherer Protokolle in öffentlichen Netzen |
- | G 2.209 | Auswahl einer ungeeigneten Entwicklungsumgebung für Software |
- | G 2.210 | Unzureichend gesicherter Einsatz von Entwicklungsumgebungen |
- | G 2.211 | Auswahl eines ungeeigneten Vorgehensmodells zur Software-Entwicklung |
- | G 2.212 | Unzureichende Berücksichtigung von Konfigurationsoptionen bei der Software-Entwicklung |
- | G 2.213 | Fehlende oder unzureichende Qualitätssicherung des Softwareentwicklungsprozesses |
Menschliche Fehlhandlungen
- | G 3.1 | Vertraulichkeits- oder Integritätsverlust von Daten durch Fehlverhalten |
- | G 3.3 | Nichtbeachtung von Sicherheitsmaßnahmen |
- | G 3.9 | Fehlerhafte Administration von IT-Systemen |
- | G 3.16 | Fehlerhafte Administration von Zugangs- und Zugriffsrechten |
- | G 3.32 | Verstoß gegen rechtliche Rahmenbedingungen beim Einsatz von kryptographischen Verfahren |
Technisches Versagen
- | G 4.33 | Schlechte oder fehlende Authentikationsverfahren und -mechanismen |
- | G 4.35 | Unsichere kryptographische Algorithmen |
- | G 4.39 | Software-Konzeptionsfehler |
Vorsätzliche Handlungen
- | G 5.2 | Manipulation an Informationen oder Software |
- | G 5.9 | Unberechtigte IT-Nutzung |
- | G 5.21 | Trojanische Pferde |
- | G 5.23 | Schadprogramme |
- | G 5.28 | Verhinderung von Diensten |
- | G 5.71 | Vertraulichkeitsverlust schützenswerter Informationen |
- | G 5.84 | Gefälschte Zertifikate |
- | G 5.85 | Integritätsverlust schützenswerter Informationen |
Maßnahmenempfehlungen
Um einen Informationsverbund abzusichern, müssen gemäß den Ergebnissen der Modellierung nach IT-Grundschutz zusätzlich zu diesem Baustein noch weitere Bausteine umgesetzt werden.
Wenn die entwickelte Software im Produktivbetrieb eingesetzt wird, ist für die organisatorischen Aspekte der übergreifende Bausteins B 1.10 Standardsoftware zusätzlich zu beachten. Weiterhin beschreibt der Baustein B 5.25 Allgemeine Anwendungen Vorgehensweisen zum Einsatz von Software und ist immer gemeinsam mit diesem Baustein umzusetzen. Insbesondere die Phasen Betrieb, Aussonderung und Notfallvorsorge gelten hier gleichermaßen für individuell entwickelte Software. Bei der Entwicklung von Webanwendungen ist B 5.21 Webanwendungen zu beachten.
Planung und Konzeption
Eine sorgfältige Planung und Konzeption ist essenziell bei der Entwicklung von Software. Es sind die Verantwortlichkeiten festzulegen (siehe M 2.569 Definition von Rollen und Verantwortlichkeiten bei der Software-Entwicklung) und ein Vorgehensmodell auszuwählen (siehe M 2.570 Auswahl eines Vorgehensmodells zur Software-Entwicklung). Bei der gesamten Software-Entwicklung sind gesetzliche und regulatorische Vorgaben zu berücksichtigen (siehe M 2.571 Berücksichtigung von Compliance-Anforderungen für die Software-Entwicklung).
Beschaffung
Es muss eine geeignete Entwicklungsumgebung ausgewählt werden (siehe M 4.493 Auswahl einer Entwicklungsumgebung für die Software-Entwicklung und M 2.567 Auswahl vertrauenswürdiger Entwicklungswerkzeuge). Werkzeuge für die Software-Entwicklung sollten nach standardisierten, dokumentierten Vorgehensweisen beschafft werden (siehe M 2.572 Beschaffung von Werkzeugen zur Software-Entwicklung).
Umsetzung
Während der Software-Entwicklung muss die Entwicklungsumgebung sicher eingesetzt werden (siehe M 4.494 Sicherer Einsatz einer Entwicklungsumgebung). Das Design der Software muss möglichst sicher sein (siehe M 4.495 Sicheres Systemdesign bei der Software-Entwicklung) und ebenfalls möglichst sicher implementiert werden (siehe M 2.573 Einhaltung einer sicheren Vorgehensweise bei der Software-Entwicklung und M 4.42 Implementierung von Sicherheitsfunktionalitäten in der IT-Anwendung). Die Ergebnisse der Software-Entwicklung müssen vor der produktiven Inbetriebnahme ausreichend getestet werden (siehe M 2.568 Testverfahren für Software). Der gesamte Entwicklungsprozess muss vollständig dokumentiert werden (siehe M 2.574 Ausführliche Dokumentation der Software-Entwicklung) und die beteiligten Mitarbeiter sind entsprechend zu schulen (siehe M 3.97 Schulung des Projektteams für die Software-Entwicklung).
Betrieb
Zur Inbetriebnahme muss die Software sicher installiert werden (siehe M 4.496 Sichere Installation der entwickelten Software). Relevante Patches und Updates müssen umgehend angewendet werden (siehe M 2.273 Zeitnahes Einspielen sicherheitsrelevanter Patches und Updates). Änderungen an der Konfiguration müssen sorgfältig durchgeführt werden (siehe M 4.78 Sorgfältige Durchführung von Konfigurationsänderungen). Die Integrität der Software ist regelmäßig zu überprüfen (siehe M 4.93 Regelmäßige Integritätsprüfung).
Aussonderung
Individuell entwickelte Software ist bei der Aussonderung analog zu Standardsoftware (siehe B 1.10 Standardsoftware und B 5.25 Allgemeine Anwendungen) zu behandeln.
Notfallvorsorge
Um eventuellen Ausfällen vorzubeugen, sind Maßnahmen zur Notfallvorsorge zu treffen (siehe M 6.164 Notfallvorsorge bei der Software-Entwicklung). Damit sich die Software-Entwicklung bei unerwarteten Datenverlusten auf den Entwicklungssystemen nicht verzögert, sind die Entwicklungsdaten regelmäßig zu sichern (siehe M 6.32 Regelmäßige Datensicherung).
Planung und Konzeption
- | M 2.164 | (A) | Auswahl eines geeigneten kryptographischen Verfahrens |
- | M 2.569 | (A) | Definition von Rollen und Verantwortlichkeiten bei der Software-Entwicklung |
- | M 2.570 | (A) | Auswahl eines Vorgehensmodells zur Software-Entwicklung |
- | M 2.571 | (A) | Berücksichtigung von Compliance-Anforderungen für die Software-Entwicklung |
- | M 4.34 | (Z) | Einsatz von Verschlüsselung, Checksummen oder Digitalen Signaturen |
Beschaffung
- | M 2.567 | (Z) | Auswahl vertrauenswürdiger Entwicklungswerkzeuge |
- | M 2.572 | (Z) | Beschaffung von Werkzeugen zur Software-Entwicklung |
- | M 4.493 | (Z) | Auswahl einer Entwicklungsumgebung für die Software-Entwicklung |
Umsetzung
- | M 2.568 | (A) | Testverfahren für Software |
- | M 2.573 | (A) | Einhaltung einer sicheren Vorgehensweise bei der Software-Entwicklung |
- | M 2.574 | (Z) | Ausführliche Dokumentation der Software-Entwicklung |
- | M 3.97 | (C) | Schulung des Projektteams für die Software-Entwicklung |
- | M 4.42 | (Z) | Implementierung von Sicherheitsfunktionalitäten in der IT-Anwendung |
- | M 4.95 | (A) | Minimales Betriebssystem |
- | M 4.494 | (B) | Sicherer Einsatz einer Entwicklungsumgebung |
- | M 4.495 | (A) | Sicheres Systemdesign bei der Software-Entwicklung |
Betrieb
- | M 2.273 | (A) | Zeitnahes Einspielen sicherheitsrelevanter Patches und Updates |
- | M 2.575 | (Z) | Regelmäßige Sicherheitsaudits für die Software-Entwicklungsumgebung |
- | M 4.33 | (A) | Einsatz eines Viren-Suchprogramms bei Datenträgeraustausch und Datenübertragung |
- | M 4.78 | (A) | Sorgfältige Durchführung von Konfigurationsänderungen |
- | M 4.93 | (Z) | Regelmäßige Integritätsprüfung |
- | M 4.496 | (C) | Sichere Installation der entwickelten Software |
Notfallvorsorge
- | M 6.32 | (A) | Regelmäßige Datensicherung |
- | M 6.41 | (A) | Übungen zur Datenrekonstruktion |
- | M 6.164 | (A) | Notfallvorsorge bei der Software-Entwicklung |