{"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. Es ist nicht so, dass das alles im aktuellen Prozess erforderlich war, aber wenn man erst einmal angefangen hat, DevSecOps einzuf\u00fchren, muss man bis zum Ende gehen.<\/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 Sch\u00f6pfer der Charaktere: Justin Roiland und Dan Harmon.<\/i><\/p>\n<p>Was ist SecDevOps? Und DevSecOps? Was sind die Unterschiede? Application Security \u2013 worum geht es dabei? Warum funktioniert der klassische Ansatz nicht mehr? Auf all diese Fragen wei\u00df <b>Yuri Shabalin<\/b> aus\u00a0<b>Swordfish Security. <\/b>Yuri wird ausf\u00fchrlich auf alles eingehen und die Herausforderungen des \u00dcbergangs von einem klassischen Modell der Application Security zu dem Prozess DevSecOps untersuchen: Wie man den Prozess der sicheren Softwareentwicklung richtig in den DevOps-Prozess integriert, ohne dabei etwas zu kaputtzumachen, wie man die Hauptphasen der Sicherheitstestung durchl\u00e4uft, welche Werkzeuge anwendbar sind, wie sie sich unterscheiden und wie man sie richtig konfiguriert, 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>Yuri Shabalin ist <\/b>Chief Security Architect bei der <b>Swordfish Security<\/b>. Er ist verantwortlich f\u00fcr die Einf\u00fchrung von SSDL und die allgemeine Integration von Analysetools f\u00fcr Anwendungen in ein einheitliches Entwicklungs- und Test\u00f6kosystem. 7 Jahre Erfahrung in der Informationssicherheit. Er hat bei Alfa-Bank, Sberbank und bei Positive Technologies gearbeitet, die Software entwickelt und Dienstleistungen anbietet. Sprecher auf internationalen Konferenzen wie ZerONights, PHDays, RISSPA, OWASP.<\/p>\n<h2>Application Security: worum geht es dabei?<\/h2>\n<p>\n<b>Application Security<\/b>\u00a0ist ein Bereich der Sicherheit, der f\u00fcr die Sicherheit von Anwendungen verantwortlich ist. Es bezieht sich nicht auf Infrastruktur oder Netzwerksicherheit, sondern speziell auf das, was wir schreiben und woran Entwickler arbeiten \u2013 es geht um die Schwachstellen und Verwundbarkeiten der Anwendung selbst.<\/p>\n<p>Richtung <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>Security Development Lifecycle<\/b>\u00a0\u2013 wurde von Microsoft entwickelt. In der Abbildung ist das kanonische Modell des SDLC dargestellt, dessen Hauptziel es ist, die Sicherheit in jeder Phase der Entwicklung zu ber\u00fccksichtigen, von Anforderungen bis hin zur Ver\u00f6ffentlichung und dem Produktionsstart. Microsoft hat erkannt, dass es im Produkt zu viele Bugs gibt, die Anzahl zunimmt und dagegen etwas unternommen werden muss, und hat diesen Ansatz vorgeschlagen, der kanonisch geworden ist.<\/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 sind nicht darauf ausgerichtet, Schwachstellen zu entdecken, wie allgemein angenommen wird, sondern darauf, deren Auftreten zu verhindern. Mit der Zeit wurde der kanonische Ansatz von Microsoft verbessert und weiterentwickelt, und es entstand eine tiefere, detaillierte Auseinandersetzung damit.<\/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 kanonische SDLC ist in verschiedenen Methodologien stark detailliert \u2013 OpenSAMM, BSIMM, OWASP. Die Methodologien unterscheiden sich, sind jedoch insgesamt \u00e4hnlich.<\/p>\n<h3>Building Security In Maturity Model<\/h3>\n<p>\nAm meisten liegt es mir 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 Methodologie ist die Aufteilung des Prozesses der Anwendungssicherheit in 4 Bereiche: Governance, Intelligence, SSDL Touchpoints und Deployment. In jedem Bereich gibt es 12 Praktiken, die als 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>: Einstieg, Mittelstufe und Fortgeschritten. Alle 12 Praktiken k\u00f6nnen nach Kapiteln studiert werden, um wichtige Aspekte f\u00fcr Sie auszuw\u00e4hlen, zu verstehen, wie sie implementiert werden, und schrittweise Elemente hinzuzuf\u00fcgen, wie statische und dynamische Codeanalyse oder Code-Review. Sie erstellen einen Plan und arbeiten ruhig im Rahmen der Implementierung der gew\u00e4hlten Aktivit\u00e4ten.<\/p>\n<h2>Warum DevSecOps<\/h2>\n<p><\/p>\n<blockquote><p>DevOps ist ein umfassender Prozess, der auch Sicherheitsaspekte ber\u00fccksichtigt.<\/p><\/blockquote>\n<p>\nUrspr\u00fcnglich <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DevOps\"><b>DevOps<\/b><\/a><\/noindex> waren Sicherheits\u00fcberpr\u00fcfungen vorgesehen. In der Praxis war die Anzahl der Sicherheitsteams jedoch viel geringer als heute, und sie traten nicht als Teilnehmer des Prozesses auf, sondern als Kontroll- und Aufsichtsbeh\u00f6rde, die Anforderungen stellt und die Produktqualit\u00e4t am Ende des Releases \u00fcberpr\u00fcft. Dies ist ein klassischer Ansatz, bei dem Sicherheitsteams von der Entwicklung abgeschottet 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 separat von der Entwicklung steht. Normalerweise handelt es sich um einen Sicherheitsrahmen mit 2\u20133 gro\u00dfen und teuren Werkzeugen. Alle sechs Monate wird der Quellcode oder die Anwendung zur \u00dcberpr\u00fcfung geliefert, und einmal im Jahr werden <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\">Penetrationstests<\/a><\/noindex>. Dies f\u00fchrt dazu, dass sich die Produktionsfristen verl\u00e4ngern, w\u00e4hrend auf die Entwickler eine enorme Anzahl von Schwachstellen aus automatisierten Mitteln hereinbricht. All dies ist nicht zu reparieren, weil die Ergebnisse der vorhergehenden sechs Monate noch nicht ausgearbeitet wurden und nun eine neue Charge kommt.<\/p>\n<p>Im Laufe der Arbeit unseres Unternehmens sehen wir, dass Sicherheit in allen Bereichen und Branchen erkennt, dass es an der Zeit ist, aufzuholen und sich mit der Entwicklung im selben Rhythmus zu bewegen \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 Paradigma DevSecOps passt hervorragend zur Methodologie der agilen Entwicklung, zur Implementierung, Unterst\u00fctzung und Teilnahme 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>\u00dcbergang zu DevSecOps<\/h2>\n<p>\nDas wichtigste Wort im Security Development Lifecycle ist <b>\u201eProzess\u201c<\/b>. Sie m\u00fcssen dies verstehen, bevor Sie an den Kauf von Werkzeugen denken.<\/p>\n<blockquote><p>Es reicht nicht aus, Werkzeuge in den DevOps-Prozess einzubeziehen \u2013 wichtig ist die Interaktion und das Verst\u00e4ndnis zwischen den Beteiligten.<\/p><\/blockquote>\n<p><\/p>\n<h3>Wichtiger sind die Menschen, nicht die Werkzeuge.<\/h3>\n<p>\nOft beginnt die Planung eines sicheren Entwicklungsprozesses mit der Auswahl und dem Kauf eines Werkzeugs und endet mit dem Versuch, das Werkzeug in den aktuellen Prozess zu integrieren, der oft nur ein Versuch bleibt. Das f\u00fchrt zu traurigen Konsequenzen, da jedes Werkzeug seine eigenen Besonderheiten und Einschr\u00e4nkungen hat.<\/p>\n<p>Ein h\u00e4ufiger Fall ist, dass die Sicherheitsabteilung ein gutes, teures Werkzeug mit umfassenden Funktionen ausw\u00e4hlt und zu den Entwicklern kommt \u2013 um es in den Prozess einzubinden. Aber das klappt nicht \u2013 der Prozess ist so gestaltet, dass die Einschr\u00e4nkungen des bereits gekauften Werkzeugs nicht in die aktuelle Paradigmen passen.<\/p>\n<blockquote><p>Beschreiben Sie zuerst, welches Ergebnis Sie wollen und wie der Prozess aussehen soll. Das hilft dabei, die Rollen des Werkzeugs und der Sicherheit im Prozess zu verstehen.<\/p><\/blockquote>\n<p><\/p>\n<h3>Beginnen Sie mit dem, was bereits verwendet wird.<\/h3>\n<p>\nBevor Sie teure Werkzeuge kaufen, schauen Sie sich an, was Sie bereits haben. In jedem Unternehmen gibt es Sicherheitsanforderungen, die an die Entwicklung gestellt werden, es gibt Pr\u00fcfungen, Penetrationstests \u2013 warum nicht all dies in eine verst\u00e4ndliche und f\u00fcr alle n\u00fctzliche Form umwandeln?<\/p>\n<p>In der Regel sind Anforderungen ein Papierdokument, das im Regal liegt. Es gab einen Fall, als wir in ein Unternehmen kamen, um die Prozesse zu betrachten, und baten, die Sicherheitsanforderungen f\u00fcr die Software zu zeigen. Der Spezialist, der sich damit besch\u00e4ftigte, suchte lange:<\/p>\n<p><i>\u2013 Moment, irgendwo in meinen Notizen war ein Weg, wo dieses Dokument liegt.<\/i><\/p>\n<p>Am Ende haben wir das Dokument nach einer Woche erhalten.<\/p>\n<p>F\u00fcr Anforderungen, Pr\u00fcfungen und anderes erstellen Sie eine Seite, zum Beispiel auf\u00a0<b>Confluence<\/b>\u00a0\u2013 das ist f\u00fcr alle praktisch.<\/p>\n<blockquote><p>Es ist einfacher, das, was bereits existiert, umzuformatieren und f\u00fcr den Start zu verwenden.<\/p><\/blockquote>\n<p><\/p>\n<h3>Nutzen Sie Security Champions. <\/h3>\n<p>\nIn einem durchschnittlichen Unternehmen mit 100-200 Entwicklern arbeitet normalerweise ein Sicherheitsexperte, der mehrere Funktionen erf\u00fcllt und physisch nicht alles pr\u00fcfen kann. Selbst wenn er sich gro\u00dfe M\u00fche gibt \u2013 allein wird er nicht allen Code pr\u00fcfen k\u00f6nnen, den die Entwicklung generiert. F\u00fcr solche F\u00e4lle wurde das Konzept \u2013 <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 im Entwicklungsteam, die an der Sicherheit Ihres Produkts interessiert sind.<\/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 \/>\nDer Security Champion ist der Zugangspunkt zum Entwicklungsteam und ein Sicherheitsevangelist in einer Person.<\/p>\n<p>Normalerweise, wenn ein Sicherheitsbeauftragter ins Entwicklungsteam kommt und auf einen Fehler im Code hinweist, erh\u00e4lt er eine verwunderte Antwort:<\/p>\n<p><i>\u2014 Wer sind Sie? Ich sehe Sie zum ersten Mal. Bei mir ist alles in Ordnung \u2013 mein Kollege hat bei der Code-\u00dcberpr\u00fcfung \"apply\" gegeben, wir machen weiter!<\/i><\/p>\n<p>Das ist eine typische Situation, da \u00e4ltere oder einfach nur Kollegen des Entwicklers, mit denen er st\u00e4ndig bei der Arbeit und in der Code-\u00dcberpr\u00fcfung interagiert, viel mehr Vertrauen genie\u00dfen. Wenn anstelle des Sicherheitsbeauftragten der Security Champion auf den Fehler und die Folgen hinweist, hat sein Wort mehr Gewicht.<\/p>\n<p>Auch verstehen die Entwickler ihren Code besser als jeder Sicherheitsbeauftragte. F\u00fcr jemanden, der mindestens 5 Projekte im statischen Analysetool hat, ist es normalerweise schwierig, sich an alle Nuancen zu erinnern. Security Champions kennen ihr Produkt: was mit was interagiert und worauf man zuerst achten sollte \u2013 sie sind effizienter.<\/p>\n<p>\u00dcberlegen Sie also, Security Champions einzuf\u00fchren und den Einfluss des Sicherheitsteams zu erweitern. Das ist auch f\u00fcr den Champion selbst von Nutzen: berufliche Entwicklung in einem neuen Bereich, Erweiterung des technischen Horizonts, St\u00e4rkung technischer, organisatorischer und F\u00fchrungsf\u00e4higkeiten sowie Erh\u00f6hung des Marktwerts. Es ist eine Art soziale Ingenieurkunst, 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\">Das 20-zu-80-Prinzip<\/a><\/noindex>\u00a0besagt, dass 20% der Anstrengungen 80% des Ergebnisses liefern. Diese 20% sind die Praktiken der Anwendung Analyse, die automatisiert werden k\u00f6nnen und sollten. Beispiele f\u00fcr solche Aktivit\u00e4ten sind statische Analyse \u2013 <b>SAST<\/b>, dynamische Analyse \u2013 <b>DAST,<\/b> und\u00a0<b>Open Source Kontrolle<\/b>. Ich werde n\u00e4her auf die Aktivit\u00e4ten eingehen, sowie auf die Werkzeuge und die Besonderheiten, mit denen wir normalerweise bei ihrer Implementierung im Prozess konfrontiert sind, und wie man dies richtig macht.<\/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>Hauptprobleme der Werkzeuge<\/h3>\n<p>\nIch werde die aktuellen Probleme aller Werkzeuge hervorheben, die Aufmerksamkeit erfordern. Ich werde diese detaillierter analysieren, um mich nicht weiter zu wiederholen.<\/p>\n<p><b>Lange Analysezeit. <\/b>Wenn es 30 Minuten von dem Commit bis zum Produktionsrelease f\u00fcr alle Tests und den Build dauert, werden die \u00dcberpr\u00fcfungen auf Informationssicherheit einen Tag in Anspruch nehmen. Niemand wird den Prozess so aufhalten. Ber\u00fccksichtigen Sie dieses Merkmal und ziehen Sie Ihre Schlussfolgerungen.<\/p>\n<p><b>Hohe Rate von False Negatives oder False Positives. <\/b>Alle Produkte sind unterschiedlich, sie verwenden verschiedene Frameworks und ihren eigenen Stil beim Schreiben von Code. Bei unterschiedlichen Codebasen und Technologien k\u00f6nnen die Werkzeuge unterschiedliche Raten von False Negatives und False Positives zeigen. Daher schauen Sie, was genau in\u00a0<b>Ihrem<\/b> Unternehmen und f\u00fcr <b>Ihre<\/b> Anwendungen gute und verl\u00e4ssliche Ergebnisse liefert.<\/p>\n<p><b>Keine Integrationen mit bestehenden Werkzeugen<\/b>. Betrachten Sie die Werkzeuge aus der Perspektive der Integrationen, basierend auf dem, was Sie bereits verwenden. Wenn Sie beispielsweise Jenkins oder TeamCity haben, \u00fcberpr\u00fcfen Sie die Integration der Werkzeuge speziell mit dieser Software, nicht mit GitLab CI, das Sie nicht verwenden.<\/p>\n<p><b>Fehlende oder \u00fcberm\u00e4\u00dfige Komplexit\u00e4t der Anpassung. <\/b>Wenn ein Werkzeug keine API hat, wozu braucht man es dann? Alles, was im Interface m\u00f6glich ist, sollte auch \u00fcber die API zug\u00e4nglich sein. Ideal w\u00e4re es, wenn das Werkzeug die M\u00f6glichkeit zur Anpassung der Pr\u00fcfungen bietet.<\/p>\n<p><b>Kein Entwicklungsroadmap des Produkts. <\/b>Die Entwicklung steht niemals still; wir nutzen st\u00e4ndig neue Frameworks und Funktionen, und schreiben alten Code in neuen Sprachen um. Wir m\u00f6chten sicher sein, dass das Werkzeug, das wir kaufen, neue Frameworks und Technologien unterst\u00fctzt. Daher ist es wichtig zu wissen, dass das Produkt eine reale und korrekte <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> Entwicklung hat.<\/p>\n<h3>Besonderheiten des Prozesses<\/h3>\n<p>\nNeben den Eigenschaften der Werkzeuge sollten Sie auch die Besonderheiten des Entwicklungsprozesses ber\u00fccksichtigen. Zum Beispiel ist es ein typischer Fehler, die Entwicklung zu st\u00f6ren. Lassen Sie uns sehen, welche weiteren Besonderheiten zu ber\u00fccksichtigen sind und worauf das Sicherheitsteam achten sollte.<\/p>\n<p>Um die Fristen f\u00fcr die Entwicklung und den Release nicht zu gef\u00e4hrden, erstellen Sie <b>verschiedene Regeln<\/b> und verschiedene <b>Show Stopper\u00a0<\/b>\u2014 Kriterien f\u00fcr den Stop des Build-Prozesses bei Vorhandensein von Schwachstellen \u2014 <b>f\u00fcr verschiedene Umgebungen<\/b>. Zum Beispiel verstehen wir, dass der aktuelle Branch auf einem Entwicklungsstand oder UAT ist, daher halten wir nicht an und sagen nicht:<\/p>\n<p><i>\u2014 Sie haben hier Schwachstellen, Sie kommen nicht weiter!<\/i><\/p>\n<p>An diesem Punkt ist es wichtig, den Entwicklern zu sagen, dass es Sicherheitsprobleme gibt, auf die man achten sollte.<\/p>\n<p><b>Vorhandensein von Schwachstellen ist kein Hindernis f\u00fcr weitere Tests.<\/b>: manuelles, integratives oder manuelles Testen. Auf der anderen Seite m\u00fcssen wir irgendwie die Sicherheit des Produkts erh\u00f6hen, und die Entwickler sollten nicht ignorieren, was Sicherheit findet. Deshalb handeln wir manchmal so: Wenn wir eine neue Version f\u00fcr die Entwicklungsumgebung bereitstellen, benachrichtigen wir einfach die Entwickler:<\/p>\n<p><i>\u2014 Leute, ihr habt Probleme, bitte achtet darauf.<\/i><\/p>\n<p>In der UAT-Phase zeigen wir erneut Warnungen \u00fcber Schwachstellen, und in der Produktionsphase sagen wir:<\/p>\n<p><i>\u2014 Leute, wir haben euch mehrmals gewarnt, ihr habt nichts unternommen \u2013 damit lassen wir euch nicht raus.<\/i><\/p>\n<p>Wenn es um Code und Dynamik geht, sollten wir nur die Schwachstellen der Features und des Codes anzeigen und warnen, die gerade in diesem Feature geschrieben wurden. Wenn ein Entwickler einen Button um 3 Pixel verschoben hat und wir ihm sagen, dass er dort eine SQL-Injektion hat und dringend etwas \u00e4ndern muss \u2013 das ist falsch. Schaut nur auf das, was jetzt geschrieben ist, und auf die Ver\u00e4nderung, die in die Anwendung kommt.<\/p>\n<p>Angenommen, wir haben einen funktionalen Defekt - wie die Anwendung nicht funktionieren sollte: Geld wird nicht \u00fcberwiesen, beim Klicken auf den Button erfolgt kein \u00dcbergang zur n\u00e4chsten Seite oder das Produkt l\u00e4dt nicht. <b>Sicherheitsdefekte<\/b>\u00a0sind solche Defekte, aber nicht im Kontext des Anwendungsbetriebs, sondern der 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 Schwachstellen solche Defekte sind, sollten sie dort sein, wo auch alle Entwicklungsfehler sind. Vergesst also Berichte und erschreckende 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 Unternehmen arbeitete, das Software entwickelte, erhielt ich einen Bericht von einem statischen Analysewerkzeug. Ich \u00f6ffnete ihn, erschrak, machte mir einen Kaffee, bl\u00e4tterte durch 350 Seiten, schloss ihn und machte weiter mit der Arbeit. <b>Gro\u00dfe Berichte sind tote Berichte<\/b>. Normalerweise gehen sie nirgendwo hin, E-Mails werden gel\u00f6scht, vergessen, verloren oder das Gesch\u00e4ft sagt, dass es die Risiken akzeptiert.<\/p>\n<p>Was tun? Die best\u00e4tigten Fehler, die wir gefunden haben, wandeln wir einfach in ein entwicklungsfreundliches Format um, zum Beispiel indem wir sie im Backlog in Jira ablegen. Wir priorisieren die Fehler und beheben sie nach Dringlichkeit, gleichwertig mit funktionalen Fehlern und Testfehlern.<\/p>\n<h2>Statische Analyse - SAST<\/h2>\n<p>\n<b>Dies ist eine Analyse des Codes auf Schwachstellen.<\/b>, aber das ist nicht dasselbe wie SonarQube. Wir \u00fcberpr\u00fcfen nicht nur nach Mustern oder Stil. Bei der Analyse kommen verschiedene Ans\u00e4tze zur Anwendung: nach dem Schwachstellenschema, nach\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>, nach der Analyse von Konfigurationsdateien. Das betrifft alles, was direkt den Code angeht.<\/p>\n<p><b>Vorteile des Ansatzes<\/b>: <b>die Aufdeckung von Schwachstellen im Code in einer fr\u00fchen Phase der Entwicklung<\/b>, wenn es noch keine St\u00e4nde und kein fertiges Werkzeug gibt, und<b>\u00a0die M\u00f6glichkeit einer inkrementellen Analyse<\/b>: die Analyse des Codes, der sich ge\u00e4ndert hat, und nur der Funktion, an der wir gerade arbeiten, was die Analysezeit verk\u00fcrzt.<\/p>\n<p><b>Nachteile<\/b>\u00a0\u2013 das Fehlen der Unterst\u00fctzung ben\u00f6tigter Sprachen.<\/p>\n<p><b>Notwendige Integrationen, <\/b>die meiner subjektiven Meinung nach in den Werkzeugen 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 Entwickler einfacher, nicht durch eine unverst\u00e4ndliche Benutzeroberfl\u00e4che zu navigieren, die man sich erst merken muss, sondern direkt an ihrem Arbeitsplatz in ihrer eigenen Entwicklungsumgebung alle notwendigen Integrationen und Schwachstellen, die sie gefunden haben, zu sehen.\n<\/li>\n<li>Code-Review: SonarQube und manuelles Review.\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.<\/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 \/>\nEs sind nicht die Werkzeuge, die wichtig sind, 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 finden m\u00f6glicherweise nicht eine gro\u00dfe Anzahl von Schwachstellen oder komplexe DataFlows, aber sie k\u00f6nnen und sollten beim Aufbau des Prozesses verwendet werden. Sie helfen zu verstehen, wie der Prozess aufgebaut wird, wer f\u00fcr die Bugs verantwortlich ist, wer reportet und wer Bericht erstattet. Wenn Sie die erste Phase der Sicherstellung der Sicherheit Ihres Codes durchf\u00fchren m\u00f6chten, verwenden Sie Open-Source-L\u00f6sungen.<\/p>\n<p>Wie kann man das integrieren, wenn Sie am Anfang stehen und nichts haben: weder CI, noch Jenkins, noch 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, k\u00f6nnen Sie die Integration auf <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/CVS\">Concurrent Versions System<\/a><\/noindex>.<\/p>\n<p><b>Nach der Ereignis<\/b>\u00a0\u2014 Pull-Request, Commit. Sie scannen den Code und zeigen im Status des Builds, ob die Sicherheitspr\u00fcfung bestanden oder nicht bestanden wurde.<\/p>\n<p><b>Feedback. <\/b>Nat\u00fcrlich ist Feedback immer notwendig. Wenn Sie einfach auf der Sicherheitsseite gearbeitet, alles in eine Box gepackt und niemandem davon erz\u00e4hlt haben, und am Ende des Monats eine Menge Bugs herausgekommen sind \u2013 das ist nicht richtig und nicht gut.<\/p>\n<h3>Integration mit dem Code Review System<\/h3>\n<p>\nEinmal haben wir in einigen wichtigen Projekten als Standard-Reviewer einen technischen Benutzer von AppSec eingesetzt. Abh\u00e4ngig davon, ob Fehler im neuen Code gefunden wurden oder nicht, weist der Reviewer im Pull-Request den Status \u201eaccept\u201c oder \u201eneed work\u201c zu \u2013 entweder alles in Ordnung oder es muss nachgebessert werden, mit Verweisen dazu, was genau ausgearbeitet werden muss. F\u00fcr die Integration mit der Version, die in der Produktion l\u00e4uft, haben wir das Merge-Verbot aktiviert, wenn der Test f\u00fcr die Informationssicherheit nicht bestanden wurde. Dies haben wir in das manuelle Code Review integriert, und die anderen Beteiligten im Prozess konnten die Sicherheitsstatus genau f\u00fcr diesen spezifischen Prozess sehen.<\/p>\n<h3>Integration mit SonarQube<\/h3>\n<p>\nViele haben <noindex><a rel=\"nofollow\" href=\"https:\/\/de.wikipedia.org\/wiki\/Quality_Gate\">Quality Gate<\/a><\/noindex> . Hier ist es dasselbe \u2013 man kann die gleichen Gates nur f\u00fcr SAST-Tools erstellen. Es wird dasselbe Interface, dasselbe Quality Gate sein, nur wird es <b>Security Gate<\/b>genannt. Und ebenso, wenn Sie einen Prozess mit SonarQube eingerichtet haben, k\u00f6nnen Sie alles problemlos integrieren.<\/p>\n<h3>Integration auf CI-Ebene<\/h3>\n<p>\nHier ist auch alles ziemlich einfach:<\/p>\n<ul>\n<li><b>Auf der gleichen Ebene wie die automatisierten Tests<\/b>, den Unit-Tests.\n<\/li>\n<li><b>Teilen nach Entwicklungsphasen<\/b>: dev, test, prod. Unterschiedliche Regelsets oder unterschiedliche Fehlbedingungen 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 das Ende der Sicherheitspr\u00fcfungen oder wir warten nicht. Das hei\u00dft, wir haben sie einfach gestartet und machen weiter, und dann 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 Sicherheitspr\u00fcfungen sollte den Ergebnissen der Unit-Tests entsprechen.<\/p>\n<p>Zum Beispiel haben wir ein gro\u00dfes Projekt \u00fcbernommen und beschlossen, dass wir es jetzt mit SAST scannen werden \u2013 in Ordnung. Wir haben dieses Projekt in die SAST eingef\u00fcgt, es hat uns 20.000 Sicherheitsanf\u00e4lligkeiten ausgegeben, und nach einem entschlossenen Beschluss haben wir akzeptiert, dass alles gut ist. 20.000 Sicherheitsanf\u00e4lligkeiten sind unsere technische Schuld. Diese Schuld packen wir in eine Box, werden sie nach und nach abarbeiten und Bugs in die Fehlerverfolgung eintragen. Wir werden ein Unternehmen einstellen, alles selbst machen oder uns von Security Champions unterst\u00fctzen lassen \u2013 und die technische Schuld wird abnehmen.<\/p>\n<p>Alle neu entstehenden Sicherheitsanf\u00e4lligkeiten im neuen Code m\u00fcssen ebenfalls behoben werden, wie Fehler in Unit-Tests oder automatisierten Tests. Vereinfacht gesagt, das Build l\u00e4uft, zwei Tests sind fehlgeschlagen und zwei Sicherheitstests sind fehlgeschlagen. In Ordnung \u2013 wir haben geschaut, was passiert ist, haben das eine und das andere behoben, beim n\u00e4chsten Mal haben wir es erneut getestet \u2013 alles gut, es sind keine neuen Sicherheitsanf\u00e4lligkeiten aufgetaucht, die Tests sind nicht fehlgeschlagen. Wenn diese Aufgabe tiefergehender ist und wir sie gut verstehen m\u00fcssen, oder die Behebung von Sicherheitsanf\u00e4lligkeiten gro\u00dfe Teile dessen betrifft, was hinter den Kulissen passiert: Wir tragen den Bug in die Fehlerverfolgung ein, er wird priorisiert und behoben. Leider ist die Welt nicht perfekt und Tests fallen manchmal aus.<\/p>\n<p>Ein Beispiel f\u00fcr ein Security Gate \u2013 analog zum Quality Gate, bezogen auf die Anzahl und das Vorhandensein von Sicherheitsanf\u00e4lligkeiten 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;\" \/>Wir integrieren mit SonarQube \u2013 das Plugin wird installiert, alles ist sehr praktisch und klasse.<\/p>\n<h3>Integration in die Entwicklungsumgebung<\/h3>\n<p>\n<b>Integrationsm\u00f6glichkeiten:<\/b><\/p>\n<ul>\n<li>Scannen aus der Entwicklungsumgebung noch vor dem Commit starten.\n<\/li>\n<li>Ergebnisse anzeigen.\n<\/li>\n<li>Ergebnisse analysieren.\n<\/li>\n<li>Synchronisierung mit dem Server.\n<\/li>\n<\/ul>\n<p>\nSo sieht der Abruf von Ergebnissen 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> erscheint einfach ein zus\u00e4tzlicher Punkt, der anzeigt, dass beim Scannen solche Sicherheitsanf\u00e4lligkeiten gefunden wurden. Man kann sofort den Code anpassen, Empfehlungen einsehen und\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_graph\">Flow Graph<\/a><\/noindex>. Das alles ist am Arbeitsplatz des Entwicklers verf\u00fcgbar, was sehr praktisch ist \u2013 man muss nicht auf andere Links gehen und zus\u00e4tzliche Informationen suchen.<\/p>\n<h2>Open Source<\/h2>\n<p>\nDas ist mein Lieblingsthema. Jeder nutzt Open Source-Bibliotheken \u2013 wozu eine Menge Hacks und Fahrr\u00e4der bauen, wenn man eine fertige Bibliothek nutzen kann, in der schon alles 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, das stimmt, aber Bibliotheken werden auch von Menschen geschrieben und beinhalten ebenfalls bestimmte Risiken und 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 Bibliotheken. <\/b>Das Tool wei\u00df beispielsweise, 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 in Bug-Trackern Schwachstellen gemeldet sind, die sich auf diese Version der Bibliothek beziehen. 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, die keine Schwachstellen aufweist.<\/p>\n<p><b>Analyse der Lizenzreinheit. <\/b>Bei uns ist das noch nicht besonders popul\u00e4r, aber wenn Sie mit dem Ausland arbeiten, k\u00f6nnen Sie dort gelegentlich \u00c4rger f\u00fcr die Verwendung einer Open Source-Komponente bekommen, die nicht verwendet oder modifiziert werden darf. Laut der Lizenzpolitik der Bibliothek k\u00f6nnen 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 auch daf\u00fcr kann man sich sch\u00fctzen.<\/p>\n<p><b>Analyse von Komponenten, die in der Industrie verwendet werden. <\/b>Stellen wir uns eine hypothetische Situation vor: Wir haben endlich die Entwicklung abgeschlossen und die letzte Version unseres Mikrodienstes ver\u00f6ffentlicht. Er l\u00e4uft dort wunderbar \u2013 eine Woche, einen Monat, ein Jahr. Wir sammeln ihn nicht ein, f\u00fchren keine Sicherheitspr\u00fcfungen durch, alles scheint gut zu sein. Doch pl\u00f6tzlich, zwei Wochen nach der Ver\u00f6ffentlichung, kommt eine kritische Schwachstelle in der Open Source-Komponente heraus, die wir genau in diesem Build, in der Produktionsumgebung, verwenden. Wenn wir nicht aufzeichnen, was und wo wir verwenden, werden wir diese Schwachstelle einfach nicht sehen. In einigen Tools gibt es M\u00f6glichkeiten zur \u00dcberwachung von Schwachstellen in Bibliotheken, die derzeit in der Produktion verwendet werden. Das ist sehr n\u00fctzlich.<\/p>\n<p><b>Vollst\u00e4ndig unstation\u00e4re, zeitgenaue Analyse;<\/b><\/p>\n<ul>\n<li>Verschiedene Richtlinien f\u00fcr verschiedene Entwicklungsphasen.\n<\/li>\n<li>\u00dcberwachung von Komponenten in der Industrie.\n<\/li>\n<li>Kontrolle der Bibliotheken im Organisationsbereich.\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 von Marktf\u00fchrern, die sich mit Open Source-Analysen befassen.<\/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 von 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. Im Wesentlichen handelt es sich um alle Cloud-Produkte oder On-Premise, aber alle Daten werden dennoch ins Internet gesendet. Sie senden nicht Ihre Bibliotheken, sondern Hashes oder eigene Werte, die sie berechnen, sowie Fingerabdr\u00fccke an ihren Server, um Benachrichtigungen \u00fcber bekannte Schwachstellen 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 steht innerhalb von Event Central Nexus, und wir m\u00f6chten, dass in unserem Repository keine Schwachstellen mit dem Status \"kritisch\" oder \"hoch\" vorhanden sind. Man kann das Proxieren mit dem Tool Nexus Firewall Lifecycle so konfigurieren, dass solche Schwachstellen ausgeschlossen werden und nicht in das interne Repository gelangen.<\/p>\n<p><b>Integration in CI<\/b>. Auf einer Ebene mit automatisierten Tests, Unit-Tests und der Trennung der Entwicklungsphasen: dev, test, prod. In jeder Phase k\u00f6nnen beliebige Bibliotheken heruntergeladen und alles M\u00f6gliche verwendet werden, aber wenn dort etwas Strenges mit dem Status \"critical\" vorhanden ist, sollten die Entwickler m\u00f6glicherweise in der Phase des Live-Gehens darauf hingewiesen werden.<\/p>\n<p><b>Integration mit Artefakt-Repositories<\/b>: Nexus und JFrog.<\/p>\n<p><b>Integration in die Entwicklungsumgebung. <\/b>Die Werkzeuge, die Sie ausw\u00e4hlen, sollten Integration mit den Entwicklungsumgebungen haben. Der Entwickler sollte von seinem Arbeitsplatz aus Zugriff auf die Ergebnisse der Scans haben oder die M\u00f6glichkeit, selbst zu scannen und den Code auf Schwachstellen vor dem Commit in CVS zu \u00fcberpr\u00fcfen.<\/p>\n<p><b>Integration in CD. <\/b>Das ist eine coole Funktion, die mir sehr gef\u00e4llt und \u00fcber die ich bereits gesprochen habe \u2013 die \u00dcberwachung des Auftretens neuer Schwachstellen in der Produktionsumgebung. Das funktioniert ungef\u00e4hr so.<\/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>\u00f6ffentliche Komponenten-Repositories<\/b>\u00a0\u2014 einige Werkzeuge nach au\u00dfen und unser internes Repository. Wir m\u00f6chten, dass darin nur vertrauensw\u00fcrdige Komponenten vorhanden sind. Beim Proxieren der Anfrage \u00fcberpr\u00fcfen wir, dass die heruntergeladene Bibliothek keine Schwachstellen aufweist. Wenn sie bestimmten Richtlinien unterliegt, die wir festlegen und unbedingt mit der Entwicklung abstimmen, wird sie nicht heruntergeladen, und es erfolgt eine Meldung zur Verwendung einer anderen Version. Dementsprechend erh\u00e4lt der Entwickler, wenn in der Bibliothek etwas wirklich Kritisches und Schlechtes vorhanden ist, die Bibliothek noch nicht in der Installationsphase \u2013 er soll eine h\u00f6here oder niedrigere Version verwenden.<\/p>\n<ul>\n<li>Beim Build \u00fcberpr\u00fcfen wir, dass niemand etwas Schlechtes hineingeschmuggelt 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>Beim Deployment \u00fcberpr\u00fcfen wir das Paket erneut: war, jar, DL oder Docker-Image, um sicherzustellen, dass es den Richtlinien entspricht. \n<\/li>\n<li>Beim Wechsel in die Produktion \u00fcberwachen wir, was in der Produktionsumgebung passiert: ob kritische Schwachstellen auftreten oder nicht.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Dynamische Analyse \u2013 DAST<\/h2>\n<p>\nWerkzeuge der dynamischen Analyse unterscheiden sich grundlegend von allem, was bisher gesagt wurde. Es handelt sich um eine Simulation der Benutzerinteraktion mit der Anwendung. Wenn es sich um eine Webanwendung handelt, senden wir Anfragen, simulieren die Arbeit des Clients, klicken auf Schaltfl\u00e4chen im Frontend und senden k\u00fcnstliche Daten aus Formularen: Anf\u00fchrungszeichen, Klammern, Zeichen in verschiedenen Kodierungen, um zu sehen, wie die Anwendung funktioniert und externe Daten verarbeitet.<\/p>\n<p>Dieses System erm\u00f6glicht es auch, bekannte Schwachstellen in Open Source zu \u00fcberpr\u00fcfen. Da DAST nicht wei\u00df, welches Open Source wir verwenden, werden einfach \"schadhafte\" Muster eingesetzt und die Serverantworten analysiert:<\/p>\n<p><i>\u2014 Aha, hier gibt es ein Deserialisierungsproblem, und hier nicht.<\/i><\/p>\n<p>Das birgt gro\u00dfe 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 des Netzwerks des Anwendungsservers.\n<\/li>\n<li>Keine Integrationen.\n<\/li>\n<li>M\u00f6glichkeit zur \u00c4nderung der Einstellungen der analysierten Anwendung.\n<\/li>\n<li>Keine Unterst\u00fctzung der erforderlichen Technologien.\n<\/li>\n<li>Schwierigkeiten bei der Konfiguration.\n<\/li>\n<\/ul>\n<p>\nWir hatten eine Situation, als wir endlich AppScan gestartet haben: es dauerte lange, um Zugang zur Anwendung zu erhalten, wir bekamen 3 Konten und freuten uns - endlich k\u00f6nnen wir alles \u00fcberpr\u00fcfen! Wir starteten den Scan, und das erste, was AppScan machte, war, in das Admin-Panel einzudringen, alle Kn\u00f6pfe zu dr\u00fccken, die H\u00e4lfte der Daten zu \u00e4ndern und anschlie\u00dfend den Server mit seinen -Anfragen komplett abzuschalten. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mailform.io\/\">mailform<\/a><\/noindex>-Anfragen. Die Entwicklung mit dem Testteam sagte:<\/p>\n<p><i>\u2014 Leute, macht ihr Witze?! Wir haben euch Zug\u00e4nge gegeben, und ihr habt die Standalone-Version zerst\u00f6rt!<\/i><\/p>\n<p>Ber\u00fccksichtigt m\u00f6gliche Risiken. Idealerweise solltet ihr eine separate Testumgebung f\u00fcr Sicherheitstests vorbereiten, die zumindest irgendwie vom restlichen Umfeld isoliert ist, und das Admin-Panel vorzugsweise manuell \u00fcberpr\u00fcfen. Das ist ein Pentest - die verbleibenden Prozents\u00e4tze an Aufwand, die wir jetzt nicht betrachten. <\/p>\n<p>Es sollte ber\u00fccksichtigt werden, dass man dies als analoge Lastpr\u00fcfung verwenden kann. In der ersten Phase kann man den dynamischen Scanner in 10-15 Threads aktivieren und sehen, was dabei herauskommt, aber normalerweise zeigt die Praxis, dass nichts Gutes herauskommt.<\/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 hervorzuheben <noindex><a rel=\"nofollow\" href=\"https:\/\/portswigger.net\/burp\">Burp Suite<\/a><\/noindex>\u00a0\u2014 das ist das \u201eSchweizer Taschenmesser\u201c f\u00fcr jeden Sicherheitsspezialisten. Es wird von allen verwendet und ist sehr benutzerfreundlich. Vor kurzem wurde eine neue Demoversion der Enterprise-Edition ver\u00f6ffentlicht. Fr\u00fcher war es einfach ein Standalone-Tool mit Plugins, aber jetzt entwickeln die Programmierer endlich einen gro\u00dfen Server, von dem aus mehrere Agenten verwaltet werden k\u00f6nnen. Das ist genial, 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 der Testumgebung und\u00a0<b>Scan nach erfolgreichem Abschluss der Integrationstests.<\/b>.<\/p>\n<p>Wenn die Integrationen nicht funktionieren oder dort Platzhalter und Mock-Funktionen stehen, ist das sinnlos und nutzlos \u2013 egal welches Muster wir senden, der Server wird immer gleich antworten.<\/p>\n<ul>\n<li>Ideal ist eine separate Umgebung f\u00fcr Tests.\n<\/li>\n<li>Vor Beginn der Tests solltet ihr die Anmeldefolge aufzeichnen.\n<\/li>\n<li>Die Testung des Administrationssystems erfolgt ausschlie\u00dflich manuell.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Prozess<\/h2>\n<p>\nEin wenig zusammenfassend \u00fcber den gesamten Prozess und \u00fcber die Arbeit jedes Tools, insbesondere. Alle Anwendungen sind unterschiedlich \u2013 bei einer funktioniert die dynamische Analyse besser, bei einer anderen die statische, bei einer dritten die OpenSource-Analyse, Pentests oder sogar etwas ganz anderes, zum Beispiel Ereignisse mit\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 ein Prozess funktioniert und wo man ihn verbessern kann, m\u00fcssen Metriken von allem gesammelt werden, was in Reichweite ist, einschlie\u00dflich Produktionsmetriken, Metriken von Tools und aus Fehlerverfolgern.<\/p>\n<p>Alle Daten sind n\u00fctzlich. Man muss aus verschiedenen Perspektiven betrachten, wo welches Tool besser eingesetzt wird und wo der Prozess konkret schw\u00e4chelt. Vielleicht sollte man die Reaktionszeit der Entwicklung betrachten, um zu verstehen, wo der Prozess basierend auf der Zeit verbessert werden kann. Je mehr Daten vorhanden sind, desto mehr Perspektiven kann man von hochrangigen bis zu Detailansichten jedes Prozesses aufbauen.<\/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 jeder statische und dynamische Analyzer seine eigenen APIs, eigene M\u00f6glichkeiten der Ausf\u00fchrung und Prinzipien hat, einige mit Planern, andere ohne, schreiben wir ein Tool <b>AppSec-Orchestrator<\/b>, das einen einheitlichen Einstieg in den gesamten Prozess von der Entwicklung erm\u00f6glicht und ihn von einem Punkt aus steuern kann.<\/p>\n<p>Manager, Entwickler und Sicherheitsingenieure haben einen Einstiegspunkt, von dem aus sie sehen k\u00f6nnen, was l\u00e4uft, einstellen und Scans ausf\u00fchren, Ergebnisse erhalten und Anforderungen stellen k\u00f6nnen. Wir versuchen, von Papierkram wegzukommen und alles in eine f\u00fcr die Entwicklung verst\u00e4ndliche Form zu bringen \u2013 Seiten auf Confluence mit Status und Metriken, Fehler in Jira oder in verschiedenen Fehlerverfolgern, oder die Integration in einen synchronen\/asynchronen Prozess in CI\/CD.<\/p>\n<h2>Wesentliche Erkenntnisse<\/h2>\n<p>\n<b>Werkzeuge sind nicht das Wichtigste.<\/b> Zuerst den Prozess durchdenken \u2013 dann die Werkzeuge implementieren. Werkzeuge sind gut, aber teuer; darum kann man mit dem Prozess beginnen und die Interaktion sowie das Verst\u00e4ndnis zwischen Entwicklung und Sicherheit gestalten. Aus der Sicht der Sicherheit: Man sollte nicht alles ohne weiteres blockieren. Aus der Sicht der Entwicklung: Wenn etwas hochgradig kritisch ist, muss es eliminiert werden und nicht ignoriert werden.<\/p>\n<p><b>Produktqualit\u00e4t<\/b>\u00a0<b>\u2013 das gemeinsame Ziel<\/b> sowohl f\u00fcr die Sicherheit als auch f\u00fcr die Entwicklung. Wir machen dasselbe und bem\u00fchen uns, dass alles korrekt funktioniert und keine Reputationsrisiken oder finanziellen Verluste entstehen. Deshalb propagieren wir den Ansatz des DevSecOps und SecDevOps, um die Kommunikation zu verbessern und das Produkt qualitativ hochwertiger zu machen.<\/p>\n<p><b>Beginnen Sie mit dem, was bereits vorhanden ist<\/b>: Anforderungen, Architektur, Teilpr\u00fcfungen, Schulungen, Richtlinien. Verwenden Sie nicht sofort alle Praktiken f\u00fcr alle Projekte \u2013 <b>arbeiten Sie 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 bewegen Sie es und automatisieren Sie es. Wenn etwas manuell erledigt wird, ist das kein guter Abschnitt im Prozess. M\u00f6glicherweise sollten Sie dies \u00fcberdenken und ebenfalls automatisieren.<\/p>\n<p>Wenn die Gr\u00f6\u00dfe des Sicherheitsteams klein ist \u2013 <b>verwenden Sie Security Champions.<\/b>.<\/p>\n<p>M\u00f6glicherweise passen die Dinge, von denen ich gesprochen habe, nicht zu Ihnen und Sie entwickeln etwas Eigenes \u2013 und das ist gut. Aber\u00a0<b>w\u00e4hlen Sie die Werkzeuge auf der Grundlage der Anforderungen Ihres Prozesses aus.<\/b>Schauen Sie nicht darauf, was die Community sagt, dass dieses Werkzeug schlecht ist und dieses gut. Vielleicht ist es genau umgekehrt bei Ihrem Produkt.<\/p>\n<p><b>Anforderungen an die Werkzeuge.<\/b><\/p>\n<ul>\n<li>Niedriger Anteil an False Positives.\n<\/li>\n<li>Angemessene Analysezeit.\n<\/li>\n<li>Benutzerfreundlichkeit.\n<\/li>\n<li>Vorhandensein von Integrationen.\n<\/li>\n<li>Verst\u00e4ndnis des Entwicklungs-Roadmaps des Produkts.\n<\/li>\n<li>M\u00f6glichkeit zur Anpassung der Werkzeuge.\n<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p>Der Vortrag von Yuri wurde als einer der besten auf der DevOpsConf 2018 ausgew\u00e4hlt. Um viele weitere interessante Ideen und praktische F\u00e4lle 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\">Festival RIT++<\/a><\/noindex>. Noch besser ist es, wenn Sie bereit sind, Ihre Erfahrungen zu teilen, dann <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-rit\">bewerben Sie sich<\/a><\/noindex> bis zum 21. April f\u00fcr einen Vortrag.<\/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 5.0.1.1 - 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.\" \/>\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) 5.0.1.1\" \/>\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.\" \/>\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\udd47Angst und Hass DevSecOps | ProHoster","description":"Wir hatten 2 Code-Analysatoren, 4 Werkzeuge f\u00fcr dynamisches Testen, eigene Bastelarbeiten und 250 Skripte.","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.","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}