Softwareentwicklungen sind oft im produktiven Einsatz, ohne das Qualitäts- und Sicherheitsüberprüfungen durchgeführt wurden. Richtlinien und Standards sind meist nicht vorhanden und werden nicht im Entwicklungsprozess berücksichtigt. Dies führt dazu, dass lauffähige Entwicklungsstände keine Struktur aufweisen. Sicherheitslücken werden nicht erkannt und somit nicht behoben, wodurch Schwachstellen im System auftreten können. Somit steigt die Wahrscheinlichkeit eines erfolgreichen Angriffes auf das System, was hohe Kosten für eine mögliche Schadensminimierung bzw. Fehlerbehebung bedeuten kann.
Integration von Security in DevOps
Die Erweiterung des in Blogartikel Warum braucht mein Unternehmen DevOps erläuterten DevOps-Paradigmas, wird als „DevSecOps" bezeichnet. Die Hauptmerkmale sind es Qualitäts- und Sicherheitsverbesserungen in Softwareentwicklungen durchzuführen. Dies wird durch Automatisierung, Überwachung und der Integration von Sicherheitsaspekten in die zyklische Prozesskette des Paradigmas erreicht.1 Der Sicherheitsaspekt wird wie in dem zuvor verwiesenen Blogartikel beschrieben, nach dem „Shift-Left"-Prinzip in die Prozesskette integriert, wodurch die Qualitäts- und Sicherheitsverbesserungen bereits frühzeitig möglich werden.2
Phasen des Paradigmas
Grundsätzlich gibt es keinen definierten Standard zur Umsetzung des Paradigmas. Die Umsetzung sollte sich daher nach den gegebenen Anwendungsfällen richten. Die im Folgenden erläuterten Phasen richten sich nach der zyklischen Prozesskette von Larry Maccherone, wodurch eine mögliche Realisierung des Paradigmas erläutert wird.3
Diese wird in der folgenden Abbildung grafisch dargestellt:
Die Prozesskette wird in eine Pre-Produktionsumgebung und eine Produktionsumgebung unterteilt. Dies ermöglicht eine zuverlässige Veröffentlichung der Software, da diese erst nach erfolgreichem Testen produktiv geschaltet wird.
In der Phase „Plan" werden Anforderungen und Vorgehensweisen geplant und Verbesserungsvorschläge sowie Kundenbedürfnisse berücksichtigt. Des Weiteren wird verstärkt Rücksicht auf sicherheitsrelevante Aspekte genommen, die zuvor analysiert wurden. Somit ist es möglich, frühzeitig Risiken zu identifizieren und darauf entsprechend zu reagieren.4
Die nächste Phase „Develop Code / Tests" wird um das Testen erweitert. Static Analyse Security Testing (SAST) und Interactive Application Security Testing (IAST) werden an dieser Stelle ergänzt. SAST ermöglicht es hierbei, dem Entwickler Sicherheitslücken oder auch einen potenziell fehlerhaften Code in einer frühen Entwicklungsphase aufzudecken, da die Entwicklung im Source Code mithilfe von Analysetools getestet wird.5
IAST wird für das Auffinden von Sicherheitslücken in Webapplikationen verwendet. Erreicht wird dies mithilfe von Analysetools, welche einen Schwachstellenscan auf Webapplikation ausführen.
In der Phase „Build" werden Änderungen aus dem Repository bestenfalls automatisch in den Entwicklungsstand integriert und zusammen mit den benötigten Abhängigkeiten paketiert.
Anschließend wird der gesamte Entwicklungsstand auf bekannte Sicherheitsrisiken analysiert. Hierzu werden Common Vulnerabilities and Exposures (CVE)-Listen verwendet, um die Entwicklungsstände sowie deren Abhängigkeiten mit veröffentlichten Sicherheitslücken bzw. Schwachstellen zu vergleichen.6 Diese Phase wird als „Test" bezeichnet.
Während einer Projektbearbeitung ist das Berücksichtigen der IT-Unternehmensrichtlinien notwendig. Hierbei ist das Ziel, Regularien einzuhalten, um eine strukturierte und ordnungsgemäße Projektabwicklung zu gewährleisten. Dies kann z. B. mithilfe eines Quality Gates projektspezifisch ermöglicht werden. Hierbei werden die Richtlinien, auch Policies genannt, vom Projektbesitzer definiert. Festgelegte Werte der Richtlinien werden zu Beginn eines Projektes gering gehalten und sukzessive erhöht, was zur Akzeptanz und Einhaltung dieser führt. Dieses Verfahren führt zur Erreichung einer kontinuierlichen Qualitätsverbesserung. Die Überprüfung der Richtlinien wird in der Phase „Validate More" durchgeführt. Des Weiteren wird die Entwicklung mittels umfassenderen Sicherheitstests analysiert. Hierzu wird das System verschiedenen Negativtests ausgesetzt. Dies wird als „Fuzzing" bezeichnet. Ziel ist es, das System mit invaliden Daten zu testen, um eventuell anfallende Schwachstellen auszuschließen.7 Zudem werden innerhalb dieser Phase Penetrationstests ausgeführt, die Angriffe auf das System simulieren. Ziel ist es eine Schwachstelle und deren mögliche Auswirkungen auf das System zu erkennen.8
Es folgt die Phase „Configure & Deploy"; hierbei wird der Entwicklungsstand vor einer Veröffentlichung mittels einer Konfigurationsvalidierung überprüft. Es werden Spezifikationen festgelegt, die sicherstellen, dass Fehlkonfigurationen nicht innerhalb der Produktionsumgebung auftreten. Fehlerhafte Konfigurationen sind an dieser Stelle z. B. falsche Werte eines Elementes innerhalb einer Konfigurationsdatei oder falsch konfigurierte Rechte für Dateien.9 Anschließend werden innerhalb dieser Phase Features getestet, bei denen Funktionalitäten zur Laufzeit ein- oder ausgeschaltet werden können. Dies wird als „Feature Toggle" bezeichnet. Die Phase dient ebenso der Verwaltung der Bandbreite des verwendeten Netzwerkes, um eine funktionierende Netzwerkleistung im Betrieb zu gewährleisten. Der Fachbegriff hierzu lautet „Traffic Shaping".10
Nachdem die Konfigurationen überprüft und die Entwicklung veröffentlicht wurden, startet die Phase „Monitor". In dieser Phase wird die Anwendung überwacht, um Fehler im produktiven Betrieb zu erkennen und daraus Maßnahmen zur kontinuierlichen Verbesserung abzuleiten.
In der nächsten Phase „Detect" werden Angriffserkennungen in die Prozesskette implementiert. Für die Erkennung von Angriffen auf System oder Netzwerk werden Intrusion Detection Systeme (IDS) verwendet.11
Ein weiterer Ansatz für eine Angriffserkennung ist Run-time Application Security Protection (RASP). Hierbei wird die Anwendung verifiziert, indem der binär geladene Code der Anwendung vor der Laufzeit analysiert und anschließend mit der Anwendung während der Laufzeit verglichen wird.12 Dies erfolgt in der Phase „Contain". Wurde ein potenziell infiziertes System detektiert, müssen umgehend Maßnahmen ergriffen werden. Dabei soll das System nicht heruntergefahren, sondern vom Netzwerk isoliert werden, um eine Ausbreitung zu verhindern. Befindet sich das System innerhalb eines produktiven Netzwerkes, ist von Anmeldungen mit privilegierten Nutzerkonten dringend abzuraten. Anschließend sollte eine forensische Analyse durch Dienstleister oder Strafverfolgungsbehörden durchgeführt werden.13
Um Ausfallzeiten gering zu halten, werden in der Phase „Stabilize" Wiederherstellungsmöglichkeiten vorbereitet. Die Datensicherung des produktiven Systems wird vorgenommen, um ggf. nach einem Systemverlust den Stand des letzten Backups aufzuspielen. Die Voraussetzung hierfür ist, dass die Datensicherung in kleinen Intervallen regelmäßig vorgenommen wird.14
Ziel der Phase „Analyze" ist die Ursachenanalyse von im Betrieb aufgetretenen Fehlern. Diese sowie unerwünschte Ereignisse werden auf ihre Entstehung analysiert, bewertet und ggf. in späteren Phasen an ihrem Ursprung behoben. So wird der Wiederholung des Fehlers entgegengewirkt.15
Risiken werden in der Phase „Predict" auf ihre Auftrittswahrscheinlichkeit eingeschätzt, um diese in der anschließenden Phase „Plan" zu berücksichtigen. Daraus hervorgehend werden Aktionen festgelegt, die ein solches Risiko reduzieren.16
Fazit
Die Umsetzung bzw. das Arbeiten nach einem DevSecOps-Paradigma innerhalb eines Unternehmens ist eine Herausforderung. Der Umgang mit den Tools sowie die Integration der Tools in die DevSecOps-Prozesskette erfordern ein umfassendes Know-how, um die einzelnen Prozesse innerhalb der Phasen sinnvoll umzusetzen und anschließend zu betreuen. Ebenso spielt die Benutzerakzeptanz hierbei eine wichtige Rolle. Entwickler müssen mit den Tools vertraut gemacht werden und verstehen, wie mit diesen umzugehen ist. Somit entsteht ein zusätzlicher Zeit- und Kostenfaktor. Dieser wird jedoch bei der Fehlerbehebung eingespart, da die Software mit guter Qualität veröffentlicht wird, soweit es die Analysetools ermöglichen.17 Aufgrund dessen sinkt zusätzlich der Bedarf für nachträgliche Sicherheitsüberprüfungen. IT Security spezialisierte Fachkräfte, die ein manuelles Überprüfen auf Sicherheitslücken bewerkstelligten, werden somit nur noch bedingt benötigt.18
Quellenverzeichnis
- 1 lbunian, N., Fraser, G. & Sudholt, D. (2020). Causes and Effects of Fitness Landscapes in Unit Test Generation. https://doi.org/10.1145/3377930.3390194
- 2 Ansam, K., Gondal, I., Vamplew, P. & Kamruzzaman, J. (2019). Survey of intrusion detection systems: techniques, datasets and challenges. https://doi.org/10.1186/s42400-019-0038-7
- 3 BSI - Maßnahmen zum Schutz vor Emotet und gefährlichen E-Mails im Allgemeinen. (n. d.). Verfügbar 2. November 2021 unter https://www.bsi.bund.de/DE/Themen/Unternehmen-und-Organisationen/Informationen-und-Empfehlungen/Empfehlungen-nach-Gefaehrdungen/Malware/Emotet/emotet_node.html
- 4 Chen, Z., Zhang, Y. & Chen, Z. (2009). A Categorization Framework for Common Computer Vulnerabilities and Exposures. The Computer Journal. https://doi.org/10.1093/comjnl/bxp040
- 5 Cusick, J. J. (2017). Achieving and Managing Availability SLAs with ITIL Driven Processes, DevOps, and Workflow Tools. https://arxiv.org/ftp/arxiv/papers/1705/1705.04906.pdf
- 6 Eckert, C. (2018). IT-Sicherheit : Konzepte - Verfahren - Protokolle (10. Auflag).
- 7 Huang, P., Bolosky, W. J., Singh, A. & Zhou, Y. (2015). ConfValley: A Systematic Configuration Validation Framework for Cloud Services. https://doi.org/10.1145/2741948.2741963
- 8 Kersten, H., Klett, G., Reuter, J. & Schröder, K.-W. (2016). IT-Sicherheitsmanagement nach der neuen ISO 27001 : ISMS, Risiken, Kennziffern, Controls. Springer Vieweg.
- 9 Lam, T. & Chaillan, N. (2019). DoD Enterprise DevSecOps Reference Design. https://dodcio.defense.gov/Portals/0/Documents/DoD%20Enterprise%20DevSecOps%20Reference%20Design%20v1.0_Public%20Release.pdf
- 10 Liang, H., Pei, X., Jia, X., Shen, W. & Zhang, J. (2018). Fuzzing: State of the Art. IEEE Transactions on Reliability, 67(3), 1199–1218. https://doi.org/10.1109/TR.2018.2834476
- 11 Maccherone, L. (2017b). DevSecOps Cycle with explanation. Verfügbar 26. Oktober 2021 unter https://twitter.com/LMaccherone/status/843647960797888512/photo/1
- 12 Rein, A. (2017). DRIVE: Dynamic Runtime Integrity Verification and Evaluation. https://doi.org/10.1145/3052973.3052975
- 13 Saeed, A., Nandita, D., Vytautas, V., Lam, V. T., Carlo, C. & Amin, V. (n. d.). Carousel: Scalable Traffic Shaping at End Hosts. https://doi.org/10.1145/3098822.3098852
- 14 Shostack, A. (2014). Threat Modeling: Designing for Security. Wiley. https://books.google.de/books?id=YiHcAgAAQBAJ
- 15 Tomas, N., Li, J. & Huang, H. (2019). An Empirical Study on Culture, Automation, Measurement, and Sharing of DevSecOps. 2019 International Conference on Cyber Security and Protection of Digital Services (Cyber Security), 1–8. https://doi.org/10.1109/CyberSecPODS.2019.8884935
- 16 Wedy Freddy Santoso, D. S. S. S. (2021). Implementation And Performance Analysis Development Security Operations (DevSecOps) using Static Analysis and Security Testing (SAST). https://abecindonesia.org/iabec/index.php/iabec/article/view/31/13
- 17 Yin, X., Alonso, J., Machida, F., Andrade, E. C. & Trivedi, K. S. (2012). Availability Modeling and Analysis for Data Backup and Restore Operations. 2012 IEEE 31st Symposium on Reliable Distributed Systems, 141–150. https://doi.org/10.1109/SRDS.2012.9
Seminarempfehlungen
DOCKER DEVOPS WORKSHOP E-DOCK-01
Zum SeminarLINUX SERVERHÄRTUNG UND SECURITY TESTING SEC-UX-01
Zum SeminarIT-SICHERHEIT FÜR PROJEKTMANAGER UND IT-LEITER - EIN ÜBERBLICK IT-SEC-01
Zum Seminar