Bundesamt für Sicherheit in der Informationstechnik

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

Stand: 15. EL Stand 2016