Die Richtlinie zur sicheren Softwareentwicklung ist das umfangreichste technische Dokument in deinem ISMS. Neun Annex-A-Controls (A 8.25 bis A 8.31 plus A 8.33 und A 8.34) decken den gesamten Lebenszyklus ab: vom Threat Model über sichere Architektur und Coding Standards bis zum Penetrationstest und der sicheren Entsorgung von Testdaten. Wenn deine Organisation Software entwickelt — intern oder ausgelagert — führt kein Weg an diesem Dokument vorbei.
BSI IT-Grundschutz widmet dem Thema den Baustein CON.8 (Softwareentwicklung) und mehrere Anwendungsbausteine. Weiter unten findest du die vollständige Vorlage.
Was deckt die Vorlage ab?
Secure Development Life Cycle (Abschnitt 3) — Methodenunabhängiges Framework mit Security Checkpoints an definierten Meilensteinen, Threat Modelling im Design, sicheren Coding-Richtlinien pro Programmiersprache, versionskontrollierter Quellcode mit Branch Protection, Entwickler-Schulung vor Beiträgen zu sicherheitsrelevantem Code.
Application Security Requirements (Abschnitt 4) — Anforderungen nach OWASP-Muster: Authentisierung nach Schutzbedarf, Input-Validierung serverseitig, Output Encoding gegen Injection, Error Handling ohne Systemdetails, Transaktionssicherheit mit digitalen Signaturen und Non-Repudiation, Verschlüsselung nach Klassifizierung.
Sichere Architektur (Abschnitt 5) — Zwölf Design-Prinzipien (Security by Design, Defence in Depth, Default Deny, Fail Securely, Assume Breach, Least Privilege u.a.), Zero-Trust-Architektur (Never Trust Always Verify, End-to-End-Verschlüsselung, dynamische Zugriffskontrolle), Security-orientierter Design-Review vor Implementierungsbeginn, Systemhärtung vor Deployment.
Secure Coding (Abschnitt 6) — Planung (Defekt-Katalog, Tool-Konfiguration, Entwicklerqualifikation), Coding (sprachspezifische Praktiken, Pair Programming für sicherheitskritischen Code, SAST in Pipeline blockiert Build bei Findings, OWASP Top 10 / CWE Top 25 Analyse vor Release), verbotene Patterns (hardcoded Credentials, deaktivierte Zertifikatsvalidierung u.a.), Review und Wartung (External Library Inventory, Provenance-Prüfung, Langzeitverfügbarkeit).
Security Testing (Abschnitt 7) — Code Review, Vulnerability Scanning, Penetrationstests für Systeme mit erhöhtem Schutzbedarf. Formale Release-Erklärung nach erfolgreichem Abschluss aller Tests. Regressionstests prüfen, dass Sicherheitsmechanismen durch Updates nicht verändert werden.
Outsourced Development (Abschnitt 8) — Elf Vertragsanforderungen: IP-Eigentum, Secure-Coding-Pflicht, Threat-Model-Bereitstellung, Abnahmetests, Sicherheitsfähigkeit-Nachweise (ISO 27001, SOC 2), Malware-Prüfung, SAST-Reports bei jeder Lieferung, Quellcode-Escrow, Audit-Rechte, Umgebungssicherheit, geltende Gesetzgebung.
Umgebungstrennung (Abschnitt 9) — Dev/Test/Prod in separaten Domänen, farbkodierte Umgebungslabels, Vier-Augen-Prinzip bei Deployment, kein Test in Produktion (außer dokumentiert genehmigt), keine Entwicklertools in Produktion.
Testdaten und Audit-Schutz (Abschnitte 10–11) — Testdaten anonymisiert/pseudonymisiert, separate Genehmigung pro Datenkopie, Löschung nach Testabschluss. Audit-Zugriff read-only, zeitlich begrenzt, protokolliert.
So führst du die Richtlinie ein
- 01
Security Champions benennen
Jedes Entwicklungsteam braucht eine Ansprechperson für Sicherheitsthemen. Der Security Champion ist kein Vollzeit-Sicherheitsexperte, sondern ein erfahrener Entwickler, der Threat Modelling moderiert, Code Reviews mit Sicherheitsfokus durchführt und die Brücke zum ISB bildet.
- 02
SAST in die Pipeline integrieren
Wähle ein SAST-Tool (SonarQube, Semgrep, Snyk Code, Checkmarx) und integriere es so, dass es bei jedem Merge Request läuft. Definiere Schwellwerte: Welche Schweregrade blockieren den Build? Starte konservativ (nur Critical und High) und ziehe die Schwelle schrittweise an.
- 03
Secure Coding Standards dokumentieren
Die Vorlage verlangt sprachspezifische Coding-Richtlinien. Nimm die OWASP-Standards als Basis und ergänze organisationsspezifische Regeln. Definiere die verbotenen Patterns (hardcoded Credentials, deaktivierte Zertifikatsvalidierung) und automatisiere deren Erkennung.
- 04
Umgebungen trennen
Dev, Test und Prod in separaten Netzwerken oder VM-Domains. Farbkodierte Banner in den Anwendungen („DEV“ grün, „STAGING“ gelb, „PROD“ rot), damit niemand versehentlich in der falschen Umgebung arbeitet. Deployment nur über die Pipeline, nie per Hand.
- 05
Vorlage anpassen
Streiche, was nicht zutrifft. Keine eigene Softwareentwicklung? Dann reichen die Abschnitte zu Outsourced Development und Acquisition. Kein E-Commerce? Abschnitt 4.3 (Electronic Ordering & Payment) entfällt. Kein Audit-Testing durch externe? Abschnitt 11 kürzen.
Wo es in der Praxis schiefgeht
1. Keine Umgebungstrennung. Entwickler testen auf Produktionsdaten, weil „es schneller geht“. Ein fehlgeschlagenes Experiment löscht Kundendaten. Die Vorlage verlangt strikte Trennung und Anonymisierung.
2. SAST-Ergebnisse ignoriert. Das Tool läuft, aber die Findings werden als „False Positives“ markiert, ohne sie zu prüfen. Übrig bleiben echte Schwachstellen. Die Vorlage verlangt, dass Findings über dem Schwellwert den Build blockieren.
3. Outsourced Development ohne Vertragsklauseln. Der Dienstleister liefert Code, aber der Vertrag enthält keine Secure-Coding-Pflichten, keine Audit-Rechte und kein Quellcode-Escrow. Im Vorfallfall fehlt jede Handhabe.
4. Hardcoded Credentials. API-Keys und Datenbankpasswörter im Quellcode. Spätestens wenn das Repository versehentlich öffentlich wird, ist der Schaden enorm. Die Vorlage verbietet das explizit und verlangt automatisierte Erkennung in der Pipeline.
5. Keine Release-Freigabe. Software wird deployt, ohne dass jemand formal bestätigt hat, dass alle Sicherheitsanforderungen erfüllt sind. Die Vorlage verlangt eine formale Release-Erklärung nach erfolgreichem Abschluss aller Tests.
Vorlage: Richtlinie zur sicheren Softwareentwicklung
Dokumentenkontrolle
Eigentümer: [RICHTLINIEN_EIGENTÜMER_ROLLE, z. B. Informationssicherheitsbeauftragte/r]
Genehmigt von: [GENEHMIGER_NAME_UND_ROLLE]
Version: [VERSION]
Gültig ab: [GÜLTIGKEITSDATUM]
Nächste Überprüfung: [NÄCHSTES_ÜBERPRÜFUNGSDATUM]
1. Rechtliche/Regulatorische Grundlage
ISO/IEC 27001:2022 / ISO/IEC 27002:2022, Anhang A — Technologische Maßnahmen:
- A 8.25 — Sicherer Entwicklungslebenszyklus
- A 8.26 — Anforderungen an die Anwendungssicherheit
- A 8.27 — Grundsätze sicherer Systemarchitektur und -entwicklung
- A 8.28 — Sichere Programmierung
- A 8.29 — Sicherheitstests in Entwicklung und Abnahme
- A 8.30 — Ausgelagerte Entwicklung
- A 8.31 — Trennung von Entwicklungs-, Test- und Produktionsumgebungen
- A 8.33 — Testinformationen
- A 8.34 — Schutz von Informationssystemen bei Audittests
BSI IT-Grundschutz:
- CON.8 (Softwareentwicklung)
- CON.10 (Entwicklung von Webanwendungen)
- APP.6 (Allgemeine Software)
- APP.7 (Entwicklung von Individualsoftware)
- OPS.1.1.6 (Softwaretests und -freigaben)
- OPS.2.3 (Outsourcing für Kunden)
- ISMS.1 (Sicherheitsmanagement)
- DER.3.1 (Audits und Revisionen)
- DER.3.2 (Audits auf Basis des Leitfadens IS-Revision)
Weitere jurisdiktionsspezifische Gesetze — insbesondere Datenschutzrecht (DSGVO), Exportkontrolle, sektorspezifische Compliance-Anforderungen (z. B. Finanzdienstleistungen, Gesundheitswesen) und Softwarehaftungspflichten — sind im Rechtsregister aufgeführt und werden durch Verweis einbezogen.
2. Zweck & Geltungsbereich
Diese Richtlinie legt die Regeln für die sichere Softwareentwicklung bei [IHR_ORGANISATIONSNAME] fest. Sie deckt den sicheren Entwicklungslebenszyklus, Anforderungen an die Anwendungssicherheit, Grundsätze sicherer Systemarchitektur und -entwicklung, sichere Programmierung, Sicherheitstests, ausgelagerte Entwicklung, Umgebungstrennung, Schutz von Testinformationen und Schutzmaßnahmen bei Audittests ab.
Die Richtlinie gilt für alle an Softwareentwicklung, -tests, -bereitstellung und -wartung beteiligten Personen, einschließlich interner Entwickler, Architekten, Tester, Projektmanager, Betriebspersonal und externer Entwicklungspartner.
3. Sicherer Entwicklungslebenszyklus (A 8.25)
Ein sicherer Entwicklungslebenszyklus steuert alle Softwareentwicklungsaktivitäten. Für jedes Projekt oder Produkt wird eine geeignete Entwicklungsmethodik gewählt — ob klassisches Wasserfall-, agiles oder Continuous-Delivery-Modell — und deckt Sicherheitsanforderungen in jeder Phase von der Konzeption bis zur Bereitstellung und Wartung ab. Die Methodik ist dokumentiert und wird an alle Entwicklungsteams kommuniziert.
3.1 Lebenszyklus-Elemente
- Umgebungstrennung: Entwicklungs-, Test- und Produktionsumgebungen werden angemessen getrennt, um unbefugten Zugriff und unbeabsichtigte Änderungen an Produktionssystemen zu verhindern. Es werden getrennte virtuelle oder physische Domänen verwendet (siehe Abschnitt zur Umgebungstrennung dieser Richtlinie).
- Sicherheit in der Methodik: Sicherheitsaktivitäten sind in jede Phase der gewählten Entwicklungsmethodik eingebettet. Dazu gehören Threat Modelling während des Designs, sichere Architekturüberprüfungen vor der Implementierung und Sicherheitsfreigabe vor dem Release.
- Leitlinien zur sicheren Programmierung: Sprachspezifische Leitlinien zur sicheren Programmierung werden für jede verwendete Programmiersprache gepflegt. Diese Leitlinien definieren genehmigte Muster, verbotene Konstrukte (z. B. hartkodierte Anmeldeinformationen, unsichere Standardeinstellungen) und Namenskonventionen.
- Sicherheitsanforderungen in Spezifikation & Design: Sicherheitsanforderungen werden in der Spezifikations- und Designphase jedes Projekts identifiziert, basierend auf der Informationsklassifizierung und den Schutzanforderungen der verarbeiteten Daten (siehe Projektsicherheitsanforderungen).
- Sicherheits-Checkpoints: Sicherheits-Checkpoints sind an definierten Meilensteinen jedes Projekts integriert. An jedem Checkpoint verifiziert das Projektteam, dass die geltenden Sicherheitsanforderungen erfüllt sind, bevor die nächste Phase beginnt.
- System- & Sicherheitstests: Umfassende Tests werden während des gesamten Entwicklungsprozesses durchgeführt, einschließlich Funktionstests, Regressionstests, automatisierter statischer Codeanalyse (SAST), dynamischer Anwendungssicherheitstests (DAST) und Penetrationstests für Systeme mit erhöhten Schutzanforderungen.
- Sichere Repositories: Quellcode und Konfigurationsartefakte werden in zugangskontrollierten Repositories gespeichert. Der Zugriff folgt dem Prinzip des geringsten Privilegs, und alle Änderungen sind über den Versionsverlauf nachvollziehbar.
- Versionskontroll-Sicherheit: Versionskontrollsysteme erzwingen die Nachverfolgbarkeit von Änderungen — jeder Commit ist einem identifizierten Autor zugeordnet. Branch-Protection-Regeln verhindern direkte Pushes auf Release-Branches, und ein Sicherungskonzept deckt alle Repositories ab.
- Sicherheitswissen & Schulung: Entwickler erhalten Schulungen in sicheren Entwicklungspraktiken, bevor sie zu sicherheitsrelevantem Code beitragen. Schulungen umfassen Anforderungsanalyse, Threat Modelling, sichere Architektur, sichere Programmiertechniken und Sicherheitstestmethoden.
- Entwicklerkompetenz: Entwickler sind qualifiziert, Sicherheitsschwachstellen zu verhindern, zu finden und zu beheben. Die Qualifikation wird durch Schulungsnachweise, Teilnahme an Code-Reviews und nachgewiesene Kompetenz im Umgang mit statischen Analyse- und Schwachstellenscanner-Werkzeugen verifiziert.
- Lizenzierung & Alternativen: Softwarelizenzanforderungen werden bei der Technologieauswahl bewertet. Alternativen werden geprüft, um kosteneffiziente Lösungen sicherzustellen und zukünftige Lizenzkonflikte oder Vendor-Lock-in zu vermeiden (siehe IPR-Compliance).
- Gewährleistung bei ausgelagerter Entwicklung: Wo Entwicklung ausgelagert wird, liefert der Lieferant eine dokumentierte Zusicherung der Einhaltung dieser Regeln zur sicheren Entwicklung. Vertragsklauseln, Auditrechte und Nachweise sicherer Praktiken sind erforderlich (siehe Abschnitt zur ausgelagerten Entwicklung dieser Richtlinie).
Projekt-, Funktions- und Schnittstellendokumentation wird über den gesamten Lebenszyklus hinweg gepflegt. Sicherheitsrelevante Aspekte werden getrennt für Administratoren und Nutzer dokumentiert. Architekturdiagramme und Threat-Modelle werden aktuell gehalten, während sich das System weiterentwickelt.
4. Anforderungen an die Anwendungssicherheit (A 8.26)
Informationssicherheitsanforderungen werden als Teil der Anforderungsanalyse für jede Anwendung, die organisatorische Informationen verarbeitet, speichert oder überträgt, identifiziert, spezifiziert und genehmigt. Diese Anforderungen leiten sich aus dem Geschäftskontext, der Klassifizierung der betroffenen Informationen, geltender Gesetzgebung und dem Risikoappetit der Organisation ab.
4.1 Allgemeine Anforderungen
- Identitätsvertrauen & Authentifizierung: Der erforderliche Grad des Vertrauens in die Nutzeridentität wird für jede Anwendung festgelegt. Authentifizierungsmechanismen werden entsprechend gewählt — von einfacher passwortbasierter Anmeldung für wenig sensible Funktionen bis hin zur Multi-Faktor-Authentifizierung für privilegierten oder hochklassifizierten Zugriff (siehe Zugriffskontroll-Richtlinie).
- Informationstyp & Klassifizierung: Jede Anwendung identifiziert die Typen und Klassifizierungsstufen der von ihr verarbeiteten Informationen. Verarbeitungs-, Speicher- und Anzeigemaßnahmen sind auf die geltende Klassifizierungsstufe abgestimmt.
- Trennung von Zugriffen: Der Zugriff auf Daten und Funktionen innerhalb der Anwendung wird nach Rollen und Verantwortlichkeiten getrennt. Der für jede Rolle gewährte Zugriffsumfang wird dokumentiert, und rollenbasierte Zugriffskontrolle (RBAC) setzt das Prinzip des geringsten Privilegs durch.
- Widerstandsfähigkeit gegen Angriffe: Anwendungen werden so gestaltet, dass sie böswilligen Angriffen und unbeabsichtigten Störungen standhalten. Eingabevalidierung erfolgt serverseitig, Ausgabekodierung verhindert Injection-Angriffe (z. B. SQL-Injection, Cross-Site-Scripting), und Pufferüberlaufschutz wird angewendet.
- Rechtliche & regulatorische Compliance: Rechtliche, gesetzliche und regulatorische Anforderungen, die in jeder Jurisdiktion gelten, in der eine Transaktion erzeugt, verarbeitet, abgeschlossen oder gespeichert wird, werden bei der Anforderungsanalyse identifiziert und im Anwendungsdesign berücksichtigt.
- Datenschutzanforderungen: Datenschutzanforderungen werden für alle Parteien bewertet, deren personenbezogene Daten von der Anwendung verarbeitet werden. Datenminimierung, Zweckbindung und Einwilligungsmanagement werden im Design behandelt.
- Schutz vertraulicher Informationen: Vertrauliche Informationen erhalten dedizierte Schutzmaßnahmen — Verschlüsselung im Ruhezustand und während der Übertragung, Zugriffsprotokollierung und eingeschränkte Anzeige (z. B. Maskierung in Benutzeroberflächen).
- Datenschutz in Ruhe & Transit: Daten werden während der Verarbeitung, bei der Übertragung und im Ruhezustand mit Verschlüsselungsalgorithmen und Schlüssellängen geschützt, die der Klassifizierungsstufe angemessen sind. Temporär gespeicherte sensible Daten (z. B. in Caches oder Session-Storage) werden gelöscht, wenn sie nicht mehr benötigt werden.
- Kommunikationsverschlüsselung: Kommunikation zwischen allen beteiligten Parteien ist verschlüsselt. TLS 1.2 oder höher ist der Mindeststandard für webbasierte Kommunikation; interne Service-zu-Service-Aufrufe verwenden gegenseitiges TLS oder gleichwertige Mechanismen.
- Eingabekontrollen: Alle Nutzer- und Systemeingaben werden gegen erwartete Datentypen, Längen und Wertebereiche validiert. Integritätsprüfungen (z. B. Prüfsummen, Hash-Verifizierung) werden auf von externen Systemen empfangene Daten angewendet. Die serverseitige Validierung erfolgt unabhängig von clientseitigen Prüfungen.
- Automatisierte Kontrollen: Automatisierte Kontrollen setzen Geschäftsregeln durch — Genehmigungsgrenzen, Doppelgenehmigungs-Workflows und Prüfungen der Funktionstrennung werden in der Anwendungslogik implementiert, statt sich allein auf manuelle Prozesse zu verlassen.
- Ausgabekontrollen: Anwendungsausgaben werden kontrolliert, um sicherzustellen, dass nur autorisierte Empfänger Informationen erhalten. Ausgabeautorisierungsprüfungen verifizieren, dass der anfragende Nutzer die entsprechenden Zugriffsrechte hat, bevor Daten gerendert oder exportiert werden.
- Einschränkungen für Freitextfelder: Freitext-Eingabefelder werden in Länge und Inhalt eingeschränkt, um unkontrollierte Speicherung vertraulicher oder personenbezogener Daten zu verhindern. Wo Freitextfelder notwendig sind, werden Inhaltsprüfung oder Klassifizierungskennzeichnung angewendet.
- Geschäftsprozessanforderungen: Anforderungen aus Geschäftsprozessen — Transaktionsprotokollierung, Audit-Trails, Überwachungsintegration und Nichtabstreitbarkeit — werden bei der Anforderungsanalyse erfasst und als Teil der Anwendungsarchitektur umgesetzt.
- Integration mit Sicherheitsmaßnahmen: Anwendungen integrieren sich in zentrale Sicherheitsmaßnahmen: Protokollierungs- und Überwachungssysteme, Data-Loss-Prevention-Werkzeuge und Security-Information-and-Event-Management-Plattformen (SIEM). Sicherheitsrelevante Ereignisse werden in einem mit der Protokollierungsinfrastruktur der Organisation kompatiblen Format protokolliert.
- Handhabung von Fehlermeldungen: Fehlermeldungen werden so gestaltet, dass sie den Nutzern handlungsrelevante Informationen bieten, ohne interne Systemdetails, Stack Traces, Datenbankstrukturen oder andere Informationen preiszugeben, die einem Angreifer helfen könnten. Detaillierte Fehlerinformationen werden serverseitig zum Debugging protokolliert.
4.2 Transaktionsdienste
- Gegenseitiges Identitätsvertrauen: Für Transaktionsdienste wird der erforderliche Grad des gegenseitigen Identitätsvertrauens zwischen den Parteien festgelegt und implementiert. Digitale Zertifikate, elektronische Signaturen oder gleichwertige Mechanismen verifizieren die Identität jeder Partei, bevor Transaktionen verarbeitet werden.
- Informationsintegrität: Die Integrität ausgetauschter oder verarbeiteter Informationen wird mittels zyklischer Redundanzprüfungen, kryptographischer Hashes oder digitaler Signaturen überprüft. Ein Integritätsverlust wird vor Abschluss der Transaktion erkannt und gemeldet.
- Autorisierung für Schlüsseldokumente: Autorisierungsprozesse legen fest, wer Schlüsseldokumente einer Transaktion genehmigen, ausstellen oder signieren darf. Genehmigungsworkflows setzen die Funktionstrennung durch und sind in der Autorisierungsmatrix der Anwendung dokumentiert.
- Vertraulichkeit & Nichtabstreitbarkeit: Schlüsseldokumente — einschließlich Verträge, Ausschreibungen und formeller Vereinbarungen — werden auf Vertraulichkeit, Integrität, Versandnachweis und Empfangsnachweis geschützt. Digitale Signaturen oder versiegelte Audit-Logs liefern Nichtabstreitbarkeitsnachweise.
- Transaktionsvertraulichkeit & -integrität: Transaktionen (z. B. Bestellungen, Lieferadressen, Empfangsbestätigungen) werden durch Ende-zu-Ende-Verschlüsselung und Integritätsprüfung während der gesamten Verarbeitungskette geschützt.
- Dauer der Transaktionsvertraulichkeit: Der Zeitraum, während dessen eine Transaktion vertraulich bleibt, wird auf Basis der geschäftlichen und rechtlichen Anforderungen festgelegt. Kryptographische Schutzmaßnahmen werden über den gesamten Vertraulichkeitszeitraum aufrechterhalten.
- Versicherungs- & Vertragsanforderungen: Versicherungs- und andere Vertragsanforderungen im Zusammenhang mit Transaktionsdiensten werden identifiziert und im Anwendungsdesign sowie in unterstützenden operativen Verfahren berücksichtigt.
4.3 Elektronische Bestellung & Zahlung
- Vertraulichkeit & Integrität von Bestellinformationen: Bestellinformationen werden im Transit und im Ruhezustand verschlüsselt. Integritätsprüfungen verhindern unbefugte Änderungen an Bestelldetails zwischen Einreichung und Erfüllung.
- Zahlungsverifizierung: Von Kunden bereitgestellte Zahlungsinformationen werden in angemessenem Umfang verifiziert — Adressverifizierung, Kartenvalidierungscodes und Betrugserkennungsmechanismen werden proportional zu Transaktionswert und Risiko angewendet.
- Verhinderung von Transaktionsduplikaten: Maßnahmen verhindern den Verlust oder die Duplizierung von Transaktionsinformationen. Idempotenzmechanismen, eindeutige Transaktions-IDs und Abstimmungsprozesse werden implementiert.
- Sichere Transaktionsspeicherung: Transaktionsdetails werden auf Systemen innerhalb des Organisationsintranets gespeichert, nicht auf Speicherplattformen, die direkt aus dem Internet zugänglich sind. Keine Transaktionsdaten werden auf öffentlich zugänglichen Umgebungen oder elektronischen Speichermedien aufbewahrt, die dem öffentlichen Netz ausgesetzt sind.
- Integration einer vertrauenswürdigen Instanz: Wo eine vertrauenswürdige Instanz (z. B. eine Zertifizierungsstelle für digitale Signaturen oder Zertifikate) genutzt wird, ist die Sicherheit über den gesamten End-to-End-Prozess des Zertifikats- oder Signaturmanagements integriert, einschließlich Ausstellung, Erneuerung, Widerruf und Validierung.
5. Grundsätze sicherer Systemarchitektur & -entwicklung (A 8.27)
Grundsätze sicherer Entwicklung werden etabliert, dokumentiert und auf alle Aktivitäten der Informationssystementwicklung und -gestaltung angewendet. Diese Grundsätze werden regelmäßig überprüft und aktualisiert, um aufkommende Bedrohungen und sich entwickelnde Best Practices zu berücksichtigen. Systeme werden auf Basis eines Sicherheitsanforderungskatalogs, eines aus der Informationsklassifizierung abgeleiteten Sicherheitsprofils und eines Threat-Modells gestaltet.
5.1 Analyse der Sicherheitsmaßnahmen
- Volle Bandbreite an Maßnahmen: Die Systemarchitektur adressiert die volle Bandbreite der Sicherheitsmaßnahmen, die zum Schutz von Informationen und Systemen gegen identifizierte Bedrohungen erforderlich sind. Die Maßnahmenauswahl basiert auf der Risikobewertung und der Klassifizierungsstufe des Assets.
- Kontrollfähigkeiten: Jede Sicherheitsmaßnahme wird auf ihre Fähigkeit bewertet, Sicherheitsereignisse zu verhindern, zu erkennen oder auf sie zu reagieren. Maßnahmen werden so ausgewählt, dass sie eine mehrschichtige Verteidigung bieten, die alle drei Fähigkeiten abdeckt.
- Geschäftsprozessspezifische Maßnahmen: Spezifische Sicherheitsmaßnahmen, die von bestimmten Geschäftsprozessen benötigt werden — wie die Verschlüsselung sensibler Informationen, Integritätsprüfung und digitale Signatur — werden identifiziert und in die Architektur aufgenommen.
- Platzierung der Maßnahmen: Die Architektur spezifiziert, wo und wie jede Sicherheitsmaßnahme angewendet wird, ob sie in die Anwendung, in die Infrastrukturschicht oder in einen zentralen Sicherheitsdienst integriert ist. Platzierungsentscheidungen stehen im Einklang mit der gesamten Sicherheitsarchitektur.
- Integriertes Maßnahmenset: Einzelne Sicherheitsmaßnahmen — sowohl manuelle als auch automatisierte — werden so gestaltet, dass sie als integriertes Set zusammenarbeiten. Abhängigkeiten zwischen Maßnahmen werden dokumentiert, und Lücken in der gesamten Kontrollkette werden identifiziert und behoben.
5.2 Engineering-Erwägungen
- Integration in die Sicherheitsarchitektur: Jedes Systemdesign integriert sich in die übergreifende Sicherheitsarchitektur der Organisation. Gemeinsame Sicherheitsdienste (Identitätsmanagement, Protokollierung, Verschlüsselung) werden wiederverwendet statt neu gebaut.
- Technische Sicherheitsinfrastruktur: Das Design nutzt die bestehende technische Sicherheitsinfrastruktur — Public Key Infrastructure (PKI), Identity and Access Management (IAM), Data Leakage Prevention und dynamisches Zugriffsmanagement — statt parallele Mechanismen einzuführen.
- Organisatorische Fähigkeit: Technologieentscheidungen werden an der Fähigkeit der Organisation gemessen, die gewählte Lösung über ihren gesamten Lebenszyklus zu entwickeln, zu betreiben und zu unterstützen. Technologien, die die verfügbare interne Expertise übersteigen, werden nur dann gewählt, wenn externe Unterstützungsvereinbarungen bestehen.
- Kosten, Zeit & Komplexität: Kosten, Zeit und Komplexität der Erfüllung von Sicherheitsanforderungen werden bei der Technologieauswahl berücksichtigt. Kompromisse werden dokumentiert und vom Projektsponsor und der/dem Informationssicherheitsbeauftragten genehmigt.
- Aktuelle Best Practices: Systemdesigns spiegeln aktuelle Best Practices aus Industriestandards, Herstellerleitlinien und anerkannten Sicherheits-Frameworks wider. Design-Teams beobachten relevante Advisories und passen Muster an, während sich die Bedrohungslage entwickelt.
5.3 Sichere Designprinzipien
- Architekturprinzipien: Die folgenden Architekturprinzipien gelten für alle Systemdesigns: „Security by Design", „Defence in Depth", „Security by Default", „Default Deny", „Fail Securely", „Distrust Input from External Applications", „Security in Deployment", „Assume Breach", „Least Privilege", „Usability and Manageability" und „Least Functionality". Jedes Designdokument identifiziert, welche Prinzipien angewendet werden und wie.
- Sicherheitsorientierte Designüberprüfung: Eine sicherheitsorientierte Designüberprüfung wird für jedes System vor Beginn der Implementierung durchgeführt. Die Überprüfung identifiziert Informationssicherheits- und Datenschutzschwachstellen, stellt sicher, dass Sicherheitsmaßnahmen spezifiziert sind, und bestätigt, dass alle Sicherheitsanforderungen adressiert werden.
- Dokumentation von Restrisiken: Wo eine Sicherheitsmaßnahme die genannten Anforderungen nicht vollständig erfüllt (z. B. aufgrund übergeordneter Sicherheits- oder Benutzbarkeitsanforderungen), wird die Lücke dokumentiert und vom Risikoeigentümer formal anerkannt. Kompensierende Maßnahmen werden, wo machbar, identifiziert.
- System-Härtung: Alle Systeme werden vor der Bereitstellung gehärtet. Unnötige Dienste, Ports und Funktionen werden deaktiviert. Standardzugangsdaten werden geändert, und nur die benötigten Softwarekomponenten werden installiert. Härtungs-Baselines werden pro Technologie-Stack definiert.
5.4 Zero-Trust-Prinzipien
- Assume Breach: Systemdesigns gehen davon aus, dass die Informationssysteme der Organisation bereits kompromittiert sind. Sicherheitsmaßnahmen verlassen sich nicht allein auf die Netzwerkperimetersicherheit; interne Segmentierung, Überwachung und Detektionsfähigkeiten sind in jede Schicht eingebaut.
- Never Trust, Always Verify: Ein „Never Trust and Always Verify"-Ansatz wird auf jeden Zugriff auf Informationssysteme angewendet. Jede Anfrage wird authentifiziert und autorisiert, unabhängig vom Netzwerkstandort des Anfragenden.
- Ende-zu-Ende-Verschlüsselung: Anfragen an Informationssysteme werden Ende-zu-Ende verschlüsselt. Die Verschlüsselung wird nicht an Zwischen-Netzwerkgrenzen beendet, es sei denn, eine Inspektion ist ausdrücklich erforderlich und dokumentiert.
- Externer-Ursprung-Annahme: Jede Anfrage an ein Informationssystem wird so verifiziert, als ob sie aus einem offenen, externen Netz stammen würde — auch wenn die Anfrage intern erzeugt wird. Kein automatisches Vertrauen wird auf Basis des Netzwerkstandorts gewährt.
- Least Privilege & dynamischer Zugriff: Die Zugriffskontrolle folgt dem Prinzip des geringsten Privilegs. Dynamische Zugriffskontrollen authentifizieren und autorisieren Anfragen auf Basis kontextbezogener Informationen — Authentifizierungs-Anmeldedaten, Nutzeridentität, Zustand des Endgeräts, Datenklassifizierung und situative Risikoindikatoren (siehe Zugriffskontroll-Richtlinie).
- Starke Authentifizierung: Alle Anfragenden werden authentifiziert, und alle Autorisierungsanfragen werden auf Basis von Nutzeridentität, Authentifizierungs-Anmeldedaten und Endgerätedaten validiert. Starke Authentifizierung (z. B. Multi-Faktor-Authentifizierung) wird für den Zugriff auf Systeme durchgesetzt, die klassifizierte Informationen verarbeiten (siehe Zugriffskontroll-Richtlinie).
6. Sichere Programmierung (A 8.28)
Grundsätze der sicheren Programmierung gelten für jede Softwareentwicklung — sowohl intern als auch ausgelagert. Eine Richtlinie zur sicheren Programmierung definiert organisationsspezifische Erwartungen, genehmigte Prinzipien und verbotene Praktiken. Entwicklungswerkzeuge werden so konfiguriert, dass sie die sichere Programmierung unterstützen, und Entwickler erhalten fortlaufende Schulungen in sicheren Programmiertechniken.
6.1 Planung & Vorbereitung
- Erwartungen & genehmigte Prinzipien: Organisationsspezifische Erwartungen und genehmigte Prinzipien für die sichere Programmierung werden dokumentiert und an alle Entwicklungsteams kommuniziert. Diese gelten gleichermaßen für interne Entwickler und ausgelagerte Codeentwicklung.
- Häufige & historische Fehler: Ein Katalog häufiger und historischer Programmierpraktiken und Fehler, die zu Sicherheits- und Datenschutzschwachstellen führen, wird gepflegt. Der Katalog wird aktualisiert, wenn neue Schwachstellenklassen auftauchen, und dient als Eingabe für Schulungen und Checklisten für Code-Reviews.
- Konfiguration von Entwicklungswerkzeugen: Entwicklungswerkzeuge — einschließlich integrierter Entwicklungsumgebungen (IDEs), Linter und Build-Pipelines — werden so konfiguriert, dass sichere Programmierregeln automatisch durchgesetzt werden. Code, der definierte Regeln verletzt, wird in der frühestmöglichen Phase markiert.
- Herstellerleitlinien: Leitlinien der Anbieter von Entwicklungswerkzeugen und Ausführungsumgebungen werden befolgt. Sicherheits-Advisories von Werkzeuganbietern werden geprüft und zeitnah angewendet.
- Aktuelle Entwicklungswerkzeuge: Entwicklungswerkzeuge (Compiler, Build-Systeme, Abhängigkeitsverwalter, statische Analysewerkzeuge) werden aktuell gehalten. Werkzeug-Updates werden gemäß dem Patch-Management-Prozess der Organisation angewendet, und veraltete Werkzeugversionen werden außer Betrieb genommen.
- Entwicklerqualifikation: Entwickler sind qualifiziert, sicheren Code zu schreiben, bevor sie zu Produktionssystemen beitragen. Die Qualifikation wird durch abgeschlossene Schulungen, Zertifizierungen oder nachgewiesene Erfahrung, die von einem Senior Developer überprüft wurde, nachgewiesen.
- Sicheres Design & Threat Modelling: Sichere Designpraktiken und Threat Modelling werden in der Planungsphase jedes Entwicklungsvorhabens angewendet. Threat-Modelle identifizieren relevante Bedrohungsakteure, Angriffsvektoren und erforderliche Gegenmaßnahmen.
- Standards für sichere Programmierung: Standards für sichere Programmierung werden für jeden Technologie-Stack dokumentiert. Wo anerkannte Industriestandards existieren (z. B. OWASP, CERT Secure Coding Standards), werden diese übernommen und durch organisationsspezifische Regeln ergänzt. Die Einhaltung der Standards ist für jeden Produktionscode verpflichtend.
- Kontrollierte Entwicklungsumgebungen: Entwicklung erfolgt in kontrollierten Umgebungen mit definierten Zugriffsrechten, genehmigten Toolchains und standardisierten Konfigurationen. Unkontrollierte oder persönliche Umgebungen werden nicht für produktionsgerichteten Code verwendet.
6.2 Während der Programmierung
- Sprachspezifische Praktiken: Sichere Programmierpraktiken, die für die verwendeten Programmiersprachen und Techniken spezifisch sind, werden definiert und befolgt. Diese decken sprachspezifische Fallstricke ab wie Speicherverwaltung in C/C++, Injection-Vermeidung in Websprachen und Serialisierungssicherheit in Java/.NET.
- Sichere Programmiertechniken: Sichere Programmiertechniken werden während der gesamten Entwicklung angewendet — Pair Programming für sicherheitskritischen Code, Refactoring zur Beseitigung von Sicherheitsschulden, verpflichtendes Peer-Review für alle Merge-Requests, dedizierte Sicherheits-Iterationen und testgetriebene Entwicklung für Sicherheitsfunktionen.
- Strukturierte Programmierung: Strukturierte Programmiertechniken werden eingesetzt, um klaren, wartbaren und überprüfbaren Code zu produzieren. Komplexe Logik wird in klar definierte Module mit expliziten Schnittstellen zerlegt.
- Dokumentation & Fehlerbehebung: Code wird in einem Umfang dokumentiert, der eine unabhängige Überprüfung ermöglicht. Programmierfehler, die die Ausnutzung von Sicherheits- oder Datenschutzschwachstellen ermöglichen könnten, werden während der Entwicklung identifiziert und beseitigt, nicht nach dem Release verschoben.
- Verbotene Designmuster: Die folgenden unsicheren Designmuster sind verboten: hartkodierte Passwörter oder API-Schlüssel, nicht genehmigte Code-Beispiele aus nicht vertrauenswürdigen Quellen, nicht authentifizierte Webdienste, deaktivierte Zertifikatsvalidierung und die Verwendung veralteter kryptographischer Algorithmen. Automatisierte Prüfungen in der Build-Pipeline erkennen und blockieren diese Muster.
- Statische Analyse während der Entwicklung: Static Application Security Testing (SAST) ist in die Build-Pipeline integriert und läuft bei jeder Code-Änderung. SAST-Befunde oberhalb des definierten Schweregradschwellenwerts blockieren den Build, bis sie behoben oder formal akzeptiert sind.
- Angriffsfläche & Least Privilege: Bevor Software in Betrieb genommen wird, wird die Angriffsfläche bewertet und minimiert. Das Prinzip des geringsten Privilegs wird auf alle Laufzeitrechte angewendet — Dienste laufen mit den minimalen Berechtigungen, die für ihre Funktion erforderlich sind.
- Analyse häufiger Programmierfehler: Bevor Software in Betrieb genommen wird, wird eine Analyse der häufigsten Programmierfehler (z. B. OWASP Top 10, CWE Top 25) durchgeführt und dokumentiert. Die Analyse bestätigt, dass alle anwendbaren Fehlerklassen abgemildert wurden.
6.3 Überprüfung & Pflege
- Sichere Paketierung & Bereitstellung: Updates werden sicher paketiert und bereitgestellt. Installations-, Update- und Patch-Dateien werden vor der Bereitstellung mit Prüfsummen oder digitalen Signaturen verifiziert. Bereitstellungs-Pipelines erzwingen die Integritätsprüfung als obligatorischen Schritt.
- Umgang mit Schwachstellen: Gemeldete Informationssicherheits- und Datenschutzschwachstellen werden über den Schwachstellenmanagement-Prozess der Organisation behandelt (siehe Richtlinie zum IT-Betrieb). Korrekturen werden entwickelt, getestet und nach schweregradbasierten Zeitplänen veröffentlicht.
- Fehler- & Angriffs-Protokollierung: Fehler und vermutete Angriffe werden protokolliert. Sicherheitsereignisprotokolle werden an die zentrale Protokollierungsinfrastruktur weitergeleitet und regelmäßig überprüft. Code-Anpassungen werden bei Bedarf auf Basis der Log-Analyse-Befunde vorgenommen.
- Schutz des Quellcodes: Der Quellcode ist vor unbefugtem Zugriff und Manipulation geschützt. Konfigurationsmanagement-Werkzeuge bieten Zugriffskontrolle und Versionskontrolle. Zugriffsrechte auf Repositories werden vierteljährlich überprüft.
- Verwaltung externer Bibliotheken: Externe Bibliotheken werden über ein gepflegtes Inventar verwaltet, das Bibliotheksname, Version, Lizenz und bekannte Schwachstellen erfasst. Bibliotheken werden mit jedem Release-Zyklus aktualisiert, und End-of-Life-Bibliotheken werden ersetzt. Schwachstellen, die in Drittanbieter-Komponenten entdeckt werden, werden über den Schwachstellenmanagement-Prozess der Security Operations verwaltet, einschließlich schweregradbasierter Behebungsfristen.
- Komponentenauswahl & -wiederverwendung: Gut geprüfte, bewährte Komponenten werden ausgewählt und wiederverwendet — insbesondere für Authentifizierungs- und kryptographische Funktionen. Die interne Neuimplementierung standardmäßiger Sicherheitsfunktionen wird vermieden. Komponenten werden vor der Aufnahme in die Codebasis genehmigt.
- Herkunft externer Komponenten: Lizenz, Sicherheitshistorie und Herkunft jeder externen Komponente werden vor der Übernahme bewertet. Komponenten mit bekannten ungelösten Schwachstellen, ungünstigen Lizenzbedingungen oder unklarem Wartungsstatus werden abgelehnt.
- Wartbarkeit externer Software: Externe Softwarewerkzeuge und Bibliotheken werden nur aus bewährten, seriösen Quellen ausgewählt. Die Wartbarkeit jeder Bibliothek wird bewertet — eine aktive Community, regelmäßige Release-Kadenz und reaktive Sicherheitspatches sind erforderlich. Bibliotheken, die diese Kriterien nicht mehr erfüllen, werden zum Austausch vorgesehen.
- Langfristige Verfügbarkeit: Die hinreichend langfristige Verfügbarkeit von Entwicklungsressourcen und -artefakten wird sichergestellt. Build-Skripte, Werkzeugversionen und Abhängigkeits-Snapshots werden archiviert, sodass jede veröffentlichte Version bei Bedarf neu gebaut werden kann.
- Modifizierte externe Pakete — Eingebaute Kontrollen: Wenn ein externes Softwarepaket modifiziert wird, wird das Risiko bewertet, dessen eingebaute Sicherheitsmaßnahmen und Integritätsprüfprozesse zu kompromittieren, bevor die Modifikation durchgeführt wird.
- Modifizierte externe Pakete — Herstellerzustimmung: Vor der Modifikation eines externen Softwarepakets wird die Notwendigkeit bewertet, die Zustimmung des Herstellers einzuholen. Lizenzbedingungen werden geprüft, um zu bestätigen, dass Modifikationen zulässig sind.
- Modifizierte externe Pakete — Hersteller-Updates: Vor der Modifikation eines externen Softwarepakets wird die Möglichkeit erkundet, die erforderlichen Änderungen vom Hersteller als Standard-Programm-Update zu erhalten. Vom Hersteller bereitgestellte Lösungen werden gegenüber individuellen Modifikationen bevorzugt.
- Modifizierte externe Pakete — Wartungsauswirkung: Vor der Modifikation eines externen Softwarepakets werden die Auswirkungen auf die zukünftige Wartung bewertet. Wenn die Modifikation die Organisation für die Wartung der Software verantwortlich macht, werden die Total Cost of Ownership — einschließlich Sicherheits-Patches — bewertet und genehmigt.
- Modifizierte externe Pakete — Kompatibilität: Vor der Modifikation eines externen Softwarepakets wird die Kompatibilität mit anderer im Einsatz befindlicher Software verifiziert. Integrationstests bestätigen, dass die Modifikation keine Regressionen in abhängigen Systemen einführt.
7. Sicherheitstests in Entwicklung & Abnahme (A 8.29)
Sicherheitstestprozesse werden über den gesamten Entwicklungslebenszyklus hinweg und für die Abnahme neuer Systeme, Upgrades und neuer Versionen definiert und umgesetzt. Ein Test-Framework wird gemäß den Schutzanforderungen des zu testenden Systems auf Basis des Anforderungskatalogs etabliert. Tests decken sowohl funktionale als auch nicht-funktionale Anforderungen ab, mit besonderem Schwerpunkt auf sicherheitskritischen Funktionen.
7.1 Testumfang
- Sicherheitsfunktionen: Sicherheitsfunktionen werden umfassend getestet — einschließlich Benutzerauthentifizierung, Zugriffsbeschränkung, Sitzungsmanagement und Nutzung von Kryptographie. Tests verifizieren, dass Sicherheitsfunktionen unter normalen Bedingungen, unter Last und bei missgebildeten Eingaben korrekt funktionieren.
- Verifizierung sicherer Programmierung: Tests verifizieren die Einhaltung der in dieser Richtlinie definierten Standards für sichere Programmierung. Ergebnisse automatisierter statischer Analyse (SAST) werden in die Testnachweise aufgenommen, und alle verbleibenden Befunde werden mit Begründung dokumentiert.
- Verifizierung sicherer Konfiguration: Tests bestätigen, dass Systemkonfigurationen — einschließlich Betriebssystemeinstellungen, Firewall-Regeln und Konfigurationen von Sicherheitskomponenten — den genehmigten Härtungs-Baselines entsprechen und keine unbeabsichtigten Expositionen einführen.
7.2 Testpläne
- Zeitplan & Aktivitäten: Testpläne enthalten einen detaillierten Zeitplan der Testaktivitäten und einzelner Testfälle. Der Zeitplan stimmt mit den Entwicklungsmeilensteinen überein und berücksichtigt Abhängigkeitsketten zwischen Testphasen.
- Eingaben & erwartete Ergebnisse: Jeder Testfall definiert seine Eingaben und die erwarteten Ergebnisse unter einer Reihe von Bedingungen — einschließlich gültiger Eingaben, Grenzwerten, ungültiger Eingaben und schädlicher Payloads.
- Bewertungskriterien: Klare Bestanden/Nicht-Bestanden-Kriterien werden für die Bewertung der Testergebnisse festgelegt. Ein dokumentierter Soll-Ist-Vergleich wird für jeden Testlauf erstellt.
- Weitere Maßnahmen: Testpläne definieren den Entscheidungsprozess und weitere Maßnahmen, die bei Testfehlschlägen zu ergreifen sind — erneuter Test nach Behebung, Risikoakzeptanz mit dokumentierter Begründung oder Eskalation an die/den Informationssicherheitsbeauftragte/n bei kritischen Befunden.
7.3 Testmethoden
- Code-Review: Code-Review-Aktivitäten werden als Kernelement der Sicherheitstests durchgeführt. Reviews zielen gezielt auf Sicherheitsmängel ab, einschließlich der Handhabung unerwarteter Eingaben und Grenzbedingungen. Sowohl automatisierte (SAST) als auch manuelle Review-Methoden werden angewendet.
- Schwachstellenscans: Schwachstellenscans werden durchgeführt, um unsichere Konfigurationen, fehlende Patches und bekannte Systemschwachstellen zu identifizieren. Scans werden in der Testumgebung vor dem Release ausgeführt und nach wesentlichen Konfigurationsänderungen wiederholt.
- Penetrationstests: Penetrationstests werden durchgeführt, um unsicheren Code und Designfehler zu identifizieren. Für Systeme mit erhöhten Schutzanforderungen folgen Penetrationstests einem dokumentierten Konzept, das Methoden, Umfang und Erfolgskriterien definiert. Ergebnisse werden bis zur Behebung nachverfolgt.
7.4 Ausgelagerte & beschaffte Komponenten
- Beschaffungsprozess: Ein etablierter Beschaffungsprozess wird für alle extern bezogenen Softwarekomponenten befolgt. Der Prozess umfasst die Sicherheitsbewertung als obligatorischen Schritt vor der Beschaffungsgenehmigung.
- Sicherheitsanforderungen an Lieferanten: Verträge mit Lieferanten adressieren die identifizierten Sicherheitsanforderungen, einschließlich sicherer Entwicklungspraktiken, Pflichten zur Schwachstellenoffenlegung und des Rechts, Sicherheitstests an gelieferten Komponenten durchzuführen (siehe Lieferantenmanagement).
- Bewertung nach Sicherheitskriterien: Beschaffte Produkte und Dienste werden vor ihrer Aufnahme in die operative Umgebung gegen definierte Sicherheitskriterien bewertet. Die Bewertung umfasst Schwachstellenscans, Konfigurationsüberprüfungen und die Verifizierung der Sicherheitsdokumentation des Lieferanten.
Eine formale Release-Erklärung wird nach erfolgreichem Abschluss aller erforderlichen Tests ausgestellt. Das Release bestätigt, dass die Software funktionale, sicherheits- und rechtliche Anforderungen erfüllt und für die Bereitstellung in der Produktion genehmigt ist. Regressionstests verifizieren, dass Sicherheitsmechanismen und -einstellungen durch Updates nicht verändert werden.
8. Ausgelagerte Entwicklung (A 8.30)
Wo Softwareentwicklung ausgelagert wird, leitet und überwacht die Organisation die Entwicklungsaktivität, um sicherzustellen, dass Sicherheitsanforderungen erfüllt werden. Vertragliche Vereinbarungen, definierte Service-Level und regelmäßige Aufsicht regeln die Outsourcing-Beziehung. Die Organisation behält die Verantwortung für die Sicherheit der ausgelagerten Ergebnisse.
8.1 Outsourcing-Anforderungen
- Lizenzierung & geistiges Eigentum: Lizenzvereinbarungen definieren Code-Eigentum und geistige Eigentumsrechte für alle ausgelagerten Inhalte klar. Das Eigentum an Quellcode, Dokumentation und allen Entwicklungsartefakten wird der Organisation zugewiesen, sofern nicht ausdrücklich etwas anderes vereinbart ist (siehe IPR-Compliance).
- Vertraglich gesicherte sichere Entwicklung: Verträge mit externen Entwicklern enthalten verbindliche Anforderungen an sicheres Design, sichere Programmierung, Code-Review und Sicherheitstestpraktiken gemäß dieser Richtlinie (siehe Abschnitte zu sicherer Programmierung und Sicherheitstests).
- Bereitstellung des Threat-Modells: Die Organisation stellt externen Entwicklern das geltende Threat-Modell zur Verfügung. Das Threat-Modell identifiziert relevante Bedrohungsakteure, Angriffsvektoren und erforderliche Gegenmaßnahmen, die das externe Entwicklungsteam in sein Design und seine Implementierung integriert.
- Abnahmetests: Abnahmetests werden an allen Ergebnissen durchgeführt, um Qualität und Korrektheit zu verifizieren. Testfälle decken funktionale Anforderungen, Sicherheitsanforderungen und die Integration mit bestehenden Systemen ab. Ergebnisse, die Abnahmetests nicht bestehen, werden zur Nachbesserung zurückgegeben.
- Nachweis von Sicherheits- & Datenschutzfähigkeiten: Externe Entwickler liefern Nachweise, dass Mindestniveaus an Sicherheits- und Datenschutzfähigkeiten etabliert sind — durch Assurance-Berichte, Zertifizierungen (z. B. ISO 27001, SOC 2) oder unabhängige Audit-Ergebnisse.
- Tests auf schädliche Inhalte: Externe Entwickler liefern Nachweise, dass ausreichende Tests durchgeführt wurden, um das Vorhandensein schädlicher Inhalte abzuwehren — sowohl beabsichtigte (z. B. Hintertüren, Logikbomben) als auch unbeabsichtigte (z. B. verwundbare Abhängigkeiten). Lieferpakete werden vor der Abnahme unabhängig gescannt.
- Nachweis von Schwachstellentests: Externe Entwickler liefern Nachweise, dass ausreichende Tests durchgeführt wurden, um das Vorhandensein bekannter Schwachstellen abzuwehren. Dies umfasst aktuelle SAST- und Abhängigkeitsscan-Berichte, die bei jedem Release geliefert werden.
- Source-Code-Escrow: Escrow-Vereinbarungen für den Software-Quellcode werden etabliert, wenn die ausgelagerte Software geschäftskritisch ist. Die Escrow-Bedingungen umfassen Freigabebedingungen (z. B. Insolvenz des Lieferanten oder Einstellung des Supports) und regelmäßige Escrow-Verifizierung.
- Auditrechte: Verträge enthalten das vertragliche Recht, Entwicklungsprozesse und -maßnahmen zu auditieren. Audits können von der Organisation oder einem unabhängigen Dritten durchgeführt werden und decken die Einhaltung sicherer Entwicklungspraktiken, Zugriffskontrollen und Änderungsmanagement ab.
- Sicherheit der Entwicklungsumgebung: Sicherheitsanforderungen an die externe Entwicklungsumgebung werden im Vertrag spezifiziert. Dazu gehören Umgebungstrennung, Zugriffskontrolle, Datenschutz und sichere Handhabung des Codes und der Daten der Organisation (siehe Abschnitt zur Umgebungstrennung dieser Richtlinie).
- Geltende Gesetzgebung: Verträge adressieren geltende Gesetzgebung, einschließlich Datenschutzgesetze (z. B. DSGVO und geltendes nationales Datenschutzrecht), Exportkontrollvorschriften und sektorspezifische Anforderungen. Der Lieferant bestätigt die Einhaltung aller relevanten rechtlichen Verpflichtungen.
9. Trennung von Entwicklungs-, Test- & Produktionsumgebungen (A 8.31)
Entwicklungs-, Test- und Produktionsumgebungen werden getrennt und kontrolliert, um das Risiko unbefugten Zugriffs auf oder unbeabsichtigter Änderungen der Produktionsumgebung zu reduzieren. Der Trennungsansatz wird dokumentiert, einschließlich der Architektur jeder Umgebung und der Verfahren, die nach Abschluss der Tests angewendet werden.
9.1 Regeln zur Umgebungstrennung
- Angemessene Trennung: Entwicklungs- und Produktionssysteme werden angemessen getrennt und in verschiedenen Domänen betrieben — mit getrennten virtuellen oder physischen Umgebungen, getrennten Netzwerksegmenten und unabhängigen Zugriffskontrollen.
- Bereitstellungsregeln & Autorisierung: Regeln und Autorisierungsanforderungen für die Bereitstellung von Software von der Entwicklung in die Produktion werden definiert, dokumentiert und durchgesetzt. Nur formell getestete und genehmigte Releases werden in die Produktion bereitgestellt.
- Tests vor Produktion: Alle Änderungen an Produktionssystemen und -anwendungen werden vor der Bereitstellung in einer Test- oder Staging-Umgebung getestet. Testnachweise werden erfasst und mit dem Änderungsdatensatz verknüpft (siehe Richtlinie zu Konfigurations- und Änderungsmanagement).
- Keine Tests in der Produktion: Tests werden nicht direkt in Produktionsumgebungen durchgeführt, außer unter Bedingungen, die im Voraus definiert, genehmigt und dokumentiert sind. Jede genehmigte Produktionstestung ist zeitlich begrenzt und unterliegt verstärkter Überwachung.
- Entwicklungswerkzeuge in der Produktion: Compiler, Editoren, Debugger und andere Entwicklungswerkzeuge oder Dienstprogramme sind von Produktionssystemen nicht zugänglich, es sei denn, sie werden für einen bestimmten, genehmigten operativen Zweck benötigt. Unnötige Werkzeuge werden entfernt.
- Umgebungs-Identifikationskennzeichnungen: Angemessene Umgebungs-Identifikationskennzeichnungen werden in Anwendungsmenüs, Befehlszeilenaufforderungen und System-Bannern angezeigt. Visuelle Differenzierung (z. B. farbcodierte Header) reduziert das Risiko, dass Personen versehentlich Aktionen in der falschen Umgebung ausführen.
- Sensible Informationen in Nicht-Produktion: Sensible Informationen werden nicht in Entwicklungs- oder Testumgebungen kopiert, es sei denn, gleichwertige Sicherheitsmaßnahmen sind vorhanden. Wo Produktionsdaten benötigt werden, werden sie vor der Übertragung anonymisiert oder pseudonymisiert (siehe Abschnitt zu Testinformationen dieser Richtlinie).
- Funktionstrennung: Keine einzelne Person hat die Fähigkeit, Änderungen sowohl in Entwicklungs- als auch in Produktionsumgebungen ohne vorherige Prüfung und Genehmigung durch eine zweite autorisierte Person vorzunehmen. Bereitstellungs-Pipelines setzen diese Trennung technisch durch.
9.2 Umgebungsschutz
- Werkzeug-Patching & Updates: Alle Entwicklungs-, Integrations- und Testwerkzeuge — einschließlich Build-Systeme, Integratoren, Compiler, Konfigurationssysteme und Bibliotheken — werden gemäß dem Patch-Management-Prozess der Organisation gepatcht und aktualisiert.
- Sichere Konfiguration: Systeme und Software in allen Nicht-Produktionsumgebungen werden sicher konfiguriert, wobei dieselben Härtungsprinzipien wie in der Produktion angewendet werden, nur wo nötig für Entwicklungs- oder Testzwecke angepasst.
- Zugriffskontrolle: Der Zugriff auf Entwicklungs-, Test- und Staging-Umgebungen wird kontrolliert und auf Need-to-access-Basis gewährt. Zugriffsrechte werden vierteljährlich überprüft und umgehend entfernt, wenn sie nicht mehr benötigt werden.
- Änderungsüberwachung: Änderungen an der Umgebungsinfrastruktur und dem darin gespeicherten Code werden überwacht. Unbefugte Änderungen lösen Alarme aus und werden untersucht.
- Sichere Überwachung: Sicherheitsüberwachung wird auf Nicht-Produktionsumgebungen angewendet, um unbefugten Zugriff, Missbrauch und Sicherheitsereignisse zu erkennen. Die Überwachungsabdeckung ist proportional zur Sensibilität der Daten und des Codes in der Umgebung.
- Umgebungs-Sicherungen: Sicherungen von Entwicklungs-, Test- und Staging-Umgebungen werden nach einem definierten Zeitplan erstellt. Sicherungen decken Quellcode-Repositories, Build-Konfigurationen, Umgebungskonfigurationen und Testdatensätze ab.
10. Testinformationen (A 8.33)
Testinformationen werden angemessen ausgewählt, geschützt und verwaltet. Wenn operative Daten für Tests verwendet werden, verhindern zusätzliche Maßnahmen unbefugte Offenlegung und gewährleisten die Einhaltung von Datenschutzanforderungen. Personenbezogene Daten, die für Tests verwendet werden, werden mindestens pseudonymisiert, idealerweise anonymisiert; die/der Datenschutzbeauftragte wird in die Festlegung des Ansatzes einbezogen.
- Parität der Zugriffskontrolle: Dieselben Zugriffskontrollverfahren, die für operative Umgebungen gelten, werden auf Testumgebungen angewendet, die operative Daten enthalten. Nur autorisiertes Testpersonal greift auf die Daten zu, und der Zugriff wird nur für die Dauer des Tests gewährt.
- Separate Autorisierung pro Kopie: Jedes Mal, wenn operative Informationen in eine Testumgebung kopiert werden, wird eine separate, dokumentierte Autorisierung eingeholt. Die Autorisierung spezifiziert den Datensatz, den Zweck, die verantwortliche Person und den erwarteten Aufbewahrungszeitraum.
- Audit-Trail: Das Kopieren und die Verwendung operativer Informationen zu Testzwecken wird protokolliert. Der Audit-Trail erfasst, wer die Kopie autorisiert hat, wann die Daten übertragen wurden, das Datenvolumen und wann sie aus der Testumgebung gelöscht wurden.
- Datenschutz durch Maskierung: Sensible Informationen, die für Tests verwendet werden, werden durch Entfernung oder Maskierung (z. B. Anonymisierung, Pseudonymisierung, Tokenisierung) geschützt, bevor sie in die Testumgebung übertragen werden (siehe Richtlinie zu Datenlöschung, Maskierung und DLP).
- Löschung nach Test: Operative Informationen werden nach Abschluss der Tests unverzüglich sicher aus der Testumgebung gelöscht. Die Löschung wird verifiziert und dokumentiert, um eine unbefugte spätere Nutzung der Testdaten zu verhindern (siehe Richtlinie zu Datenlöschung, Maskierung und DLP).
11. Schutz bei Audittests (A 8.34)
Audittests und andere Assurance-Aktivitäten, die die Bewertung operativer Systeme umfassen, werden geplant und vereinbart, um Störungen von Geschäftsprozessen zu minimieren. Der zu Auditzwecken gewährte Zugang wird streng kontrolliert, zeitlich begrenzt und nach Abschluss umgehend widerrufen.
- Vom Management vereinbarter Zugriff: Auditanfragen für den Zugriff auf Systeme und Daten werden vor Gewährung des Zugriffs mit dem zuständigen Management vereinbart. Umfang, Zeitpunkt und beteiligte Systeme werden im Auditauftragsschreiben dokumentiert.
- Umfangskontrolle: Der Umfang technischer Audittests wird vereinbart und kontrolliert. Tests sind auf die Systeme, Daten und Zeitfenster beschränkt, die im genehmigten Auditplan spezifiziert sind. Jede Umfangserweiterung erfordert eine separate Genehmigung.
- Nur-Lese-Zugriffsprinzip: Audittests sind auf den Nur-Lese-Zugriff auf Software und Daten beschränkt. Wo Nur-Lese-Zugriff nicht verfügbar ist, um die erforderlichen Informationen zu erhalten, führt ein erfahrener Administrator mit den erforderlichen Zugriffsrechten den Test im Auftrag des Auditors aus, wobei der Auditor die Ergebnisse beobachtet und verifiziert.
- Geräte-Sicherheitsanforderungen: Vor Gewährung des Zugriffs wird die Sicherheitslage der für den Zugriff auf die Systeme verwendeten Geräte (z. B. Laptops, Tablets) festgestellt und verifiziert — einschließlich aktueller Antivirensoftware, aktueller Patches, Festplattenverschlüsselung und konformer Konfiguration.
- Nicht-Nur-Lese-Zugriffskontrollen: Nicht-Nur-Lese-Zugriff ist nur für isolierte Kopien von Systemdateien zulässig. Kopien werden nach Abschluss des Audits sicher gelöscht, es sei denn, es besteht eine dokumentierte Verpflichtung zu ihrer Aufbewahrung im Rahmen der Auditdokumentationsanforderungen; in diesem Fall erhalten sie angemessenen Schutz.
- Anfragen zu besonderer Verarbeitung: Anfragen zu besonderer oder zusätzlicher Verarbeitung — wie der Ausführung von Auditwerkzeugen, Skripten oder automatisierten Scannern — werden identifiziert, im Voraus vereinbart und vom Systemeigentümer vor der Ausführung autorisiert.
- Berücksichtigung der Verfügbarkeit: Audittests, die die Systemverfügbarkeit beeinträchtigen können, werden außerhalb der Geschäftszeiten geplant. Wo dies nicht möglich ist, werden die potenziellen Auswirkungen bewertet und betroffenen Beteiligten vorab kommuniziert.
- Zugriffsprotokollierung: Jeder Zugriff zu Audit- und Testzwecken wird überwacht und protokolliert. Audit-Zugriffsprotokolle werden gemäß dem Log-Aufbewahrungsplan der Organisation aufbewahrt und stehen der/dem Informationssicherheitsbeauftragten zur Überprüfung zur Verfügung.
12. Rollen & Verantwortlichkeiten
- Geschäftsleitung: Genehmigt diese Richtlinie, stellt Ressourcen für sichere Entwicklung bereit und stellt die organisatorische Verpflichtung zur Sicherheit über den gesamten Softwareentwicklungslebenszyklus sicher.
- Informationssicherheitsbeauftragte/r (ISB): Überwacht die Umsetzung dieser Richtlinie, führt oder koordiniert Sicherheits-Designüberprüfungen durch, überwacht die Einhaltung und berichtet über die Reife der sicheren Entwicklungspraktiken.
- Entwicklungsleitung: Stellt sicher, dass Entwicklungsteams den sicheren Entwicklungslebenszyklus, die Programmierstandards und Testanforderungen dieser Richtlinie befolgen. Genehmigt Release-Erklärungen und verwaltet Sicherheitsschulungen für ihre Teams.
- Entwickler & Architekten: Wenden Standards für sichere Programmierung an, führen Threat Modelling und Designüberprüfungen durch, beheben Sicherheitsbefunde und pflegen die Dokumentation. Nehmen an Sicherheitsschulungen teil und teilen Wissen im Team.
- Qualitätssicherung & Tests: Führen Sicherheitstestpläne aus, führen Code-Reviews durch, führen Schwachstellenscans durch und dokumentieren Testergebnisse. Eskalieren kritische Befunde an die/den Informationssicherheitsbeauftragte/n.
- IT-Betrieb: Pflegt die Trennung von Entwicklungs-, Test- und Produktionsumgebungen, setzt Bereitstellungsautorisierungsregeln durch und unterstützt Audittests mit angemessenen Zugriffskontrollen.
- Datenschutzbeauftragte/r: Berät zu Datenschutzanforderungen für das Anwendungsdesign, genehmigt den Ansatz zur Anonymisierung oder Pseudonymisierung von Testdaten und überprüft Datenschutzaspekte ausgelagerter Entwicklungsverträge.
- Beschaffung & Lieferantenmanagement: Stellt sicher, dass ausgelagerte Entwicklungsverträge die in dieser Richtlinie definierten erforderlichen Sicherheitsklauseln, Auditrechte und Bestimmungen zum geistigen Eigentum enthalten.
13. Überprüfung & Pflege
Diese Richtlinie wird überprüft und bei Bedarf aktualisiert:
- Mindestens jährlich im Rahmen des ISMS-Managementbewertungszyklus.
- Nach wesentlichen Änderungen an der Entwicklungsorganisation, der Toolchain oder dem Technologie-Stack.
- Nach Sicherheitsvorfällen im Zusammenhang mit Software-Schwachstellen oder Entwicklungsprozess-Fehlern.
- Wenn Änderungen in der Bedrohungslage, im regulatorischen Umfeld oder in den Best Practices der Branche Anpassungen an den sicheren Entwicklungspraktiken erfordern.
Document control
Owner: [POLICY_OWNER_ROLE, e.g. Information Security Officer]
Approved by: [APPROVER_NAME_AND_ROLE]
Version: [VERSION]
Effective date: [EFFECTIVE_DATE]
Next review: [NEXT_REVIEW_DATE]
1. Legal/Regulatory Basis
ISO/IEC 27001:2022 / ISO/IEC 27002:2022, Annex A — Technological Controls:
- A 8.25 — Secure Development Life Cycle
- A 8.26 — Application Security Requirements
- A 8.27 — Secure System Architecture and Engineering Principles
- A 8.28 — Secure Coding
- A 8.29 — Security Testing in Development and Acceptance
- A 8.30 — Outsourced Development
- A 8.31 — Separation of Development, Test and Production Environments
- A 8.33 — Test Information
- A 8.34 — Protection of Information Systems During Audit Testing
BSI IT-Grundschutz:
- CON.8 (Software Development)
- CON.10 (Development of Web Applications)
- APP.6 (General Software)
- APP.7 (Development of Individual Software)
- OPS.1.1.6 (Software Tests and Approvals)
- OPS.2.3 (Outsourcing for Customers)
- ISMS.1 (Security Management)
- DER.3.1 (Audits and Revisions)
- DER.3.2 (Audits Based on the BSI Guideline for IS Audits)
Additional jurisdiction-specific laws — in particular data protection law (GDPR), export control regulations, sector-specific compliance requirements (e.g. financial services, healthcare) and software liability obligations — are listed in the Legal Register and incorporated by reference.
2. Purpose & Scope
This policy establishes the rules for secure software development at [YOUR_ORGANISATION_NAME]. It covers the secure development life cycle, application security requirements, secure system architecture and engineering principles, secure coding, security testing, outsourced development, environment separation, test information protection and audit testing safeguards.
The policy applies to all personnel involved in software development, testing, deployment and maintenance, including in-house developers, architects, testers, project managers, operations staff and external development partners.
3. Secure Development Life Cycle (A 8.25)
A secure development life cycle governs all software development activities. A suitable development methodology is selected for each project or product — whether classic waterfall, agile or continuous delivery — and covers security requirements throughout every phase from design to deployment and maintenance. The methodology is documented and communicated to all development teams.
3.1 Life Cycle Elements
- Environment Separation: Development, test and production environments are adequately separated to prevent unauthorised access and unintended changes to production systems. Separate virtual or physical domains are used (see environment separation section of this policy).
- Security in the Methodology: Security activities are embedded at every stage of the chosen development methodology. This includes threat modelling during design, secure architecture reviews before implementation, and security sign-off before release.
- Secure Coding Guidelines: Language-specific secure coding guidelines are maintained for each programming language in use. These guidelines define approved patterns, prohibited constructs (e.g. hard-coded credentials, insecure defaults) and naming conventions.
- Security Requirements in Specification & Design: Security requirements are identified during the specification and design phase of every project, based on the information classification and protection requirements of the data being processed (see project security requirements).
- Security Checkpoints: Security checkpoints are integrated at defined milestones in every project. At each checkpoint, the project team verifies that the applicable security requirements are met before proceeding to the next phase.
- System & Security Testing: Comprehensive testing is performed throughout the development process, including functional tests, regression tests, automated static code analysis (SAST), dynamic application security testing (DAST) and penetration tests for systems with elevated protection requirements.
- Secure Repositories: Source code and configuration artefacts are stored in access-controlled repositories. Repository access follows the principle of least privilege, and all changes are traceable through version history.
- Version Control Security: Version control systems enforce change traceability — every commit is attributed to an identified author. Branch protection rules prevent direct pushes to release branches, and a backup concept covers all repositories.
- Security Knowledge & Training: Developers receive training in secure development practices before contributing to security-relevant code. Training covers requirements analysis, threat modelling, secure architecture, secure coding techniques and security testing methods.
- Developer Capability: Developers are qualified to prevent, find and fix security vulnerabilities. Qualification is verified through training records, code review participation and demonstrated proficiency in using static analysis and vulnerability scanning tools.
- Licensing & Alternatives: Software licensing requirements are evaluated during technology selection. Alternatives are considered to ensure cost-effective solutions while avoiding future licensing conflicts or vendor lock-in (see IPR compliance).
- Outsourced Development Assurance: Where development is outsourced, the supplier provides documented assurance of compliance with these secure development rules. Contractual clauses, audit rights and evidence of secure practices are required (see outsourced development section of this policy).
Project, function and interface documentation is maintained throughout the life cycle. Security-relevant aspects are documented separately for administrators and users. Architecture diagrams and threat models are kept up to date as the system evolves.
4. Application Security Requirements (A 8.26)
Information security requirements are identified, specified and approved as part of the requirements analysis for every application that processes, stores or transmits organisational information. These requirements are derived from the business context, the classification of the information involved, applicable legislation and the organisation's risk appetite.
4.1 General Requirements
- Identity Trust & Authentication: The required level of trust in user identity is determined for each application. Authentication mechanisms are selected accordingly — from simple password-based login for low-sensitivity functions to multi-factor authentication for privileged or high-classification access (see the Access Control Policy).
- Information Type & Classification: Each application identifies the types and classification levels of information it processes. Processing, storage and display controls are aligned with the applicable classification level.
- Access Segregation: Access to data and functions within the application is segregated based on roles and responsibilities. The level of access granted to each role is documented, and role-based access control (RBAC) enforces the principle of least privilege.
- Resilience Against Attacks: Applications are designed to withstand malicious attacks and unintentional disruptions. Input validation is performed server-side, output encoding prevents injection attacks (e.g. SQL injection, cross-site scripting), and buffer overflow protections are applied.
- Legal & Regulatory Compliance: Legal, statutory and regulatory requirements applicable in every jurisdiction where a transaction is generated, processed, completed or stored are identified during requirements analysis and addressed in the application design.
- Privacy Requirements: Privacy requirements are assessed for all parties whose personal data is processed by the application. Data minimisation, purpose limitation and consent management are addressed in the design.
- Confidential Information Protection: Confidential information receives dedicated protection measures — encryption at rest and in transit, access logging and restricted display (e.g. masking in user interfaces).
- Data Protection in Transit & at Rest: Data is protected during processing, in transit and at rest using encryption algorithms and key lengths appropriate to the classification level. Sensitive data stored temporarily (e.g. in caches or session storage) is cleared when no longer needed.
- Communication Encryption: Communications between all involved parties are encrypted. TLS 1.2 or higher is the minimum standard for web-based communications; internal service-to-service calls use mutual TLS or equivalent mechanisms.
- Input Controls: All user and system inputs are validated against expected data types, lengths and ranges. Integrity checks (e.g. checksums, hash verification) are applied to data received from external systems. Server-side validation is performed regardless of any client-side checks.
- Automated Controls: Automated controls enforce business rules — approval limits, dual-approval workflows and segregation-of-duty checks are implemented in application logic rather than relying solely on manual processes.
- Output Controls: Application outputs are controlled to ensure only authorised recipients receive information. Output authorisation checks verify that the requesting user has the appropriate access rights before data is rendered or exported.
- Free-Text Field Restrictions: Free-text input fields are restricted in length and content to prevent uncontrolled storage of confidential or personal data. Where free-text fields are necessary, content scanning or classification tagging is applied.
- Business Process Requirements: Requirements derived from business processes — transaction logging, audit trails, monitoring integration and non-repudiation — are captured during requirements analysis and implemented as part of the application architecture.
- Integration with Security Controls: Applications integrate with centralised security controls: logging and monitoring systems, data leakage prevention tools and security information and event management (SIEM) platforms. Security-relevant events are logged in a format compatible with the organisation's logging infrastructure.
- Error Message Handling: Error messages are designed to provide users with actionable information without disclosing internal system details, stack traces, database structures or other information that could aid an attacker. Detailed error information is logged server-side for debugging.
4.2 Transactional Services
- Mutual Identity Trust: For transactional services, the required level of mutual identity trust between parties is determined and implemented. Digital certificates, electronic signatures or equivalent mechanisms verify each party's identity before transactions are processed.
- Information Integrity: The integrity of information exchanged or processed is verified using cyclic redundancy checks, cryptographic hashes or digital signatures. Any lack of integrity is detected and flagged before the transaction completes.
- Authorisation for Key Documents: Authorisation processes define who is permitted to approve, issue or sign key transactional documents. Approval workflows enforce segregation of duties and are documented in the application's authorisation matrix.
- Confidentiality & Non-Repudiation: Key documents — including contracts, tenders and formal agreements — are protected for confidentiality, integrity, proof of dispatch and proof of receipt. Digital signatures or sealed audit logs provide non-repudiation evidence.
- Transaction Confidentiality & Integrity: Transactions (e.g. orders, delivery addresses, receipt confirmations) are protected through end-to-end encryption and integrity verification throughout their entire processing chain.
- Transaction Confidentiality Duration: The period during which a transaction remains confidential is defined based on business and legal requirements. Cryptographic protections are maintained for the full duration of the confidentiality period.
- Insurance & Contractual Requirements: Insurance requirements and other contractual obligations relating to transactional services are identified and addressed in the application design and supporting operational procedures.
4.3 Electronic Ordering & Payment
- Order Information Confidentiality & Integrity: Order information is encrypted in transit and at rest. Integrity checks prevent unauthorised modification of order details between submission and fulfilment.
- Payment Verification: Payment information supplied by customers is verified to an appropriate degree — address verification, card validation codes and fraud detection mechanisms are applied proportionally to the transaction value and risk.
- Transaction Duplication Prevention: Controls prevent loss or duplication of transaction information. Idempotency mechanisms, unique transaction identifiers and reconciliation processes are implemented.
- Secure Transaction Storage: Transaction details are stored on systems within the organisational intranet, not on storage platforms directly accessible from the internet. No transaction data is retained on publicly accessible environments or electronic storage media exposed to the public network.
- Trusted Authority Integration: Where a trusted authority (e.g. a certificate authority for digital signatures or certificates) is used, security is integrated throughout the entire end-to-end certificate or signature management process, including issuance, renewal, revocation and validation.
5. Secure System Architecture & Engineering Principles (A 8.27)
Secure engineering principles are established, documented and applied to all information system development and engineering activities. These principles are reviewed regularly and updated to reflect emerging threats and evolving best practices. Systems are designed based on a security requirements catalogue, a security profile derived from the information classification and a threat model.
5.1 Security Control Analysis
- Full Range of Controls: The system architecture addresses the full range of security controls required to protect information and systems against identified threats. Control selection is based on the risk assessment and the asset's classification level.
- Control Capabilities: Each security control is evaluated for its capability to prevent, detect or respond to security events. Controls are selected to provide a layered defence that addresses all three capabilities.
- Business-Process-Specific Controls: Specific security controls required by particular business processes — such as encryption of sensitive information, integrity checking and digital signing — are identified and incorporated into the architecture.
- Control Placement: The architecture specifies where and how each security control is applied, whether integrated into the application, the infrastructure layer or a centralised security service. Placement decisions align with the overall security architecture.
- Integrated Control Set: Individual security controls — both manual and automated — are designed to work together as an integrated set. Dependencies between controls are documented, and gaps in the overall control chain are identified and addressed.
5.2 Engineering Considerations
- Security Architecture Integration: Every system design integrates with the organisation's overarching security architecture. Common security services (identity management, logging, encryption) are reused rather than rebuilt.
- Technical Security Infrastructure: The design leverages the existing technical security infrastructure — public key infrastructure (PKI), identity and access management (IAM), data leakage prevention and dynamic access management — rather than introducing parallel mechanisms.
- Organisational Capability: Technology choices are evaluated against the organisation's capability to develop, operate and support the chosen solution over its full life cycle. Technologies that exceed available internal expertise are selected only when external support arrangements are in place.
- Cost, Time & Complexity: The cost, time and complexity of meeting security requirements are considered during technology selection. Trade-offs are documented and approved by the project sponsor and the Information Security Officer.
- Current Good Practices: System designs reflect current good practices from industry standards, vendor guidance and recognised security frameworks. Design teams monitor relevant advisories and adjust patterns as the threat landscape evolves.
5.3 Secure Design Principles
- Architecture Principles: The following architecture principles apply to all system designs: "security by design", "defence in depth", "security by default", "default deny", "fail securely", "distrust input from external applications", "security in deployment", "assume breach", "least privilege", "usability and manageability" and "least functionality". Each design document identifies which principles are applied and how.
- Security-Oriented Design Review: A security-oriented design review is conducted for every system before implementation begins. The review identifies information security and privacy vulnerabilities, ensures that security controls are specified and confirms that all security requirements are addressed.
- Residual Risk Documentation: Where a security control does not fully meet the stated requirements (e.g. due to overriding safety or usability requirements), the gap is documented and formally acknowledged by the risk owner. Compensating controls are identified where feasible.
- System Hardening: All systems are hardened before deployment. Unnecessary services, ports and features are disabled. Default credentials are changed, and only required software components are installed. Hardening baselines are defined per technology stack.
5.4 Zero Trust Principles
- Assume Breach: System designs assume that the organisation's information systems are already breached. Security controls are not reliant on network perimeter security alone; internal segmentation, monitoring and detection capabilities are built into every layer.
- Never Trust, Always Verify: A "never trust and always verify" approach is applied to all access to information systems. Every request is authenticated and authorised regardless of the requester's network location.
- End-to-End Encryption: Requests to information systems are encrypted end-to-end. Encryption is not terminated at intermediate network boundaries unless inspection is explicitly required and documented.
- External-Origin Assumption: Every request to an information system is verified as if it originated from an open, external network — even when the request originates internally. No automatic trust is granted based on network location.
- Least Privilege & Dynamic Access: Access control follows the principle of least privilege. Dynamic access control techniques authenticate and authorise requests based on contextual information — authentication credentials, user identity, endpoint device posture, data classification and situational risk indicators (see the Access Control Policy).
- Strong Authentication: All requesters are authenticated and all authorisation requests are validated based on user identity, authentication credentials and endpoint device data. Strong authentication (e.g. multi-factor authentication) is enforced for access to systems processing classified information (see the Access Control Policy).
6. Secure Coding (A 8.28)
Secure coding principles apply to all software development — both in-house and outsourced. A secure coding policy defines organisation-specific expectations, approved principles and prohibited practices. Development tools are configured to support secure coding, and developers receive ongoing training in secure coding techniques.
6.1 Planning & Preparation
- Expectations & Approved Principles: Organisation-specific expectations and approved principles for secure coding are documented and communicated to all development teams. These apply equally to in-house developers and outsourced code development.
- Common & Historical Defects: A catalogue of common and historical coding practices and defects that lead to security and privacy vulnerabilities is maintained. The catalogue is updated when new vulnerability classes emerge and is used as input for training and code review checklists.
- Development Tool Configuration: Development tools — including integrated development environments (IDEs), linters and build pipelines — are configured to enforce secure coding rules automatically. Code that violates defined rules is flagged at the earliest possible stage.
- Vendor Guidance: Guidance issued by the providers of development tools and execution environments is followed. Security advisories from tool vendors are reviewed and applied in a timely manner.
- Updated Development Tools: Development tools (compilers, build systems, dependency managers, static analysis tools) are kept up to date. Tool updates are applied according to the organisation's patch management process, and outdated tool versions are retired.
- Developer Qualification: Developers are qualified in writing secure code before they contribute to production systems. Qualification is evidenced through completed training, certifications or demonstrated experience reviewed by a senior developer.
- Secure Design & Threat Modelling: Secure design practices and threat modelling are applied during the planning phase of every development effort. Threat models identify relevant threat actors, attack vectors and required countermeasures.
- Secure Coding Standards: Secure coding standards are documented for each technology stack. Where recognised industry standards exist (e.g. OWASP, CERT Secure Coding Standards), these are adopted and supplemented with organisation-specific rules. Compliance with the standards is mandatory for all production code.
- Controlled Development Environments: Development is performed in controlled environments with defined access rights, approved toolchains and standardised configurations. Uncontrolled or personal environments are not used for production-targeted code.
6.2 During Coding
- Language-Specific Practices: Secure coding practices specific to the programming languages and techniques being used are defined and followed. These cover language-specific pitfalls such as memory management in C/C++, injection prevention in web languages and serialisation security in Java/.NET.
- Secure Programming Techniques: Secure programming techniques are used throughout development — pair programming for security-critical code, refactoring to eliminate security debt, mandatory peer review for all merge requests, dedicated security iterations and test-driven development for security functions.
- Structured Programming: Structured programming techniques are employed to produce clear, maintainable and verifiable code. Complex logic is decomposed into well-defined modules with explicit interfaces.
- Documentation & Defect Removal: Code is documented to a level that enables independent review. Programming defects that could allow security or privacy vulnerabilities to be exploited are identified and removed during development, not deferred to post-release.
- Prohibited Design Patterns: The following insecure design patterns are prohibited: hard-coded passwords or API keys, unapproved code samples from untrusted sources, unauthenticated web services, disabled certificate validation and use of deprecated cryptographic algorithms. Automated checks in the build pipeline detect and block these patterns.
- Static Analysis During Development: Static application security testing (SAST) is integrated into the build pipeline and runs on every code change. SAST findings above the defined severity threshold block the build until they are resolved or formally accepted.
- Attack Surface & Least Privilege: Before software is made operational, the attack surface is evaluated and minimised. The principle of least privilege is applied to all runtime permissions — services run with the minimum permissions required for their function.
- Common Programming Error Analysis: Before software is made operational, an analysis of the most common programming errors (e.g. OWASP Top 10, CWE Top 25) is conducted and documented. The analysis confirms that all applicable error classes have been mitigated.
6.3 Review & Maintenance
- Secure Packaging & Deployment: Updates are securely packaged and deployed. Installation, update and patch files are verified using checksums or digital signatures before deployment. Deployment pipelines enforce integrity verification as a mandatory step.
- Vulnerability Handling: Reported information security and privacy vulnerabilities are handled through the organisation's vulnerability management process (see IT operations policy). Fixes are developed, tested and released according to severity-based timelines.
- Error & Attack Logging: Errors and suspected attacks are logged. Security event logs are forwarded to the centralised logging infrastructure and reviewed regularly. Code adjustments are made as necessary based on log analysis findings.
- Source Code Protection: Source code is protected against unauthorised access and tampering. Configuration management tools provide access control and version control. Access rights to repositories are reviewed quarterly.
- External Library Management: External libraries are managed through a maintained inventory that tracks library name, version, licence and known vulnerabilities. Libraries are updated with each release cycle, and end-of-life libraries are replaced. Vulnerabilities discovered in third-party components are managed through the Security Operations vulnerability management process, including severity-based remediation timelines.
- Component Selection & Reuse: Well-vetted, proven components are selected and reused — particularly for authentication and cryptographic functions. In-house reimplementation of standard security functions is avoided. Components are authorised before inclusion in the codebase.
- External Component Provenance: The licence, security history and provenance of every external component are evaluated before adoption. Components with known unresolved vulnerabilities, unfavourable licence terms or unclear maintenance status are rejected.
- External Software Maintainability: External software tools and libraries are selected only from proven, reputable sources. Each library's maintainability is assessed — active community, regular release cadence and responsive security patching are required. Libraries that no longer meet these criteria are scheduled for replacement.
- Long-Term Availability: Sufficiently long-term availability of development resources and artefacts is ensured. Build scripts, tool versions and dependency snapshots are archived so that any released version can be rebuilt if necessary.
- Modified External Packages — Built-in Controls: When an external software package is modified, the risk of compromising its built-in security controls and integrity verification processes is assessed before the modification proceeds.
- Modified External Packages — Vendor Consent: Before modifying an external software package, the need to obtain consent from the vendor is evaluated. Licence terms are reviewed to confirm that modifications are permitted.
- Modified External Packages — Vendor Updates: Before modifying an external software package, the possibility of obtaining the required changes from the vendor as a standard program update is explored. Vendor-provided solutions are preferred over custom modifications.
- Modified External Packages — Maintenance Impact: Before modifying an external software package, the impact on future maintenance is assessed. If the modification makes the organisation responsible for maintaining the software, the total cost of ownership — including security patching — is evaluated and approved.
- Modified External Packages — Compatibility: Before modifying an external software package, compatibility with other software in use is verified. Integration tests confirm that the modification does not introduce regressions in dependent systems.
7. Security Testing in Development & Acceptance (A 8.29)
Security testing processes are defined and implemented across the development life cycle and for acceptance of new systems, upgrades and new versions. A test framework is established according to the protection requirements of the system under test, based on the requirements catalogue. Testing covers both functional and non-functional requirements, with particular emphasis on security-critical functions.
7.1 Testing Scope
- Security Functions: Security functions are tested comprehensively — including user authentication, access restriction, session management and the use of cryptography. Tests verify that security functions operate correctly under normal conditions, under load and when subjected to malformed inputs.
- Secure Coding Verification: Tests verify adherence to the secure coding standards defined in this policy. Automated static analysis (SAST) results are included in the test evidence, and any residual findings are documented with justification.
- Secure Configuration Verification: Tests confirm that system configurations — including operating system settings, firewall rules and security component configurations — match the approved hardening baselines and do not introduce unintended exposures.
7.2 Test Plans
- Schedule & Activities: Test plans include a detailed schedule of test activities and individual test cases. The schedule is aligned with the development milestones and accounts for dependency chains between test phases.
- Inputs & Expected Outputs: Each test case defines its inputs and the expected outputs under a range of conditions — including valid inputs, boundary values, invalid inputs and malicious payloads.
- Evaluation Criteria: Clear pass/fail criteria are established for evaluating test results. A documented comparison of expected versus actual outcomes (target/actual comparison) is produced for each test run.
- Further Actions: Test plans define the decision process and further actions to be taken when tests fail — re-test after fix, risk acceptance with documented justification, or escalation to the Information Security Officer for critical findings.
7.3 Testing Methods
- Code Review: Code review activities are performed as a core element of security testing. Reviews specifically target security flaws, including handling of unanticipated inputs and boundary conditions. Both automated (SAST) and manual review methods are applied.
- Vulnerability Scanning: Vulnerability scanning is performed to identify insecure configurations, missing patches and known system vulnerabilities. Scans are executed in the test environment before release and repeated after significant configuration changes.
- Penetration Testing: Penetration testing is performed to identify insecure code and design flaws. For systems with elevated protection requirements, penetration tests follow a documented concept that defines methods, scope and success criteria. Results are tracked to remediation.
7.4 Outsourced & Acquired Components
- Acquisition Process: An established acquisition process is followed for all externally sourced software components. The process includes security evaluation as a mandatory step before procurement approval.
- Supplier Security Requirements: Contracts with suppliers address the identified security requirements, including secure development practices, vulnerability disclosure obligations and the right to perform security testing on delivered components (see supplier management).
- Security Criteria Evaluation: Acquired products and services are evaluated against defined security criteria before they are accepted into the operational environment. Evaluation includes vulnerability scanning, configuration review and verification of the supplier's security documentation.
A formal release declaration is issued after successful completion of all required tests. The release confirms that the software meets functional, security and legal requirements and is approved for deployment to production. Regression tests verify that security mechanisms and settings are not altered by updates.
8. Outsourced Development (A 8.30)
Where software development is outsourced, the organisation directs and monitors the development activity to ensure that security requirements are met. Contractual agreements, defined service levels and regular oversight govern the outsourcing relationship. The organisation retains responsibility for the security of the outsourced deliverables.
8.1 Outsourcing Requirements
- Licensing & Intellectual Property: Licensing agreements clearly define code ownership and intellectual property rights for all outsourced content. Ownership of source code, documentation and all development artefacts is assigned to the organisation unless explicitly agreed otherwise (see IPR compliance).
- Contractual Secure Development: Contracts with external developers include binding requirements for secure design, secure coding, code review and security testing practices as defined in this policy (see sections on secure coding and security testing).
- Threat Model Provision: The organisation provides the applicable threat model to external developers. The threat model identifies relevant threat actors, attack vectors and required countermeasures that the external development team integrates into their design and implementation.
- Acceptance Testing: Acceptance tests are performed on all deliverables to verify quality and accuracy. Test cases cover functional requirements, security requirements and integration with existing systems. Deliverables that fail acceptance testing are returned for remediation.
- Security & Privacy Capability Evidence: External developers provide evidence that minimum acceptable levels of security and privacy capabilities are established — through assurance reports, certifications (e.g. ISO 27001, SOC 2) or independent audit results.
- Malicious Content Testing: External developers provide evidence that sufficient testing has been applied to guard against the presence of malicious content — both intentional (e.g. backdoors, logic bombs) and unintentional (e.g. vulnerable dependencies). Delivery packages are scanned independently before acceptance.
- Vulnerability Testing Evidence: External developers provide evidence that sufficient testing has been applied to guard against the presence of known vulnerabilities. This includes current SAST and dependency scanning reports delivered with each release.
- Source Code Escrow: Escrow agreements for the software source code are established where the outsourced software is critical to business operations. Escrow terms cover release conditions (e.g. supplier insolvency or discontinuation of support) and regular escrow verification.
- Audit Rights: Contracts include the contractual right to audit development processes and controls. Audits may be conducted by the organisation or by an independent third party and cover adherence to secure development practices, access controls and change management.
- Development Environment Security: Security requirements for the external development environment are specified in the contract. These include environment separation, access control, data protection and secure handling of the organisation's code and data (see environment separation section of this policy).
- Applicable Legislation: Contracts address applicable legislation, including data protection laws (e.g. GDPR and applicable national data protection law), export control regulations and sector-specific requirements. The supplier confirms compliance with all relevant legal obligations.
9. Separation of Development, Test & Production Environments (A 8.31)
Development, testing and production environments are separated and controlled to reduce the risk of unauthorised access to or changes of the production environment. The separation approach is documented, including the architecture of each environment and the procedures applied after testing is complete.
9.1 Environment Separation Rules
- Adequate Separation: Development and production systems are adequately separated and operate in different domains — using separate virtual or physical environments, separate network segments and independent access controls.
- Deployment Rules & Authorisation: Rules and authorisation requirements for deploying software from development to production are defined, documented and enforced. Only formally tested and approved releases are deployed to production.
- Testing Before Production: All changes to production systems and applications are tested in a testing or staging environment prior to deployment. Test evidence is recorded and linked to the change record (see configuration and change management policy).
- No Testing in Production: Testing is not performed directly in production environments except in circumstances that are defined, approved and documented in advance. Any approved production testing is time-limited and subject to enhanced monitoring.
- Development Tools in Production: Compilers, editors, debuggers and other development tools or utility programs are not accessible from production systems unless they are required for a specific, approved operational purpose. Unnecessary tools are removed.
- Environment Identification Labels: Appropriate environment identification labels are displayed in application menus, command prompts and system banners. Visual differentiation (e.g. colour-coded headers) reduces the risk of personnel accidentally executing actions in the wrong environment.
- Sensitive Information in Non-Production: Sensitive information is not copied into development or testing environments unless equivalent security controls are provided. Where production data is needed, it is anonymised or pseudonymised before transfer (see the test information section of this policy).
- Separation of Duties: No single person has the ability to make changes to both development and production environments without prior review and approval by a second authorised person. Deployment pipelines enforce this separation technically.
9.2 Environment Protection
- Tool Patching & Updates: All development, integration and testing tools — including build systems, integrators, compilers, configuration systems and libraries — are patched and updated according to the organisation's patch management process.
- Secure Configuration: Systems and software in all non-production environments are securely configured following the same hardening principles applied to production, adjusted only where necessary for development or testing purposes.
- Access Control: Access to development, test and staging environments is controlled and granted on a need-to-access basis. Access rights are reviewed quarterly and revoked promptly when no longer required.
- Change Monitoring: Changes to the environment infrastructure and code stored therein are monitored. Unauthorised modifications trigger alerts and are investigated.
- Secure Monitoring: Security monitoring is applied to non-production environments to detect unauthorised access, misuse and security events. Monitoring coverage is proportional to the sensitivity of the data and code in the environment.
- Environment Backups: Backups of development, test and staging environments are taken according to a defined schedule. Backups cover source code repositories, build configurations, environment configurations and test data sets.
10. Test Information (A 8.33)
Test information is appropriately selected, protected and managed. Where operational data is used for testing, additional controls prevent unauthorised disclosure and ensure compliance with data protection requirements. Personal data used for testing is at least pseudonymised, ideally anonymised; the Data Protection Officer is involved in defining the approach.
- Access Control Parity: The same access control procedures that apply to operational environments are applied to test environments containing operational data. Only authorised test personnel access the data, and access is granted for the duration of the test only.
- Separate Authorisation per Copy: A separate, documented authorisation is obtained each time operational information is copied to a test environment. The authorisation specifies the data set, the purpose, the responsible person and the expected retention period.
- Audit Trail: The copying and use of operational information for testing purposes is logged. The audit trail records who authorised the copy, when the data was transferred, the volume of data and when it was deleted from the test environment.
- Data Protection by Masking: Sensitive information used for testing is protected by removal or masking (e.g. anonymisation, pseudonymisation, tokenisation) before it is transferred to the test environment (see the Data Deletion, Masking & DLP Policy).
- Post-Test Deletion: Operational information is securely deleted from the test environment immediately after testing is complete. Deletion is verified and documented to prevent unauthorised subsequent use of the test data (see the Data Deletion, Masking & DLP Policy).
11. Protection During Audit Testing (A 8.34)
Audit tests and other assurance activities involving assessment of operational systems are planned and agreed to minimise disruption to business processes. Access granted for audit purposes is strictly controlled, time-limited and revoked immediately upon completion.
- Management-Agreed Access: Audit requests for access to systems and data are agreed with appropriate management before access is granted. The scope, timing and systems involved are documented in the audit engagement letter.
- Scope Control: The scope of technical audit tests is agreed and controlled. Tests are limited to the systems, data and time windows specified in the approved audit plan. Any scope extension requires separate approval.
- Read-Only Access Principle: Audit tests are limited to read-only access to software and data. Where read-only access is not available to obtain the necessary information, an experienced administrator with the required access rights executes the test on behalf of the auditor, with the auditor observing and verifying the results.
- Device Security Requirements: Before access is granted, the security posture of devices used for accessing the systems (e.g. laptops, tablets) is established and verified — including current antivirus software, up-to-date patches, disk encryption and compliant configuration.
- Non-Read-Only Access Controls: Access other than read-only is permitted only for isolated copies of system files. Copies are securely deleted when the audit is completed, unless there is a documented obligation to retain them under audit documentation requirements, in which case they are given appropriate protection.
- Special Processing Requests: Requests for special or additional processing — such as running audit tools, scripts or automated scanners — are identified, agreed in advance and authorised by the system owner before execution.
- Availability Consideration: Audit tests that can affect system availability are scheduled outside business hours. Where this is not feasible, the potential impact is assessed and communicated to affected stakeholders in advance.
- Access Logging: All access for audit and test purposes is monitored and logged. Audit access logs are retained according to the organisation's log retention schedule and are available for review by the Information Security Officer.
12. Roles & Responsibilities
- Top Management: Approves this policy, allocates resources for secure development and ensures organisational commitment to security throughout the software development life cycle.
- Information Security Officer (ISO): Oversees the implementation of this policy, conducts or coordinates security design reviews, monitors compliance and reports on the maturity of secure development practices.
- Development Managers: Ensure that development teams follow the secure development life cycle, coding standards and testing requirements defined in this policy. Approve release declarations and manage security training for their teams.
- Developers & Architects: Apply secure coding standards, perform threat modelling and design reviews, remediate security findings and maintain documentation. Participate in security training and share knowledge within the team.
- Quality Assurance & Testing: Execute security test plans, perform code reviews, run vulnerability scans and document test results. Escalate critical findings to the Information Security Officer.
- IT Operations: Maintain the separation of development, test and production environments, enforce deployment authorisation rules and support audit testing with appropriate access controls.
- Data Protection Officer: Advises on privacy requirements for application design, approves the approach for anonymising or pseudonymising test data and reviews data protection aspects of outsourced development contracts.
- Procurement & Vendor Management: Ensures that outsourced development contracts include the required security clauses, audit rights and intellectual property provisions defined in this policy.
13. Review & Maintenance
This policy is reviewed and, where necessary, updated:
- At least annually as part of the ISMS management review cycle.
- After significant changes to the development organisation, toolchain or technology stack.
- After security incidents related to software vulnerabilities or development process failures.
- When changes in the threat landscape, regulatory environment or industry best practices require adjustments to secure development practices.
Quellen
- ISO/IEC 27002:2022 Abschnitte 8.25–8.31, 8.33–8.34 — Secure Development Controls
- BSI IT-Grundschutz CON.8 — Softwareentwicklung
- OWASP Top 10 — Die zehn kritischsten Webanwendungsrisiken
- CWE Top 25 — Die 25 gefährlichsten Software-Schwachstellen