{"id":31852,"date":"2019-10-31T21:43:30","date_gmt":"2019-10-31T18:43:30","guid":{"rendered":"https:\/\/prohoster.info\/blog\/strah-i-nenavist-devsecops\/"},"modified":"2019-10-31T21:43:30","modified_gmt":"2019-10-31T18:43:30","slug":"strah-i-nenavist-devsecops","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/strah-i-nenavist-devsecops","title":{"rendered":"Angst und Hass in DevSecOps","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Wir hatten 2 Code-Analyzer, 4 Werkzeuge f\u00fcr dynamisches Testen, eigene Bastelarbeiten und 250 Skripte. Nicht dass all dies im aktuellen Prozess notwendig war, aber wenn man einmal mit der Implementierung von DevSecOps begonnen hat, sollte man es auch zu Ende bringen.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/bcd78cc4963e397ecbaa18ffd43ce05e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i><noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/user\/narkos\">Quelle<\/a><\/noindex>. Die Charaktere wurden von Justin Roiland und Dan Harmon kreiert.<\/i><\/p>\n<p>Was ist SecDevOps? Und DevSecOps? Wo liegen die Unterschiede? Was ist Application Security? Warum funktioniert der klassische Ansatz nicht mehr? Auf all diese Fragen hat er Antworten. <b>Juri Schabalin<\/b> von\u00a0<b>Swordfish Security. <\/b>Juri wird ausf\u00fchrlich auf alles eingehen und die Probleme des \u00dcbergangs vom klassischen Modell der Application Security zum DevSecOps-Prozess erl\u00e4utern: wie man den Prozess der sicheren Softwareentwicklung korrekt in den DevOps-Prozess integriert, ohne dabei etwas kaputt zu machen, welche grundlegenden Phasen der Sicherheitstests durchlaufen werden sollten, welche Werkzeuge verwendet werden k\u00f6nnen, wie sie sich unterscheiden und wie sie richtig konfiguriert werden, um Fallstricke zu vermeiden.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"sYMWGw5Lyu4\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/sYMWGw5Lyu4\/hqdefault.jpg\" alt=\"Video abspielen\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n<b>\u00dcber den Sprecher:<\/b> <b>Juri Schabalin ist <\/b>Chief Security Architect bei der <b>Swordfish Security<\/b>. Ist verantwortlich f\u00fcr die Implementierung von SSDL und f\u00fcr die gesamte Integration von Analysetools in ein einheitliches Entwicklungs- und Test-\u00d6kosystem. 7 Jahre Erfahrung in der Informationssicherheit. Hat bei Alfa-Bank, Sberbank und Positive Technologies gearbeitet, einem Unternehmen, das Software entwickelt und Dienstleistungen anbietet. Sprecher auf internationalen Konferenzen wie ZerONights, PHDays, RISSPA, OWASP.<\/p>\n<h2>Anwendungssicherheit: Worum geht es?<\/h2>\n<p>\n<b>Anwendungssicherheit<\/b>\u00a0ist ein Bereich der Sicherheit, der sich mit der Sicherheit von Anwendungen befasst. Er umfasst nicht die Infrastruktur oder Netzwerksicherheit, sondern konzentriert sich darauf, was wir schreiben und woran die Entwickler arbeiten \u2013 das sind die Schwachstellen und Verwundbarkeiten der Anwendungen selbst.<\/p>\n<p>Bereich <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/ef\/ef6\/modeling\/designer\/advanced\/edmx\/ssdl-spec\">SDL oder SDLC<\/a><\/noindex>\u00a0\u2014 <b>Sicherheitsentwicklungslebenszyklus<\/b>\u00a0wurde von Microsoft entwickelt. In der Abbildung sehen Sie das kanonische Modell des SDLC, dessen Hauptaufgabe es ist, die Sicherheit in jedem Schritt der Entwicklung zu ber\u00fccksichtigen, von den Anforderungen bis zur Ver\u00f6ffentlichung und dem Produktionsstart. Microsoft erkannte, dass es in der Industrie zu viele Bugs gibt, deren Anzahl steigt und dass man etwas dagegen unternehmen muss. Daher wurde dieser Ansatz vorgeschlagen, der zum kanonischen Modell wurde.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/466773b9a5bd355419fa1d6d1ddbca66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nApplication Security und SSDL zielen nicht darauf ab, Schwachstellen zu entdecken, wie h\u00e4ufig angenommen, sondern darauf, deren Entstehung zu verhindern. Im Laufe der Zeit wurde der klassische Ansatz von Microsoft verbessert und vertieft, um ein detaillierteres Verst\u00e4ndnis zu erm\u00f6glichen.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/58d3e6aadd30594c018940bcb2a8248b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer klassische SDLC ist stark in verschiedenen Methoden detailliert \u2014 OpenSAMM, BSIMM, OWASP. Die Methoden unterscheiden sich, sind jedoch im Gro\u00dfen und Ganzen \u00e4hnlich.<\/p>\n<h3>Building Security In Maturity Model<\/h3>\n<p>\nEs liegt mir am meisten am Herzen <b>BSIMM<\/b>\u00a0\u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bsimm.com\/\">Building Security In Maturity Model<\/a><\/noindex>. Die Grundlage der Methodik ist die Aufteilung des Application Security Prozesses in 4 Dom\u00e4nen: Governance, Intelligence, SSDL Touchpoints und Deployment. Jede Dom\u00e4ne umfasst 12 Praktiken, die in Form von 112 Aktivit\u00e4ten dargestellt werden.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/ae0bbfd0dde335af886282672ed92367.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJede der 112 Aktivit\u00e4ten hat <b>3 Reifegrade<\/b>: initial, mittel und fortgeschritten. Alle 12 Praktiken k\u00f6nnen modular studiert werden, um wichtige Aspekte auszuw\u00e4hlen, zu verstehen, wie sie implementiert werden k\u00f6nnen, und schrittweise Elemente wie statische und dynamische Codeanalyse oder Code-Reviews hinzuzuf\u00fcgen. Erstellen Sie einen Plan und arbeiten Sie ruhig im Rahmen der Umsetzung der gew\u00e4hlten Aktivit\u00e4ten.<\/p>\n<h2>Warum DevSecOps<\/h2>\n<p><\/p>\n<blockquote><p>DevOps ist ein umfassender Prozess, der die Sicherheitsaspekte mit einbezieht.<\/p><\/blockquote>\n<p>\nUrspr\u00fcnglich <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DevOps\"><b>DevOps<\/b><\/a><\/noindex> Die Sicherheits\u00fcberpr\u00fcfungen waren anf\u00e4nglich nicht optimal organisiert. In der Praxis war die Gr\u00f6\u00dfe der Sicherheitsgruppen deutlich geringer als heute, und sie agierten eher als Kontroll- und Aufsichtsinstanz, die Anforderungen stellt und die Qualit\u00e4t des Produkts nach der Ver\u00f6ffentlichung \u00fcberpr\u00fcft. Dies ist der klassische Ansatz, bei dem Sicherheitsgruppen von der Entwicklung getrennt waren und nicht am Prozess teilnahmen.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/1c5958fb123313308bdd92c5471c44da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas Hauptproblem besteht darin, dass die Informationssicherheit getrennt von der Entwicklung ist. \u00dcblicherweise gibt es einen Sicherheitsrahmen, der aus 2-3 gro\u00dfen und teuren Werkzeugen besteht. Alle sechs Monate wird der Quellcode oder die Anwendung geliefert, die gepr\u00fcft werden m\u00fcssen, und einmal im Jahr finden <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%98%D1%81%D0%BF%D1%8B%D1%82%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%B8%D0%B5\">Pentests<\/a><\/noindex>statt. Das alles f\u00fchrt dazu, dass sich die Markteinf\u00fchrungsfristen verz\u00f6gern und Entwickler mit einer riesigen Anzahl von Schwachstellen aus automatisierten Tools konfrontiert werden. All das l\u00e4sst sich nicht bew\u00e4ltigen und beheben, da die Ergebnisse aus den letzten sechs Monaten noch nicht ausgewertet wurden und bereits eine neue Charge ansteht.<\/p>\n<p>Im Verlauf unserer T\u00e4tigkeit haben wir festgestellt, dass die Sicherheitsanforderungen in allen Bereichen und Branchen verstanden haben, dass es an der Zeit ist, sich anzupassen und gemeinsam mit der Entwicklung aktiv zu werden \u2013 in\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%93%D0%B8%D0%B1%D0%BA%D0%B0%D1%8F_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8\"><b>Agile<\/b><\/a><\/noindex>. Das DevSecOps-Paradigma passt hervorragend zu agilen Entwicklungsmethoden, zur Implementierung, zum Support und zur Beteiligung an jedem Release und jeder Iteration.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/cf258bd7efc82ff27787b5029cf2f945.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Der \u00dcbergang zu DevSecOps<\/h2>\n<p>\nDas wichtigste Wort im Security Development Lifecycle ist <b>\u201eProzess\u201c<\/b>. Sie sollten das verstehen, bevor Sie dar\u00fcber nachdenken, Werkzeuge zu kaufen.<\/p>\n<blockquote><p>Es reicht nicht aus, Werkzeuge einfach in den DevOps-Prozess einzuf\u00fcgen \u2013 wichtig ist die Interaktion und das Verst\u00e4ndnis zwischen den Beteiligten.<\/p><\/blockquote>\n<p><\/p>\n<h3>Menschen sind wichtiger als Werkzeuge<\/h3>\n<p>\nH\u00e4ufig beginnt die Planung eines sicheren Entwicklungsprozesses mit der Auswahl und dem Kauf eines Werkzeugs, und endet mit dem Versuch, das Werkzeug in den bestehenden Prozess zu integrieren, was h\u00e4ufig nicht gelingt. Das f\u00fchrt zu unerfreulichen Ergebnissen, da jedes Werkzeug seine eigenen Besonderheiten und Einschr\u00e4nkungen hat.<\/p>\n<p>Ein h\u00e4ufiges Szenario ist, dass die Sicherheitsabteilung ein gutes, teures Tool mit umfangreichen Funktionen ausw\u00e4hlt und dann zu den Entwicklern kommt, um es im Prozess zu integrieren. Doch das funktioniert nicht \u2013 der Prozess ist so gestaltet, dass die Einschr\u00e4nkungen des bereits gekauften Tools nicht in das aktuelle Paradigma passen.<\/p>\n<blockquote><p>Beginnen Sie damit, das gew\u00fcnschte Ergebnis und den Ablauf des Prozesses zu beschreiben. Dies hilft, die Rollen des Tools und der Sicherheit im Prozess klarzustellen.<\/p><\/blockquote>\n<p><\/p>\n<h3>Starten Sie mit dem, was bereits verwendet wird.<\/h3>\n<p>\nBevor Sie teure Tools kaufen, schauen Sie sich an, was Sie bereits haben. Jedes Unternehmen hat Sicherheitsanforderungen, die an die Entwicklung gestellt werden, sowie Pr\u00fcfungen und Penetrationstests \u2013 warum nicht alles in eine verst\u00e4ndliche und f\u00fcr alle n\u00fctzliche Form bringen?<\/p>\n<p>In der Regel sind Anforderungen ein Papierdokument, das im Regal steht. Es gab einen Fall, in dem wir in ein Unternehmen kamen, um die Prozesse zu betrachten, und nach den Sicherheitsanforderungen f\u00fcr die Software fragten. Der zust\u00e4ndige Spezialist suchte lange:<\/p>\n<p><i>\u2014 Moment, irgendwo in meinen Notizen war der Weg, wo dieses Dokument aufbewahrt wird.<\/i><\/p>\n<p>Letztendlich erhielten wir das Dokument nach einer Woche.<\/p>\n<p>F\u00fcr Anforderungen, Pr\u00fcfungen und \u00c4hnliches erstellen Sie beispielsweise eine Seite auf\u00a0<b>Confluence<\/b>\u00a0\u2014 das ist f\u00fcr alle praktisch.<\/p>\n<blockquote><p>Es ist einfacher, das Vorhandene umzustrukturieren und als Ausgangspunkt zu nutzen.<\/p><\/blockquote>\n<p><\/p>\n<h3>Nutzen Sie Security Champions <\/h3>\n<p>\nIn der Regel gibt es in einem durchschnittlichen Unternehmen mit 100-200 Entwicklern einen Sicherheitsexperten, der mehrere Funktionen aus\u00fcbt und physisch nicht in der Lage ist, alles zu \u00fcberpr\u00fcfen. Selbst wenn er sein Bestes gibt, kann er nicht den gesamten Code \u00fcberpr\u00fcfen, den die Entwickler generieren. F\u00fcr solche F\u00e4lle wurde das Konzept entwickelt \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/Security_Champions\"><b>Security Champions<\/b><\/a><\/noindex>.<\/p>\n<blockquote><p>Security Champions sind Personen innerhalb des Entwicklungsteams, die sich f\u00fcr die Sicherheit Ihres Produkts einsetzen.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/c67728db4a6e34407da199387eba2bb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEin Security Champion ist der Ansprechpartner im Entwicklungsteam und ein Sicherheitsevangelist in einer Person.<\/p>\n<p>Normalerweise, wenn ein Sicherheitsexperte in ein Entwicklungsteam kommt und auf einen Fehler im Code hinweist, erh\u00e4lt er erstaunte Antworten:<\/p>\n<p><i>\u2014 Und wer sind Sie? Ich sehe Sie zum ersten Mal. Bei mir ist alles in Ordnung \u2014 mein Mentor hat bei der Code-\u00dcberpr\u00fcfung \"apply\" gesetzt, wir machen weiter!<\/i><\/p>\n<p>Das ist eine typische Situation, denn die Entwickler haben viel mehr Vertrauen in ihre unmittelbaren Kollegen oder Vorgesetzten, mit denen sie st\u00e4ndig in Kontakt stehen und Code-Reviews durchf\u00fchren. Wenn anstelle des Sicherheitsexperten ein Security Champion auf einen Fehler und seine Konsequenzen hinweist, hat dessen Wort mehr Gewicht.<\/p>\n<p>Zudem kennen Entwickler ihren Code besser als jeder Sicherheitsexperte. F\u00fcr jemanden, der in der Regel an mindestens f\u00fcnf Projekten in einem statischen Analysewerkzeug arbeitet, ist es oft schwierig, sich an alle Details zu erinnern. Security Champions hingegen kennen ihr Produkt: Sie wissen, wie die verschiedenen Komponenten interagieren und worauf sie zuerst achten m\u00fcssen \u2013 sie sind effizienter.<\/p>\n<p>Denken Sie dar\u00fcber nach, Security Champions einzuf\u00fchren und den Einfluss Ihres Sicherheitsteams zu erweitern. Es ist auch f\u00fcr den Champion selbst von Vorteil: berufliche Weiterentwicklung in einem neuen Bereich, Erweiterung des technischen Horizonts, Verbesserung technischer, organisatorischer und F\u00fchrungsf\u00e4higkeiten sowie Steigerung des Marktwerts. Es ist eine Art soziale Ingenieurskunst, Ihre 'Augen' im Entwicklungsteam.<\/p>\n<h2>Testphasen<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D0%BA%D0%BE%D0%BD_%D0%9F%D0%B0%D1%80%D0%B5%D1%82%D0%BE\">Paradigma 20 zu 80<\/a><\/noindex>\u00a0sagt, dass 20% des Aufwands 80% des Ergebnisses bringen. Diese 20% sind Praktiken der Analyse von Anwendungen, die automatisiert werden k\u00f6nnen und sollten. Beispiele f\u00fcr solche Aktivit\u00e4ten sind statische Analyse \u2014 <b>SAST<\/b>, dynamische Analyse \u2014 <b>DAST,<\/b> und\u00a0<b>Kontrolle von Open Source<\/b>. Ich werde n\u00e4her auf die Aktivit\u00e4ten eingehen und auch auf die Werkzeuge, welche Besonderheiten wir normalerweise bei deren Implementierung im Prozess ber\u00fccksichtigen und wie man dies richtig umsetzt.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/db720e0879cdd1ed818461ffb5f927da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Wesentliche Probleme der Werkzeuge<\/h3>\n<p>\nIch werde die f\u00fcr alle Werkzeuge relevanten Probleme herausstellen, die Aufmerksamkeit erfordern. Ich werde sie im Detail erl\u00e4utern, um Wiederholungen zu vermeiden.<\/p>\n<p><b>Lange Analysezeiten. <\/b>Wenn von der Commits bis zur Production 30 Minuten f\u00fcr alle Tests und den Build ben\u00f6tigt werden, wird die \u00dcberpr\u00fcfung der Informationssicherheit einen Tag in Anspruch nehmen. Niemand m\u00f6chte den Prozess dadurch verlangsamen. Ber\u00fccksichtigen Sie dieses Merkmal und ziehen Sie Ihre Schl\u00fcsse.<\/p>\n<p><b>Hoher Anteil an False Negatives oder False Positives. <\/b>Alle Produkte sind unterschiedlich, alle verwenden unterschiedliche Frameworks und ihren eigenen Schreibstil. Je nach Codebasis und Technologien k\u00f6nnen die Werkzeuge unterschiedliche Werte f\u00fcr False Negatives und False Positives anzeigen. Daher sollten Sie darauf achten, was genau in\u00a0<b>Ihrem<\/b> Unternehmen und f\u00fcr <b>Ihre<\/b> Anwendungen werden gute und zuverl\u00e4ssige Ergebnisse zeigen.<\/p>\n<p><b>Keine Integrationen mit bestehenden Tools.<\/b>. Betrachten Sie Tools aus der Perspektive der Integrationen mit dem, was Sie bereits verwenden. Wenn Sie beispielsweise Jenkins oder TeamCity haben, \u00fcberpr\u00fcfen Sie die Integration der Tools genau mit dieser Software und nicht mit GitLab CI, das Sie nicht verwenden.<\/p>\n<p><b>Fehlende oder \u00fcberm\u00e4\u00dfig komplexe Anpassungsm\u00f6glichkeiten. <\/b>Wenn das Tool keine API hat, wozu ist es dann gut? Alles, was im Interface m\u00f6glich ist, sollte auch \u00fcber die API zug\u00e4nglich sein. Idealerweise sollte das Tool die M\u00f6glichkeit zur Anpassung von Pr\u00fcfungen bieten.<\/p>\n<p><b>Kein Entwicklungs-Roadmap f\u00fcr das Produkt. <\/b>Die Entwicklung steht nicht still; wir nutzen st\u00e4ndig neue Frameworks und Funktionen, \u00fcberarbeiten alten Code in neue Programmiersprachen. Wir m\u00f6chten sicherstellen, dass das Tool, das wir kaufen, neue Frameworks und Technologien unterst\u00fctzt. Daher ist es wichtig zu wissen, dass das Produkt einen echten und klaren <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%B4%D0%BE%D1%80%D0%BE%D0%B6%D0%BD%D0%B0%D1%8F_%D0%BA%D0%B0%D1%80%D1%82%D0%B0\">Roadmap<\/a><\/noindex> der Entwicklung hat.<\/p>\n<h3>Besonderheiten des Prozesses.<\/h3>\n<p>\nBer\u00fccksichtigen Sie neben den Funktionen der Werkzeuge auch die Besonderheiten des Entwicklungsprozesses. Ein typischer Fehler ist, die Entwicklung zu st\u00f6ren. Lassen Sie uns betrachten, welche weiteren Besonderheiten zu beachten sind und worauf das Sicherheitsteam achten sollte.<\/p>\n<p>Um Termine f\u00fcr Entwicklung und Release nicht zu gef\u00e4hrden, erstellen Sie <b>verschiedene Regeln<\/b> und verschiedene <b>Showstoppers\u00a0<\/b>\u2014 Kriterien, die den Prozess der Zusammenstellung bei Vorhandensein von Schwachstellen stoppen \u2014 <b>f\u00fcr verschiedene Umgebungen.<\/b>Zum Beispiel verstehen wir, dass der aktuelle Branch in die Entwicklungsumgebung oder UAT geht, daher stoppen wir nicht und sagen nicht:<\/p>\n<p><i>\u2014 Sie haben hier Schwachstellen, Sie kommen nicht weiter!<\/i><\/p>\n<p>An dieser Stelle ist es wichtig, den Entwicklern zu sagen, dass es Sicherheitsprobleme gibt, auf die sie achten sollten.<\/p>\n<p><b>Das Vorhandensein von Schwachstellen ist kein Hindernis f\u00fcr weitere Tests<\/b>: ob manuelle, Integration oder manuelle Tests. Auf der anderen Seite m\u00fcssen wir die Sicherheit des Produkts irgendwie erh\u00f6hen, und wir m\u00f6chten nicht, dass die Entwickler ignorieren, was die Sicherheitsteams finden. Daher gehen wir manchmal folgenderma\u00dfen vor: Wenn auf dem Stand, wenn wir in die Entwicklungsumgebung ausrollen, benachrichtigen wir einfach die Entwicklung:<\/p>\n<p><i>\u2014\u00a0Bitte, falls Sie Probleme haben, achten Sie darauf.<\/i><\/p>\n<p>In der UAT-Phase zeigen wir wieder Warnungen zu Sicherheitsanf\u00e4lligkeiten, und in der Produktionsphase sagen wir:<\/p>\n<p><i>\u2014\u00a0Wir haben Sie bereits mehrmals gewarnt, Sie haben nichts unternommen \u2013 damit werden wir Sie nicht freigeben.<\/i><\/p>\n<p>Wenn es um Code und Dynamik geht, sollten wir nur \u00fcber Sicherheitsanf\u00e4lligkeiten der Funktionen und des Codes informieren, die gerade in dieser Funktion geschrieben wurden. Wenn ein Entwickler einen Button um 3 Pixel verschoben hat und wir ihm mitteilen, dass er eine SQL-Injektion hat, die dringend behoben werden muss \u2013 das ist nicht richtig. Schauen Sie sich nur an, was jetzt geschrieben wurde, und die \u00c4nderungen, die in die Anwendung kommen.<\/p>\n<p>Nehmen wir an, wir haben einen funktionalen Defekt \u2013 etwas, das die Anwendung nicht korrekt macht: Geld wird nicht \u00fcberwiesen, beim Klicken auf einen Button wird nicht zur n\u00e4chsten Seite navigiert oder das Produkt wird nicht geladen. <b>Sicherheitsdefekte<\/b>\u00a0\u2013 sind ebenso Defekte, jedoch nicht im Hinblick auf die Funktion der Anwendung, sondern auf die Sicherheit. <\/p>\n<blockquote><p>Nicht alle Probleme der Softwarequalit\u00e4t sind Sicherheitsprobleme. Aber alle Sicherheitsprobleme h\u00e4ngen mit der Softwarequalit\u00e4t zusammen. Sherif Mansour, Expedia.<\/p><\/blockquote>\n<p>\nDa alle Sicherheitsl\u00fccken ebenso wie andere Fehler betrachtet werden, sollten sie dort sein, wo auch alle Entwicklungsfehler zu finden sind. Vergessen Sie also Berichte und gruselige PDFs, die niemand liest.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/e54e64658a3882bdc68a48c6ef426746.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAls ich f\u00fcr ein Softwareentwicklungsunternehmen t\u00e4tig war, erhielt ich einen Bericht von den statischen Analysetools. Ich \u00f6ffnete ihn, war entsetzt, machte mir einen Kaffee, bl\u00e4tterte durch 350 Seiten, schloss ihn und machte mit meiner Arbeit weiter. <b>Umfangreiche Berichte sind tote Berichte.<\/b>Normalerweise verschwinden sie irgendwo, E-Mails werden gel\u00f6scht, vergessen, verlieren sich oder das Unternehmen sagt, es akzeptiere die Risiken.<\/p>\n<p>Was tun? Die best\u00e4tigten Fehler, die gefunden wurden, wandeln wir einfach in ein entwicklerfreundliches Format um, indem wir sie zum Beispiel in den Backlog in Jira einf\u00fcgen. Wir priorisieren die Fehler und beheben sie der Rangfolge nach, ebenso wie funktionale Fehler und Testfehler.<\/p>\n<h2>Statische Analyse \u2013 SAST<\/h2>\n<p>\n<b>Dies ist eine Analyse des Codes auf Sicherheitsanf\u00e4lligkeiten<\/b>, aber es ist nicht dasselbe wie SonarQube. Wir \u00fcberpr\u00fcfen nicht nur anhand von Mustern oder Stilen. Bei der Analyse kommen verschiedene Ans\u00e4tze zur Anwendung: anhand des Schwachstellenschemas, basierend auf\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85\">DataFlow<\/a><\/noindex>, sowie durch die Analyse von Konfigurationsdateien. Dies betrifft alles, was direkt mit dem Code zu tun hat.<\/p>\n<p><b>Vorteile des Ansatzes<\/b>: <b>Identifikation von Schwachstellen im Code in einer fr\u00fchen Entwicklungsphase<\/b>, wenn es noch keine St\u00e4nde und kein fertiges Tool gibt, und<b>\u00a0die M\u00f6glichkeit des inkrementellen Scannens<\/b>: Scannen des Codeabschnitts, der sich ge\u00e4ndert hat, und nur der Funktion, an der wir gerade arbeiten, was die Scandauer verk\u00fcrzt.<\/p>\n<p><b>Nachteile<\/b>\u00a0\u2014 es fehlt die Unterst\u00fctzung f\u00fcr die erforderlichen Programmiersprachen.<\/p>\n<p><b>Notwendige Integrationen, <\/b>die meiner subjektiven Meinung nach in den Tools vorhanden sein sollten:<\/p>\n<ul>\n<li>Integrationswerkzeuge: Jenkins, TeamCity und Gitlab CI.\n<\/li>\n<li>Entwicklungsumgebung: IntelliJ IDEA, Visual Studio. Es ist f\u00fcr den Entwickler bequemer, nicht in eine unverst\u00e4ndliche Oberfl\u00e4che, die zus\u00e4tzlich zu merken ist, zu navigieren, sondern direkt an seinem Arbeitsplatz in seiner eigenen Entwicklungsumgebung alle notwendigen Integrationen und die gefundenen Schwachstellen zu sehen.\n<\/li>\n<li>Code-Review: SonarQube und manuelle \u00dcberpr\u00fcfung.\n<\/li>\n<li>Fehlerverfolgungssysteme: Jira und Bugzilla.\n<\/li>\n<\/ul>\n<p>\nAuf dem Bild sind einige der besten Vertreter der statischen Analyse zu sehen.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/bab3420874ac090d4d107edb0d2b857b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWichtig sind nicht die Werkzeuge, sondern der Prozess, daher gibt es Open-Source-L\u00f6sungen, die ebenfalls gut geeignet sind, um den Prozess zu erproben.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/4f2c278922c291b15922bc5748f87dc3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSAST Open Source wird zwar nicht eine Vielzahl von Schwachstellen oder komplexe Datenfl\u00fcsse finden, aber bei der Entwicklung des Prozesses k\u00f6nnen sie sinnvoll eingesetzt werden. Sie helfen zu verstehen, wie der Prozess aufgebaut wird, wer f\u00fcr Bugs verantwortlich ist, wer sie meldet und wer dar\u00fcber Bericht erstattet. Wenn Sie den ersten Schritt zur Sicherstellung der Sicherheit Ihres Codes gehen m\u00f6chten, nutzen Sie Open Source L\u00f6sungen.<\/p>\n<p>Wie l\u00e4sst sich das integrieren, wenn Sie am Anfang stehen und nichts haben: kein CI, keinen Jenkins, kein TeamCity? Lassen Sie uns die Integrationen in den Prozess betrachten.<\/p>\n<h3>Integration auf CVS-Ebene<\/h3>\n<p>\nWenn Sie Bitbucket oder GitLab haben, kann eine Integration auf dieser Ebene erfolgen. <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/CVS\">Concurrent Versions System<\/a><\/noindex>.<\/p>\n<p><b>Nach Ereignis<\/b>\u00a0\u2013 Pull-Request, Commit. Sie scannen den Code und zeigen im Build-Status an, ob der Sicherheitstest bestanden wurde oder nicht.<\/p>\n<p><b>Feedback. <\/b>Nat\u00fcrlich ist Feedback immer notwendig. Wenn Sie lediglich etwas im Bereich Sicherheit durchgef\u00fchrt haben, es in eine Box gelegt und niemandem davon erz\u00e4hlt haben, und dann am Ende des Monats eine Menge Bugs auftauchen, ist das nicht richtig und auch nicht gut.<\/p>\n<h3>Integration mit dem Code-Review-System<\/h3>\n<p>\nEinmal haben wir in einer Reihe wichtiger Projekte den technischen Benutzer AppSec als standardm\u00e4\u00dfigen Reviewer eingesetzt. Je nachdem, ob Fehler im neuen Code entdeckt werden oder nicht, setzt der Reviewer im Pull-Request den Status auf \"akzeptiert\" oder \"muss \u00fcberarbeitet werden\" \u2013 entweder alles in Ordnung oder es muss nachgebessert werden mit Hinweisen, was genau verbessert werden sollte. F\u00fcr die Integration mit der Version, die in Produktion geht, haben wir das Merge-Verbot aktiviert, wenn der Sicherheitstest nicht bestanden ist. Dies haben wir in das manuelle Code-Review eingebaut, und die anderen Teilnehmer des Prozesses konnten die Sicherheitsstatus f\u00fcr diesen spezifischen Prozess einsehen.<\/p>\n<h3>Integration mit SonarQube<\/h3>\n<p>\nViele haben <noindex><a rel=\"nofollow\" href=\"https:\/\/de.wikipedia.org\/wiki\/Quality_Gate\">Qualit\u00e4tsschwellen<\/a><\/noindex> f\u00fcr die Qualit\u00e4t des Codes. Hier ist es dasselbe \u2013 man kann die gleichen Schwellen nur f\u00fcr SAST-Tools erstellen. Es wird die gleiche Schnittstelle sein, die gleiche Qualit\u00e4tsschwelle, nur wird sie <b>Sicherheitsschwelle<\/b>genannt. Und wenn Sie einen Prozess mit SonarQube eingerichtet haben, k\u00f6nnen Sie alles ganz einfach integrieren.<\/p>\n<h3>Integration auf CI-Ebene<\/h3>\n<p>\nHier ist auch alles recht einfach:<\/p>\n<ul>\n<li><b>Auf derselben Ebene wie die automatisierten Tests<\/b>, Unit-Tests.\n<\/li>\n<li><b>Aufteilung nach Entwicklungsphasen<\/b>: dev, test, prod. Verschiedene Regelsets oder unterschiedliche Fehlermeldungen k\u00f6nnen aktiviert werden: Wir stoppen den Build oder wir stoppen ihn nicht.\n<\/li>\n<li><b>Synchroner\/Asynchroner Start<\/b>. Wir warten auf den Abschluss der Sicherheits\u00fcberpr\u00fcfungen oder wir warten nicht. Das hei\u00dft, wir haben sie einfach gestartet und machen weiter, und sp\u00e4ter erhalten wir den Status, dass alles gut oder schlecht ist.\n<\/li>\n<\/ul>\n<p>\nDas alles ist in einer idealen, rosaroten Welt. In der realen Welt gibt es das nicht, aber wir streben danach. Das Ergebnis der Sicherheits\u00fcberpr\u00fcfungen sollte mit den Ergebnissen der Unit-Tests vergleichbar sein.<\/p>\n<p>Zum Beispiel haben wir ein gro\u00dfes Projekt genommen und entschieden, dass wir es jetzt mit SAST scannen werden \u2013 in Ordnung. Wir haben dieses Projekt in SAST geladen und es hat uns 20.000 Schwachstellen ausgegeben, und durch eine willentliche Entscheidung haben wir angenommen, dass alles gut ist. 20.000 Schwachstellen sind unsere technische Schuld. Diese Schuld stecken wir in eine Box, und wir werden sie nach und nach abarbeiten und Bugs in die Fehlerverfolgung einpflegen. Wir stellen eine Firma ein, machen alles selbst oder bekommen Unterst\u00fctzung von Security Champions \u2013 und die technische Schuld wird abnehmen.<\/p>\n<p>Alle neu auftretenden Schwachstellen im neuen Code m\u00fcssen ebenso behoben werden wie Fehler in Unit- oder Autotests. Wenn die Build l\u00e4uft, werden zwei Tests und zwei Sicherheitstests durchgef\u00fchrt. In Ordnung \u2013 wir schauen uns an, was passiert ist, korrigieren das eine und das andere, beim n\u00e4chsten Mal l\u00e4uft alles gut, keine neuen Schwachstellen und alle Tests bestehen. Wenn die Aufgabe komplexer ist und eine tiefere Analyse erfordert, oder wenn die Behebung von Schwachstellen gro\u00dfe Teile des zugrundeliegenden Systems betrifft, wird ein Bug im Fehlertracker erstellt, priorisiert und behoben. Leider ist die Welt nicht perfekt und Tests fallen manchmal aus.<\/p>\n<p>Beispiel f\u00fcr ein Security Gate \u2013 analog zum Quality Gate, basierend auf der Anzahl und Art der Schwachstellen im Code.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/eb30d3c7988b28c2cb25e9656871ec96.png\" style=\"display:block;margin: 0 auto;\" \/>Integration mit SonarQube \u2013 das Plugin wird installiert, alles ist sehr praktisch und funktioniert hervorragend.<\/p>\n<h3>Integration mit der Entwicklungsumgebung<\/h3>\n<p>\n<b>Integrationsm\u00f6glichkeiten:<\/b><\/p>\n<ul>\n<li>Start des Scanvorgangs aus der Entwicklungsumgebung noch vor dem Commit.\n<\/li>\n<li>\u00dcberpr\u00fcfung der Ergebnisse.\n<\/li>\n<li>Analyse der Ergebnisse.\n<\/li>\n<li>Synchronisation mit dem Server.\n<\/li>\n<\/ul>\n<p>\nSo sieht die Ergebniserfassung vom Server aus.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/270d4af76fddc0ceebca908c7d3835b8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn unserer Entwicklungsumgebung <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/idea\/\">Intellij IDEA<\/a><\/noindex> Es wird einfach ein zus\u00e4tzlicher Punkt angezeigt, der mitteilt, dass w\u00e4hrend des Scannens bestimmte Schwachstellen gefunden wurden. Man kann sofort den Code korrigieren, Empfehlungen einsehen und\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_graph\">Flow Graph<\/a><\/noindex>. All dies ist am Arbeitsplatz des Entwicklers angeordnet, was sehr praktisch ist \u2013 man muss nicht durch andere Links navigieren und etwas zus\u00e4tzlich \u00fcberpr\u00fcfen.<\/p>\n<h2>Open Source<\/h2>\n<p>\nDas ist mein Lieblingsthema. Alle nutzen Open-Source-Bibliotheken \u2013 warum sollte man eine Menge von Hacks und selbstgebauten L\u00f6sungen schreiben, wenn man eine fertige Bibliothek verwenden kann, in der alles bereits umgesetzt ist?<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/05b9cd5a8b269af2a3f59931a0774778.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNat\u00fcrlich ist das so, aber Bibliotheken werden auch von Menschen geschrieben, enthalten bestimmte Risiken und haben ebenfalls Schwachstellen, \u00fcber die gelegentlich oder st\u00e4ndig berichtet wird. Daher gibt es den n\u00e4chsten Schritt in der Anwendungssicherheit \u2013 die Analyse von Open-Source-Komponenten.<\/p>\n<h3>Open Source Analyse \u2013 OSA<\/h3>\n<p>\nDas Tool umfasst drei gro\u00dfe Phasen.<\/p>\n<p><b>Suche nach Schwachstellen in den Bibliotheken. <\/b>Zum Beispiel wei\u00df das Tool, dass wir eine bestimmte Bibliothek verwenden und dass in\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Common_Vulnerabilities_and_Exposures\">CVE<\/a><\/noindex> Oder es gibt in Bugtrackern irgendwelche Schwachstellen, die zu dieser Version der Bibliothek geh\u00f6ren. Bei dem Versuch, sie zu verwenden, gibt das Tool eine Warnung aus, dass die Bibliothek anf\u00e4llig ist, und empfiehlt, eine andere Version zu verwenden, in der keine Schwachstellen vorhanden sind.<\/p>\n<p><b>Analyse der Lizenzkonformit\u00e4t. <\/b>Bei uns ist das bisher nicht besonders popul\u00e4r, aber wenn Sie mit dem Ausland arbeiten, kann es dort gelegentlich zu Problemen kommen, wenn Sie Komponenten mit offenem Quellcode verwenden, die Sie nicht nutzen oder modifizieren d\u00fcrfen. Gem\u00e4\u00df der Lizenzpolitik der Bibliothek d\u00fcrfen wir das nicht tun. Oder, wenn wir sie modifiziert haben und verwenden, m\u00fcssen wir unseren Code ver\u00f6ffentlichen. Nat\u00fcrlich m\u00f6chte niemand den Code seiner Produkte ver\u00f6ffentlichen, aber es gibt M\u00f6glichkeiten, sich auch davor zu sch\u00fctzen.<\/p>\n<p><b>Analyse von Komponenten, die in der Industrie genutzt werden. <\/b>Stellen Sie sich vor, wir haben endlich die Entwicklung abgeschlossen und die letzte Version unseres Mikrodienstes produktiv ver\u00f6ffentlicht. Er l\u00e4uft dort hervorragend \u2013 eine Woche, einen Monat, ein Jahr. Wir f\u00fchren keine Zusammenf\u00fchrungen durch, keine Sicherheitspr\u00fcfungen, scheinbar ist alles gut. Doch pl\u00f6tzlich, zwei Wochen nach der Ver\u00f6ffentlichung, tritt eine kritische Schwachstelle in der Open-Source-Komponente auf, die wir genau in dieser Version in der Produktionsumgebung verwenden. Wenn wir nicht dokumentieren, was und wo wir verwenden, werden wir diese Schwachstelle einfach nicht bemerken. Einige Tools bieten die M\u00f6glichkeit, Schwachstellen in den Bibliotheken zu \u00fcberwachen, die derzeit in der Produktion genutzt werden. Das ist sehr n\u00fctzlich.<\/p>\n<p><b>M\u00f6glichkeiten:<\/b><\/p>\n<ul>\n<li>Verschiedene Richtlinien f\u00fcr verschiedene Entwicklungsphasen.\n<\/li>\n<li>\u00dcberwachung von Komponenten in der Produktionsumgebung.\n<\/li>\n<li>Kontrolle von Bibliotheken im Unternehmensnetzwerk.\n<\/li>\n<li>Unterst\u00fctzung verschiedener Build-Systeme und Programmiersprachen.\n<\/li>\n<li>Analyse von Docker-Images.\n<\/li>\n<\/ul>\n<p>\nEinige Beispiele f\u00fcr f\u00fchrende Unternehmen, die Open-Source-Analyse betreiben.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/f1b05f86beb4a64f9bf3443963e3603b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDer einzige kostenlose unter ihnen ist <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/OWASP_Dependency_Check\">Dependency-Check<\/a><\/noindex> von OWASP. Es kann in den fr\u00fchen Phasen aktiviert werden, um zu sehen, wie es funktioniert und was es unterst\u00fctzt. Grunds\u00e4tzlich handelt es sich um Cloud-Produkte oder On-Premise-L\u00f6sungen, aber selbst mit ihrer Basis werden sie dennoch ins Internet gesendet. Sie senden nicht Ihre Bibliotheken, sondern Hashes oder eigene Werte, die berechnet werden, sowie Fingerabdr\u00fccke an ihren Server, um Informationen \u00fcber vorhandene Sicherheitsl\u00fccken zu erhalten.<\/p>\n<h3>Integration in den Prozess<\/h3>\n<p>\n<b>Kontrolle der Bibliotheken im Perimeter<\/b>, die aus externen Quellen heruntergeladen werden. Wir haben externe und interne Repositories. Zum Beispiel l\u00e4uft innerhalb von Event Central Nexus, und wir m\u00f6chten sicherstellen, dass innerhalb unseres Repositories keine Sicherheitsl\u00fccken mit dem Status 'kritisch' oder 'hoch' vorhanden sind. Es ist m\u00f6glich, das Proxieren mithilfe des Nexus Firewall Lifecycle-Tools so einzurichten, dass solche Sicherheitsl\u00fccken blockiert und nicht ins interne Repository gelangen.<\/p>\n<p><b>Integration in CI<\/b>. Auf der gleichen Ebene wie Auto-Tests, Unit-Tests und Phasentrennung: dev, test, prod. In jeder Phase k\u00f6nnen beliebige Bibliotheken heruntergeladen und verwendet werden. Wenn jedoch etwas Kritisches mit dem Status \u201ecritical\u201c vorhanden ist, sollten die Entwickler m\u00f6glicherweise darauf achten, bevor es in die Produktion geht.<\/p>\n<p><b>Integration mit Artefakt-Repositorys<\/b>: Nexus und JFrog.<\/p>\n<p><b>Integration in die Entwicklungsumgebung. <\/b>Die Tools, die Sie w\u00e4hlen, sollten eine Integration mit Entwicklungsumgebungen haben. Der Entwickler sollte von seinem Arbeitsplatz aus Zugriff auf die Scannergebnisse haben oder die M\u00f6glichkeit, den Code selbst auf Schwachstellen zu \u00fcberpr\u00fcfen, bevor er ihn in das CVS committet.<\/p>\n<p><b>Integration in CD. <\/b>Das ist eine tolle Funktion, die ich sehr mag und \u00fcber die ich bereits gesprochen habe \u2013 die \u00dcberwachung neuer Schwachstellen in der Produktionsumgebung. So funktioniert es.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/605c638df343db5c47ab36b4dc00f41c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWir haben <b>\u00d6ffentliche Komponenten-Repositorys<\/b>\u00a0\u2014 einige Werkzeuge von au\u00dfen und unser internes Repository. Wir m\u00f6chten, dass dort nur vertrauensw\u00fcrdige Komponenten vorhanden sind. Bei der Proxy-Anfrage \u00fcberpr\u00fcfen wir, dass die heruntergeladene Bibliothek keine Sicherheitsanf\u00e4lligkeiten aufweist. Wenn sie unter bestimmte von uns festgelegte Richtlinien f\u00e4llt, die wir unbedingt mit der Entwicklung abstimmen, wird sie nicht heruntergeladen und es erfolgt eine R\u00fcckmeldung zur Verwendung einer anderen Version. Wenn die Bibliothek also tats\u00e4chlich etwas Kritisches und Schlechtes enth\u00e4lt, erh\u00e4lt der Entwickler bereits beim Installationsschritt nicht die Bibliothek \u2013 er muss eine h\u00f6here oder niedrigere Version verwenden.<\/p>\n<ul>\n<li>Bei jedem Build \u00fcberpr\u00fcfen wir, dass niemand etwas Schlechtes geschmuggelt hat, dass alle Komponenten sicher sind und niemand etwas Gef\u00e4hrliches auf einem USB-Stick mitgebracht hat.\n<\/li>\n<li>In unserem Repository befinden sich nur vertrauensw\u00fcrdige Komponenten. \n<\/li>\n<li>Bei der Bereitstellung pr\u00fcfen wir erneut das Paket: war, jar, DL oder das Docker-Image, ob es den Richtlinien entspricht. \n<\/li>\n<li>Bei der Markteinf\u00fchrung \u00fcberwachen wir, was in der Produktionsumgebung passiert: ob kritische Sicherheitsanf\u00e4lligkeiten auftauchen oder nicht.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Dynamische Analyse \u2013 DAST<\/h2>\n<p>\nDynamische Analysetools unterscheiden sich grundlegend von allem, was zuvor gesagt wurde. Sie simulieren die Benutzerinteraktion mit der Anwendung. Bei einer Webanwendung senden wir Anfragen, die das Handeln eines Nutzers nachahmen, klicken auf Buttons und \u00fcbermitteln fiktive Daten aus einem Formular: Anf\u00fchrungszeichen, Klammern, Zeichen in verschiedenen Kodierungen, um zu beobachten, wie die Anwendung funktioniert und externe Daten verarbeitet.<\/p>\n<p>Das gleiche System erm\u00f6glicht es, g\u00e4ngige Sicherheitsanf\u00e4lligkeiten in Open Source zu \u00fcberpr\u00fcfen. Da DAST nicht wei\u00df, welche Open Source Software wir verwenden, schickt es einfach 'schadhafte' Muster und analysiert die Antworten des Servers:<\/p>\n<p><i>\u2014 Aha, hier gibt es ein Deserialisierungsproblem, hier nicht.<\/i><\/p>\n<p>Das birgt erhebliche Risiken, denn wenn Sie diesen Sicherheitstest auf demselben Stand durchf\u00fchren, mit dem die Tester arbeiten, k\u00f6nnen unangenehme Dinge passieren.<\/p>\n<ul>\n<li>Hohe Belastung der Netzwerkserveranwendung.\n<\/li>\n<li>Keine Integrationen.\n<\/li>\n<li>M\u00f6glichkeit zur Anpassung der Einstellungen der zu analysierenden Anwendung.\n<\/li>\n<li>Keine Unterst\u00fctzung der erforderlichen Technologien.\n<\/li>\n<li>Komplexit\u00e4t der Konfiguration.\n<\/li>\n<\/ul>\n<p>\nWir hatten eine Situation, in der wir endlich AppScan gestartet haben: Wir haben lange um den Zugang zur Anwendung gek\u00e4mpft, drei Konten erhalten und waren begeistert \u2013 endlich konnten wir alles \u00fcberpr\u00fcfen! Wir haben den Scan gestartet und das Erste, was AppScan tat, war, in das Administrationsmen\u00fc zu gehen, alle Schaltfl\u00e4chen zu dr\u00fccken, die h\u00e4lften der Daten zu \u00e4ndern und schlie\u00dflich den Server mit seinen-mailform-Anfragen zu killen. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mailform.io\/\">mailform<\/a><\/noindex>-Anfragen. Die Entwicklung mit dem Testing sagte:<\/p>\n<p><i>\u2013 Leute, macht ihr Witze?! Wir haben euch die Konten gegeben, und ihr habt die Testumgebung kaputtgemacht!<\/i><\/p>\n<p>Ber\u00fccksichtigen Sie m\u00f6gliche Risiken. Idealerweise sollte eine separate Testumgebung f\u00fcr die IT-Sicherheit vorbereitet werden, die zumindest irgendwie vom restlichen Umfeld isoliert ist, und das \u00dcberpr\u00fcfen des Administrators sollte idealerweise manuell erfolgen. Dies ist ein Pen-Test \u2013 die verbleibenden Prozents\u00e4tze an Aufwand, die wir jetzt nicht betrachten. <\/p>\n<p>Es ist zu beachten, dass man dies als eine Art Lasttest verwenden kann. In der ersten Phase kann man den dynamischen Scanner mit 10-15 Threads aktivieren und schauen, was passiert, aber normalerweise, wie die Praxis zeigt, kommt nichts Gutes dabei heraus.<\/p>\n<p>Einige Ressourcen, die wir normalerweise verwenden.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/45a25dbe2a2d053e6ed16d31b6ac53ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs ist erw\u00e4hnenswert <noindex><a rel=\"nofollow\" href=\"https:\/\/portswigger.net\/burp\">Burp Suite<\/a><\/noindex>\u00a0\u2014 ist das \u201eSchweizer Taschenmesser\u201c f\u00fcr jeden Sicherheitsspezialisten. Es wird von allen verwendet und ist sehr benutzerfreundlich. Jetzt ist eine neue Demoversion der Enterprise Edition erschienen. Fr\u00fcher war es nur ein Standalone-Tool mit Plugins, jetzt entwickeln die Entwickler endlich einen gro\u00dfen Server, von dem aus mehrere Agenten verwaltet werden k\u00f6nnen. Das ist gro\u00dfartig, ich empfehle es auszuprobieren.<\/p>\n<h3>Integration in den Prozess<\/h3>\n<p>\nDie Integration funktioniert ausreichend gut und einfach: <b>Start des Scans nach erfolgreicher Installation <\/b>der Anwendung auf dem Stand und\u00a0<b>Scan nach erfolgreichem Abschluss der Integrationstests<\/b>.<\/p>\n<p>Wenn die Integrationen nicht funktionieren oder Platzhalter und Mock-Funktionen vorhanden sind, ist es sinnlos und nutzlos \u2013 egal welches Muster wir senden, der Server wird trotzdem identisch antworten.<\/p>\n<ul>\n<li>Idealerweise ist ein separater Stand f\u00fcr Tests erforderlich.\n<\/li>\n<li>Notieren Sie sich die Anmeldereihenfolge vor Beginn der Tests.\n<\/li>\n<li>Das Testen des Administrationssystems erfolgt ausschlie\u00dflich manuell.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Prozess<\/h2>\n<p>\nEin allgemeiner \u00dcberblick \u00fcber den Prozess und die Funktionsweise jedes einzelnen Werkzeugs. Jedes Tool ist unterschiedlich \u2013 bei dem einen funktioniert die dynamische Analyse besser, beim anderen die statische, bei einem dritten die Open-Source-Analyse, Penetrationstests oder etwas ganz anderes, wie zum Beispiel Ereignisse.\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Waf\">WAF<\/a><\/noindex>.<\/p>\n<blockquote><p>Jeder Prozess ben\u00f6tigt Kontrolle.<\/p><\/blockquote>\n<p>\nUm zu verstehen, wie der Prozess funktioniert und wo Verbesserungen m\u00f6glich sind, m\u00fcssen Metriken aus allen erreichbaren Bereichen gesammelt werden, einschlie\u00dflich Produktionsmetriken, Metriken aus den Werkzeugen und aus Defekt-Trackern.<\/p>\n<p>Jede Art von Daten ist n\u00fctzlich. Man sollte die verschiedenen Perspektiven betrachten, um zu sehen, wo ein bestimmtes Werkzeug am besten eingesetzt wird und wo der Prozess konkret schw\u00e4chelt. Vielleicht sollte man auch die Reaktionszeit der Entwicklung betrachten, um herauszufinden, wo der Prozess zeitlich optimiert werden kann. Je mehr Daten vorhanden sind, desto mehr Perspektiven k\u00f6nnen von oberen Ebenen bis zu den Details jedes Prozesses aufgebaut werden.<\/p>\n<p><img decoding=\"async\" alt=\"Angst und Hass in DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/93e079b19c4c8189ce6ca4eaec186eed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDa alle statischen und dynamischen Analysatoren ihre eigenen APIs, ihre eigenen Ausf\u00fchrungsarten und Prinzipien haben \u2013 einige haben Scheduler, andere nicht \u2013 erstellen wir ein Tool. <b>AppSec Orchestrator<\/b>, die einen einheitlichen Zugang zu allen Prozessen erm\u00f6glicht und die Verwaltung von einem einzigen Punkt aus erlaubt.<\/p>\n<p>F\u00fcr Manager, Entwickler und Sicherheitsingenieure gibt es einen zentralen Zugang, von dem aus sie sehen k\u00f6nnen, was l\u00e4uft, Einstellungen vornehmen und Scans starten, die Scan-Ergebnisse abrufen und Anforderungen einreichen k\u00f6nnen. Wir versuchen, von Papierkram wegzukommen und alles in ein verst\u00e4ndliches Format zu \u00fcbertragen, das die Entwicklung nutzt \u2013 Seiten auf Confluence mit Status und Metriken, Defekte in Jira oder in verschiedenen Fehlerverfolgungssystemen, oder durch Integration in den synchronen\/asynchronen Prozess im CI\/CD.<\/p>\n<h2>Wichtige Erkenntnisse<\/h2>\n<p>\n<b>Werkzeuge sind nicht alles.<\/b> Zuerst den Prozess durchdenken \u2013 dann die Werkzeuge implementieren. Werkzeuge sind n\u00fctzlich, aber teuer, daher kann man mit dem Prozess beginnen und die Interaktion und das Verst\u00e4ndnis zwischen Entwicklung und Sicherheit einrichten. Aus Sicht der Sicherheit ist es nicht notwendig, alles zu stoppen; aus Sicht der Entwicklung muss, wenn etwas hochgradig kritisch ist, es behoben werden, anstatt die Augen vor dem Problem zu schlie\u00dfen.<\/p>\n<p><b>Produktqualit\u00e4t<\/b>\u00a0<b>ist das gemeinsame Ziel.<\/b> Wir konzentrieren uns sowohl auf Sicherheit als auch auf Entwicklung. Wir setzen alles daran, dass alles reibungslos funktioniert und es keine Reputationsrisiken oder finanziellen Verluste gibt. Deshalb f\u00f6rdern wir den Ansatz von DevSecOps und SecDevOps, um die Kommunikation zu verbessern und das Produkt qualitativ hochwertiger zu gestalten.<\/p>\n<p><b>Starten Sie mit dem, was bereits vorhanden ist<\/b>: Anforderungen, Architektur, Teilpr\u00fcfungen, Schulungen, Richtlinien. Es ist nicht notwendig, sofort alle Praktiken auf alle Projekte anzuwenden \u2013 <b>bewegen Sie sich iterativ<\/b>. Es gibt keinen einheitlichen Standard \u2013 <b>experimentieren Sie<\/b> und probieren Sie verschiedene Ans\u00e4tze und L\u00f6sungen aus.<\/p>\n<p><b>Zwischen Sicherheitsdefekten und funktionalen Defekten besteht ein Gleichheitszeichen.<\/b>.<\/p>\n<p><b>Automatisieren Sie alles<\/b>, was sich bewegt. Alles, was sich nicht bewegt \u2013 machen Sie es beweglich und automatisieren Sie es. Wenn etwas manuell erledigt wird, ist das kein guter Abschnitt des Prozesses. Vielleicht sollten Sie es \u00fcberdenken und auch automatisieren.<\/p>\n<p>Wenn die Gr\u00f6\u00dfe des Sicherheitsteams klein ist \u2013 <b>nutzen Sie Security Champions.<\/b>.<\/p>\n<p>Vielleicht ist das, was ich beschrieben habe, nicht f\u00fcr Sie geeignet und Sie erfinden etwas Eigenes \u2013 und das ist gut. Aber\u00a0<b>w\u00e4hlen Sie die Werkzeuge basierend auf den Anforderungen Ihres Prozesses.<\/b>. Lassen Sie sich nicht von der Community beeinflussen, die sagt, dass dieses Tool schlecht und jenes gut ist. M\u00f6glicherweise sehen Sie in Ihrem Produkt alles anders herum.<\/p>\n<p><b>Anforderungen an Tools.<\/b><\/p>\n<ul>\n<li>Niedriges Niveau von False Positives.\n<\/li>\n<li>Angemessene Analysezeit.\n<\/li>\n<li>Benutzerfreundlichkeit.\n<\/li>\n<li>Verf\u00fcgbarkeit von Integrationen.\n<\/li>\n<li>Verst\u00e4ndnis des Produktentwicklungs-Roadmaps.\n<\/li>\n<li>M\u00f6glichkeiten zur Anpassung von Tools.\n<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p>Yuri's Vortrag wurde als einer der besten auf der DevOpsConf 2018 ausgew\u00e4hlt. Um noch mehr interessante Ideen und praktische Fallstudien kennenzulernen, kommen Sie am 27. und 28. Mai nach Skolkovo zu\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow-rit\/2019\">DevOpsConf<\/a><\/noindex> im Rahmen von <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2019\">dem RIT++ Festival<\/a><\/noindex>. Noch besser, wenn Sie bereit sind, Ihre Erfahrungen zu teilen, dann <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-rit\">reichen Sie Ihre Anmeldung ein<\/a><\/noindex> f\u00fcr den Vortrag bis zum 21. April.<\/p><\/blockquote>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/448488\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u00a0\u043d\u0430\u0441 \u0431\u044b\u043b\u043e 2\u00a0\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, 4\u00a0\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u0438\u00a0250\u00a0\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u041d\u0435\u00a0\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u00a0\u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043d\u043e\u00a0\u0440\u0430\u0437 \u043d\u0430\u0447\u0430\u043b \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c DevSecOps, \u0442\u043e \u043d\u0430\u0434\u043e\u00a0\u0438\u0434\u0438 \u0434\u043e\u00a0\u043a\u043e\u043d\u0446\u0430. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a. \u0410\u0432\u0442\u043e\u0440\u044b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439: \u0414\u0436\u0430\u0441\u0442\u0438\u043d \u0420\u043e\u0439\u043b\u0430\u043d\u0434 \u0438\u00a0\u0414\u044d\u043d \u0425\u0430\u0440\u043c\u043e\u043d. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 SecDevOps? \u0410\u00a0DevSecOps? \u0412\u00a0\u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u044f? Application Security\u00a0\u2014 \u043e\u00a0\u0447\u0451\u043c \u044d\u0442\u043e? \u041f\u043e\u0447\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442? \u041d\u0430\u00a0\u0432\u0441\u0435 \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0437\u043d\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442 \u042e\u0440\u0438\u0439 \u0428\u0430\u0431\u0430\u043b\u0438\u043d [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23720,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31852","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0423 \u043d\u0430\u0441 \u0431\u044b\u043b\u043e 2 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, 4 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u0438 250 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u041d\u0435 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043d\u043e \u0440\u0430\u0437 \u043d\u0430\u0447\u0430\u043b \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c DevSecOps, \u0442\u043e \u043d\u0430\u0434\u043e \u0438\u0434\u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a. \u0410\u0432\u0442\u043e\u0440\u044b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439: \u0414\u0436\u0430\u0441\u0442\u0438\u043d \u0420\u043e\u0439\u043b\u0430\u043d\u0434 \u0438 \u0414\u044d\u043d \u0425\u0430\u0440\u043c\u043e\u043d. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 SecDevOps? \u0410 DevSecOps? \u0412 \u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u044f? Application Security \u2014 \u043e \u0447\u0451\u043c \u044d\u0442\u043e? \u041f\u043e\u0447\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442? \u041d\u0430 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0437\u043d\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442 \u042e\u0440\u0438\u0439 \u0428\u0430\u0431\u0430\u043b\u0438\u043d\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/strah-i-nenavist-devsecops\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0442\u0440\u0430\u0445 \u0438 \u043d\u0435\u043d\u0430\u0432\u0438\u0441\u0442\u044c DevSecOps | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423 \u043d\u0430\u0441 \u0431\u044b\u043b\u043e 2 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, 4 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u0438 250 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u041d\u0435 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043d\u043e \u0440\u0430\u0437 \u043d\u0430\u0447\u0430\u043b \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c DevSecOps, \u0442\u043e \u043d\u0430\u0434\u043e \u0438\u0434\u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a. \u0410\u0432\u0442\u043e\u0440\u044b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439: \u0414\u0436\u0430\u0441\u0442\u0438\u043d \u0420\u043e\u0439\u043b\u0430\u043d\u0434 \u0438 \u0414\u044d\u043d \u0425\u0430\u0440\u043c\u043e\u043d. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 SecDevOps? \u0410 DevSecOps? \u0412 \u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u044f? Application Security \u2014 \u043e \u0447\u0451\u043c \u044d\u0442\u043e? \u041f\u043e\u0447\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442? \u041d\u0430 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0437\u043d\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442 \u042e\u0440\u0438\u0439 \u0428\u0430\u0431\u0430\u043b\u0438\u043d\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/strah-i-nenavist-devsecops\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:43:30+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:43:30+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Angst und Hass auf DevSecOps | ProHoster","description":"Wir hatten 2 Code-Analysetools, 4 Werkzeuge f\u00fcr dynamisches Testen, eigene Bastelarbeiten und 250 Skripte. Es w\u00e4re nicht unbedingt notwendig gewesen, das alles im aktuellen Prozess zu verwenden, aber wenn ich einmal angefangen habe, DevSecOps zu implementieren, dann sollte ich es auch konsequent umsetzen. Quelle. Autoren der Charaktere: Justin Roiland und Dan Harmon. Was ist SecDevOps? Und DevSecOps? Was sind die Unterschiede? Anwendungsicherheit \u2013 worum geht es dabei? Warum funktioniert der klassische Ansatz nicht mehr? Auf all diese Fragen hat Jurij Schabalin die Antworten.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/strah-i-nenavist-devsecops","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0442\u0440\u0430\u0445 \u0438 \u043d\u0435\u043d\u0430\u0432\u0438\u0441\u0442\u044c DevSecOps | ProHoster","og:description":"\u0423 \u043d\u0430\u0441 \u0431\u044b\u043b\u043e 2 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, 4 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u0438 250 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u041d\u0435 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043d\u043e \u0440\u0430\u0437 \u043d\u0430\u0447\u0430\u043b \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c DevSecOps, \u0442\u043e \u043d\u0430\u0434\u043e \u0438\u0434\u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a. \u0410\u0432\u0442\u043e\u0440\u044b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439: \u0414\u0436\u0430\u0441\u0442\u0438\u043d \u0420\u043e\u0439\u043b\u0430\u043d\u0434 \u0438 \u0414\u044d\u043d \u0425\u0430\u0440\u043c\u043e\u043d. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 SecDevOps? \u0410 DevSecOps? \u0412 \u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u044f? Application Security \u2014 \u043e \u0447\u0451\u043c \u044d\u0442\u043e? \u041f\u043e\u0447\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442? \u041d\u0430 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0437\u043d\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442 \u042e\u0440\u0438\u0439 \u0428\u0430\u0431\u0430\u043b\u0438\u043d","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/strah-i-nenavist-devsecops","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:43:30+00:00","article:modified_time":"2019-10-31T18:43:30+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31852","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 08:08:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:50:34","updated":"2026-01-21 08:08:20"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/31852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=31852"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/31852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/23720"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=31852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=31852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=31852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}