{"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\/nl\/blog\/administrirovanie\/strah-i-nenavist-devsecops","title":{"rendered":"Angst en haat voor DevSecOps","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>We had 2 code analyzers, 4 dynamic testing tools, our own creations, and 250 scripts. Not that all of this was needed in the current process, but once we started implementing DevSecOps, we must follow through.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor 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\">Bron<\/a><\/noindex>. Character creators: Justin Roiland and Dan Harmon.<\/i><\/p>\n<p>What is SecDevOps? And DevSecOps? What are the differences? Application Security - what is it about? Why is the classic approach no longer effective? Answers to all these questions are known <b>Yuri Shabalin<\/b> uit\u00a0<b>Swordfish Security. <\/b>Yuri will answer everything in detail and discuss the challenges of transitioning from the classic Application Security model to the DevSecOps process: how to integrate secure development into the DevOps process without breaking anything, how to navigate the main stages of security testing, what tools can be used, how they differ, and how to configure them correctly to avoid pitfalls.<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 afspelen\" 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>About the speaker:<\/b> <b>Yuri Shabalin - <\/b>Chief Security Architect at <b>Swordfish Security<\/b>. Responsible for implementing SSDL, integrating application analysis tools into a unified development and testing ecosystem. 7 years of experience in information security. Worked at Alfa-Bank, Sberbank, and Positive Technologies, which develops software and provides services. Speaker at international conferences ZerONights, PHDays, RISSPA, OWASP.<\/p>\n<h2>Application Security: what is it about?<\/h2>\n<p>\n<b>Application Security<\/b>\u00a0is a branch of security that focuses on the security of applications. It does not relate to infrastructure or network security, but specifically to what we write and what developers work on - the flaws and vulnerabilities of the application itself.<\/p>\n<p>Direction <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/ef\/ef6\/modeling\/designer\/advanced\/edmx\/ssdl-spec\">SDL or SDLC<\/a><\/noindex>\u00a0\u2014 <b>Security development lifecycle<\/b>\u00a0was developed by Microsoft. The diagram shows the canonical SDLC model, whose main task is to involve security at every stage of development, from requirements to release and production deployment. Microsoft realized that there were too many bugs in production, that they were increasing, and something had to be done, leading to the proposal of this approach, which became canonical.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/466773b9a5bd355419fa1d6d1ddbca66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nApplication Security and SSDL are not aimed at detecting vulnerabilities, as is commonly believed, but at preventing their emergence. Over time, the canonical approach from Microsoft has been improved and developed, incorporating a more in-depth detailed immersion.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/58d3e6aadd30594c018940bcb2a8248b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHet canonieke SDLC is sterk gedetailleerd in verschillende methodologie\u00ebn - OpenSAMM, BSIMM, OWASP. De methodologie\u00ebn verschillen, maar zijn over het algemeen vergelijkbaar.<\/p>\n<h3>Building Security In Maturity Model<\/h3>\n<p>\nIk voel me het meest verbonden met <b>BSIMM<\/b>\u00a0\u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bsimm.com\/\">Building Security In Maturity Model<\/a><\/noindex>. De basis van de methodologie is het opdelen van het proces van Application Security in 4 domeinen: Governance, Intelligence, SSDL Touchpoints en Deployment. In elk domein zijn er 12 praktijken die zijn weergegeven in 112 activiteiten.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/ae0bbfd0dde335af886282672ed92367.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nElke van de 112 activiteiten heeft <b>3 niveaus van volwassenheid<\/b>: basiss, gemiddeld en gevorderd. Alle 12 praktijken kunnen per sectie worden bestudeerd, belangrijke zaken voor jou worden geselecteerd, en je kunt leren hoe ze ge\u00efmplementeerd kunnen worden en geleidelijk elementen toevoegen, zoals statische en dynamische code-analyse of code reviews. Je schrijft een plan en werkt daarmee rustig aan de implementatie van de geselecteerde activiteiten.<\/p>\n<h2>Waarom DevSecOps<\/h2>\n<p><\/p>\n<blockquote><p>DevOps is een overkoepelend groot proces waarin aandacht voor veiligheid noodzakelijk is.<\/p><\/blockquote>\n<p>\nOorspronkelijk <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DevOps\"><b>DevOps<\/b><\/a><\/noindex> ging uit van beveiligingscontroles. In de praktijk was het aantal beveiligingsteams veel kleiner dan nu, en fungeerden ze niet als deelnemers aan het proces, maar als een controle- en toezichthoudend orgaan dat eisen stelt en de productkwaliteit aan het einde van de release controleert. Dit is de klassieke aanpak, waarbij beveiligingsteams achter de schermen van de ontwikkeling zaten en niet deelnamen aan het proces.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/1c5958fb123313308bdd92c5471c44da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHet belangrijkste probleem is dat de informatiebeveiliging gescheiden staat van de ontwikkeling. Gewoonlijk bestaat er een soort informatiebeveiliging-contour met 2-3 grote en dure tools. Het broncode of de applicatie komt om de zes maanden binnen en moet gecontroleerd worden, en elk jaar worden <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\">penetratietests<\/a><\/noindex>. Dit leidt er allemaal toe dat de tijd om in productie te gaan wordt uitgesteld, en ontwikkelaars worden overspoeld met een enorme hoeveelheid kwetsbaarheden uit geautomatiseerde middelen. Dit is allemaal niet te ontleden en op te lossen, omdat de resultaten van de voorgaande zes maanden nog niet zijn bekeken, en er nu een nieuwe lading binnenkomt.<\/p>\n<p>In het proces van ons bedrijf zien we dat beveiliging in alle gebieden en industrie\u00ebn begrijpt dat het tijd is om zich aan te passen en samen met de ontwikkeling in \u00e9\u00e9n wiel te draaien - 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>. De DevSecOps-paradigma past prachtig in de methodologie van agile ontwikkeling, op implementatie, ondersteuning en deelname aan elke release en iteratie.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/cf258bd7efc82ff27787b5029cf2f945.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Overgang naar DevSecOps<\/h2>\n<p>\nHet belangrijkste woord in de Security Development Lifecycle is <b>\"proces\"<\/b>Je moet dit begrijpen voordat je denkt aan het kopen van tools.<\/p>\n<blockquote><p>Het is niet genoeg om tools in het DevOps-proces op te nemen - interactie en begrip tussen de deelnemers aan het proces zijn belangrijk.<\/p><\/blockquote>\n<p><\/p>\n<h3>Mensen zijn belangrijker dan tools.<\/h3>\n<p>\nVaak begint de planning van een veilig ontwikkelingsproces met de keuze en aankoop van een tool, en eindigt het met pogingen om de tool in het huidige proces te integreren, die slechts pogingen blijven. Dit leidt tot teleurstellende resultaten, omdat elke tool zijn eigen kenmerken en beperkingen heeft.<\/p>\n<p>Een vaak voorkomend geval is wanneer de beveiligingsafdeling een goede, dure tool heeft gekozen met uitgebreide mogelijkheden en deze aan de ontwikkelaars komt voorleggen - om in het proces te integreren. Maar het werkt niet - het proces is zo ingericht dat de beperkingen van de al gekochte tool niet passen binnen de huidige paradigma.<\/p>\n<blockquote><p>Beschrijf eerst welk resultaat je wilt en hoe het proces eruit zal zien. Dit helpt om de rol van de tool en beveiliging in het proces te begrijpen.<\/p><\/blockquote>\n<p><\/p>\n<h3>Begin met wat al gebruikt wordt.<\/h3>\n<p>\nVoordat je dure tools koopt, kijk naar wat je al hebt. Iedere organisatie heeft beveiligingsvereisten die aan de ontwikkeling worden gesteld, er zijn controles, pentests - waarom niet alles omzetten naar een begrijpelijke en gebruiksvriendelijke vorm?<\/p>\n<p>Meestal zijn de vereisten een papieren rommel die op een plank ligt. Er was een geval waarin we naar een bedrijf gingen om de processen te bekijken en vroegen om de beveiligingsvereisten voor software te laten zien. De specialist die hiermee bezig was, zocht lang:<\/p>\n<p><i>\u2014 Even kijken, er was ergens in mijn notities een pad naar dit document.<\/i><\/p>\n<p>Uiteindelijk hebben we het document na een week ontvangen.<\/p>\n<p>Voor vereisten, controles en dergelijke, maak een pagina, bijvoorbeeld op\u00a0<b>Confluence<\/b>\u00a0\u2014 dit is handig voor iedereen.<\/p>\n<blockquote><p>Het is eenvoudiger om te herstructureren wat al bestaat en dit als uitgangspunt te gebruiken.<\/p><\/blockquote>\n<p><\/p>\n<h3>Gebruik Security Champions. <\/h3>\n<p>\nGewoonlijk werkt in een gemiddeld bedrijf met 100-200 ontwikkelaars \u00e9\u00e9n beveiligingsspecialist die meerdere functies vervult en fysiek niet in staat is om alles te controleren. Zelfs als hij zijn best doet, kan hij niet de hele code controleren die de ontwikkeling genereert. Voor dergelijke gevallen is het concept ontwikkeld van de <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 zijn mensen binnen het ontwikkelingsteam die betrokken zijn bij de veiligheid van uw product.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/c67728db4a6e34407da199387eba2bb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSecurity Champion is het aanspreekpunt binnen het ontwikkelingsteam en de evangelist voor veiligheid in \u00e9\u00e9n persoon.<\/p>\n<p>Normaal gesproken, wanneer een beveiligingsspecialist het ontwikkelingsteam binnenkomt en een fout in de code aanwijst, krijgt hij vaak een verraste reactie:<\/p>\n<p><i>\u2014 Wie ben jij? Ik zie je hier voor het eerst. Met mij gaat alles goed - mijn senior collega heeft een 'apply' gezet tijdens de code review, we gaan verder!<\/i><\/p>\n<p>Dit is een typische situatie, omdat er veel meer vertrouwen is in senioren of gewoon collega's waarmee de ontwikkelaar regelmatig samenwerkt en die betrokken zijn bij de code review. Als in plaats van de beveiligingsspecialist een Security Champion de fout en de gevolgen aanwijst, zal zijn uitspraak zwaarder wegen.<\/p>\n<p>Ook weten ontwikkelaars hun code beter dan elke beveiligingsspecialist. Voor iemand die minimaal 5 projecten in een statische analysetool heeft, is het meestal moeilijk om alle nuances te onthouden. Security Champions kennen hun product: wat met wat interacteert en waar ze als eerst op moeten letten - ze zijn effectiever.<\/p>\n<p>Dus denk erover na om Security Champions in te voeren en de invloed van het beveiligingsteam uit te breiden. Voor de Champion zelf is dit ook voordelig: professionele ontwikkeling in een nieuw gebied, verbreding van technische kennis, verbetering van technische, management- en leiderschapsvaardigheden, en verhoging van de marktwaarde. Het is een soort sociale engineering, uw 'ogen' in het ontwikkelingsteam.<\/p>\n<h2>Testfasen<\/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\">De 20 op 80-paradigma<\/a><\/noindex>\u00a0zegt dat 20% van de inspanningen 80% van het resultaat oplevert. Deze 20% zijn de analysemethoden voor applicaties die geautomatiseerd kunnen en moeten worden. Voorbeelden van dergelijke activiteiten zijn statische analyse - <b>SAST<\/b>, dynamische analyse - <b>DAST,<\/b> en\u00a0<b>beheersing van Open Source<\/b>. Ik zal meer vertellen over de activiteiten, evenals over de tools, met welke bijzonderheden we meestal worden geconfronteerd bij hun implementatie in het proces, en hoe we dit goed kunnen doen.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/db720e0879cdd1ed818461ffb5f927da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Belangrijkste problemen van de tools<\/h3>\n<p>\nIk zal de huidige problemen die voor alle tools relevant zijn, uitlichten die aandacht vereisen. Ik zal ze uitgebreider bespreken om herhaling te voorkomen.<\/p>\n<p><b>Langdurige analyse. <\/b>Als er 30 minuten van commit tot productielancering verstrijken voor alle tests en de build, dan zullen de controles op informatiebeveiliging een dag duren. Niemand wil dat het proces wordt vertraagd. Houd rekening met deze eigenschap en trek conclusies.<\/p>\n<p><b>Hoge mate van False Negative of False Positive. <\/b>Alle producten zijn verschillend, ze gebruiken verschillende frameworks en hebben hun eigen stijl van coderen. Op verschillende codebases en technologie\u00ebn kunnen de tools verschillende niveaus van False Negative en False Positive vertonen. Kijk daarom naar wat specifiek in de\u00a0<b>uw<\/b> bedrijf en voor <b>uw<\/b> applicaties goede en betrouwbare resultaten zal opleveren.<\/p>\n<p><b>Geen integraties met bestaande tools<\/b>. Kijk naar de tools vanuit het perspectief van integraties, met wat u al gebruikt. Bijvoorbeeld, als u Jenkins of TeamCity heeft, controleer dan de integratie van de tools specifiek met deze software, en niet met GitLab CI, dat u niet gebruikt.<\/p>\n<p><b>Afwezigheid of overmatige complexiteit van maatwerk. <\/b>Als een tool geen API heeft, waarom zou hij dan nodig zijn? Alles wat in de interface kan worden gedaan, moet ook via de API toegankelijk zijn. Idealiter zou de tool de mogelijkheid moeten hebben om controles aan te passen.<\/p>\n<p><b>Geen productontwikkelingsroadmap. <\/b>De ontwikkeling staat niet stil, we gebruiken altijd nieuwe frameworks en functies, en herschrijven oude code naar nieuwe talen. We willen er zeker van zijn dat de tool die we kopen nieuwe frameworks en technologie\u00ebn zal ondersteunen. Daarom is het belangrijk te weten dat het product een echte en juiste <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> ontwikkeling heeft.<\/p>\n<h3>Kenmerken van het proces<\/h3>\n<p>\nNaast de kenmerken van de tools, houd ook rekening met de kenmerken van het ontwikkelingsproces. Verbetering van de ontwikkeling is bijvoorbeeld een typische fout. Laten we kijken naar welke andere kenmerken in overweging moeten worden genomen en waar het beveiligingsteam op moet letten.<\/p>\n<p>Om vertragingen in de ontwikkeling en release te voorkomen, cre\u00eber <b>verschillende regels<\/b> en verschillende <b>show stoppers\u00a0<\/b>\u2014 criteria voor het stoppen van het bouwproces bij de aanwezigheid van kwetsbaarheden \u2014 <b>voor verschillende omgevingen.<\/b>Bijvoorbeeld, we begrijpen dat de huidige tak naar de ontwikkelstand of UAT gaat, wat betekent dat we niet stoppen en niet zeggen:<\/p>\n<p><i>\u2014 U heeft hier kwetsbaarheden, u gaat niet verder!<\/i><\/p>\n<p>In deze fase is het belangrijk om de ontwikkelaars te informeren dat er beveiligingsproblemen zijn waarop ze moeten letten.<\/p>\n<p><b>Kwetsbaarheden zijn geen belemmering voor verder testen<\/b>: handmatig, integratie of manueel. Aan de andere kant moeten we de beveiliging van het product op een of andere manier verbeteren, zodat ontwikkelaars niet vergeten wat de beveiliging ontdekt. Daarom handelen we soms als volgt: op de stand, wanneer het wordt uitgerold naar de ontwikkelomgeving, informeren we de ontwikkeling gewoon:<\/p>\n<p><i>\u2014 Jongens, jullie hebben problemen, let alsjeblieft op.<\/i><\/p>\n<p>In de UAT-fase tonen we opnieuw waarschuwingen over kwetsbaarheden, en in de releasefase zeggen we:<\/p>\n<p><i>\u2014 Jongens, we hebben jullie meerdere keren gewaarschuwd, jullie hebben niets gedaan \u2014 hier laten we jullie niet mee doorgaan.<\/i><\/p>\n<p>Als we het over code en dynamiek hebben, is het nodig om kwetsbaarheden alleen te tonen en te waarschuwen voor de functies en code die net in deze functie zijn geschreven. Als een ontwikkelaar een knop met 3 pixels heeft verplaatst en we hem vertellen dat er een SQL-injectie is en dat hij het snel moet oplossen \u2014 dat is niet juist. Kijk alleen naar wat er nu is geschreven en naar de wijziging die in de applicatie komt.<\/p>\n<p>Stel dat we een bepaalde functionele fout hebben - iets wat de applicatie niet zou moeten doen: geld wordt niet overgemaakt, bij het klikken op de knop wordt er niet doorgeschakeld naar de volgende pagina of wordt het product niet geladen. <b>Beveiligingsdefecten<\/b>\u00a0\u2014 dat zijn dezelfde defecten, maar dan niet vanuit het perspectief van de werking van de applicatie, maar van de beveiliging. <\/p>\n<blockquote><p>Niet alle softwarekwaliteitsproblemen zijn beveiligingsproblemen. Maar alle beveiligingsproblemen hangen samen met softwarekwaliteit. Sherif Mansour, Expedia.<\/p><\/blockquote>\n<p>\nAangezien alle kwetsbaarheden dezelfde defecten zijn, moeten ze zich daar bevinden waar alle ontwikkelingsdefecten zich bevinden. Vergeet daarom rapporten en enge PDF's die niemand leest.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/e54e64658a3882bdc68a48c6ef426746.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nToen ik bij een ontwikkelingsbedrijf werkte, kreeg ik een rapport uit statische analysetools. Ik opende het, schrok, zette koffie, bladerde door 350 pagina's, sloot het en ging verder met werken. <b>Grote rapporten zijn dode rapporten<\/b>. Gewoonlijk gaan ze nergens heen, worden e-mails verwijderd, vergeten, verloren of zegt de business dat ze risico's aanvaarden.<\/p>\n<p>Wat te doen? Gecertificeerde defecten die zijn gevonden, zetten we om in een ontwikkelingsvriendelijke weergave, bijvoorbeeld door ze in de backlog van Jira te plaatsen. We prioriteren de defecten en verhelpen ze op volgorde van prioriteit, samen met functionele defecten en testdefecten.<\/p>\n<h2>Statische analyse - SAST<\/h2>\n<p>\n<b>Dit is een code-analyse op kwetsbaarheden<\/b>, maar dit is niet hetzelfde als SonarQube. We controleren niet alleen op patronen of stijl. Bij de analyse worden verschillende benaderingen toegepast: op basis van een kwetsbaarhedenboom, op\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>, op de analyse van configuratiebestanden. Dit betreft alles wat direct met de code te maken heeft.<\/p>\n<p><b>Voordelen van de aanpak<\/b>: <b>identificatie van kwetsbaarheden in de code in een vroeg stadium van de ontwikkeling<\/b>, wanneer er nog geen omgevingen en gereed gereedschap zijn, en<b>\u00a0de mogelijkheid voor incrementele scans<\/b>: het scannen van het deel van de code dat is gewijzigd, en alleen die functie die we nu aan het maken zijn, wat de scan tijd vermindert.<\/p>\n<p><b>Nadelen<\/b>\u00a0\u2014 is het ontbreken van ondersteuning voor noodzakelijke talen.<\/p>\n<p><b>Nodige integraties, <\/b>die volgens mijn subjectieve mening aanwezig moeten zijn in de tools:<\/p>\n<ul>\n<li>Integratietools: Jenkins, TeamCity en GitLab CI.\n<\/li>\n<li>Ontwikkelomgeving: IntelliJ IDEA, Visual Studio. Het is voor de ontwikkelaar handiger om niet door een onduidelijke interface te moeten navigeren die ze ook nog eens moeten onthouden, maar gewoon op hun werkplek in hun eigen ontwikkelomgeving alle noodzakelijke integraties en kwetsbaarheden te zien die ze hebben gevonden.\n<\/li>\n<li>Code review: SonarQube en handmatige review.\n<\/li>\n<li>Defect trackers: Jira en Bugzilla.\n<\/li>\n<\/ul>\n<p>\nDe afbeelding toont enkele van de beste vertegenwoordigers van statische analyse.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/bab3420874ac090d4d107edb0d2b857b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHet zijn niet de tools die belangrijk zijn, maar het proces, daarom zijn er Open Source oplossingen die ook goed zijn voor het testen van het proces.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/4f2c278922c291b15922bc5748f87dc3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSAST Open Source zal niet een enorm aantal kwetsbaarheden of complexe DataFlow vinden, maar ze kunnen en moeten gebruikt worden bij het opbouwen van het proces. Ze helpen bij het begrijpen van hoe het proces zal worden opgezet, wie verantwoordelijk is voor bugs, wie rapporteert en wie verantwoordt. Als je de eerste fase van de beveiliging van je code wilt starten - gebruik dan Open Source oplossingen.<\/p>\n<p>Hoe kan dit worden ge\u00efntegreerd als je net begint, als je niets hebt: geen CI, geen Jenkins, geen TeamCity? Laten we de integraties in het proces bekijken.<\/p>\n<h3>Integratie op CVS-niveau<\/h3>\n<p>\nAls je Bitbucket of GitLab hebt, kun je integratie op <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/CVS\">Concurrent Versions System<\/a><\/noindex>.<\/p>\n<p><b>Op basis van gebeurtenissen<\/b>\u00a0\u2014 pull request, commit. U scan de code en toont in de status van de build of de beveiligingscontrole is geslaagd of niet.<\/p>\n<p><b>Terugkoppeling. <\/b>Zeker, terugkoppeling is altijd nodig. Als je gewoon iets aan de kant van de beveiliging hebt uitgevoerd, het in een doos hebt gestopt en er verder niks over hebt verteld, en daarna aan het einde van de maand een hoop bugs eruit gooit, is dat niet goed.<\/p>\n<h3>Integratie met het code review systeem<\/h3>\n<p>\nEens hebben we in een aantal belangrijke projecten de technische gebruiker AppSec als default reviewer ingesteld. Afhankelijk van of er fouten in de nieuwe code zijn gevonden of niet, markeert de reviewer op de pull request de status als 'accept' of 'need work' \u2014 of alles is OK of er moet nog wat aan worden gedaan, met links naar wat precies moet worden aangepast. Voor de integratie met de versie die in productie gaat, hebben we merge verboden als de beveiligingstest niet is doorstaan. We hebben dit opgenomen in de handmatige code review, en de andere betrokkenen in het proces zagen de beveiligingsstatussen specifiek voor dit proces.<\/p>\n<h3>Integratie met SonarQube<\/h3>\n<p>\nVelen hebben <noindex><a rel=\"nofollow\" href=\"https:\/\/de.wikipedia.org\/wiki\/Quality_Gate\">quality gate<\/a><\/noindex> voor codekwaliteit. Hier is het precies hetzelfde - je kunt dezelfde gates maken, alleen voor SAST-tools. Het zal dezelfde interface zijn, dezelfde quality gate, alleen zal het <b>security gate<\/b>heten. En ook als je een proces hebt ingesteld met SonarQube, kun je alles daar eenvoudig integreren.<\/p>\n<h3>Integratie op CI-niveau<\/h3>\n<p>\nHier is alles ook vrij eenvoudig:<\/p>\n<ul>\n<li><b>Op hetzelfde niveau als de autotests<\/b>, unit tests.\n<\/li>\n<li><b>Opsplitsing in fasen van ontwikkeling<\/b>: dev, test, prod. Verschillende sets regels kunnen worden ingeschakeld, of verschillende fail conditions: stoppen we de build, stoppen we de build niet.\n<\/li>\n<li><b>Synchronisering\/asynchronisatie van de uitvoering<\/b>. We wachten op de uitkomst van de beveiligingstests of we wachten niet. Dat wil zeggen, we hebben ze gewoon gestart en gaan verder, en later krijgen we de status dat alles goed of slecht is.\n<\/li>\n<\/ul>\n<p>\nDit alles in een ideale rozenwereld. In het echte leven bestaat dat niet, maar we streven ernaar. De resultaten van beveiligingscontroles moeten vergelijkbaar zijn met de resultaten van unit tests.<\/p>\n<p>Bijvoorbeeld, we hebben een groot project genomen en besloten dat we het nu met SAST gaan scannen - OK. We hebben dit project in SAST gestopt, het gaf ons 20.000 kwetsbaarheden en met een wilskrachtige beslissing hebben we aangenomen dat alles goed was. 20.000 kwetsbaarheden zijn onze technische schuld. We stoppen de schuld in een doos, we zullen het langzaam afhandelen en bugs in defecttrackers registreren. We huren een bedrijf in, doen het zelf of onze Security Champions helpen ons - en de technische schuld zal verminderen.<\/p>\n<p>En alle nieuwe kwetsbaarheden in de nieuwe code moeten net zo snel worden opgelost als fouten in unit- of autotests. Stelselmatig gezegd, de build is gestart, we hebben getest, er zijn twee tests mislukt en twee beveiligingstests. OK - we hebben gekeken wat er is gebeurd, het een opgelost, het ander opgelost, de volgende keer uitgevoerd - alles is goed, er zijn geen nieuwe kwetsbaarheden verschenen, tests zijn niet mislukt. Als deze taak dieper gaat en we moeten het goed begrijpen, of als het oplossen van kwetsbaarheden grote delen van wat onder de motorkap zit raakt: we registreren een bug in de defecttracker, deze wordt geprioriteerd en opgelost. Helaas is de wereld niet perfect en soms falen tests.<\/p>\n<p>Een voorbeeld van een security gate - analoog aan een quality gate, op basis van het aantal en de aanwezigheid van kwetsbaarheden in de code.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/eb30d3c7988b28c2cb25e9656871ec96.png\" style=\"display:block;margin: 0 auto;\" \/>We integreren met SonarQube - de plugin wordt ge\u00efnstalleerd, alles is erg handig en geweldig.<\/p>\n<h3>Integratie met de ontwikkelomgeving<\/h3>\n<p>\n<b>Integratiemogelijkheden:<\/b><\/p>\n<ul>\n<li>Scannen vanuit de ontwikkelomgeving nog voor de commit.\n<\/li>\n<li>Resultaten bekijken.\n<\/li>\n<li>Resultaten analyseren.\n<\/li>\n<li>Synchronisatie met de server.\n<\/li>\n<\/ul>\n<p>\nZo ziet het eruit wanneer we resultaten van de server ontvangen.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/270d4af76fddc0ceebca908c7d3835b8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn onze ontwikkelomgeving <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/idea\/\">Intellij IDEA<\/a><\/noindex> verschijnt eenvoudig een extra punt dat aangeeft dat tijdens het scannen dergelijke kwetsbaarheden zijn ontdekt. Je kunt de code meteen corrigeren, aanbevelingen bekijken en\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_graph\">Flow Graph<\/a><\/noindex>. Dit alles is op de werkplek van de ontwikkelaar geplaatst, wat erg handig is - je hoeft niet naar andere links te gaan en iets extra's te bekijken.<\/p>\n<h2>Open Source<\/h2>\n<p>\nDit is mijn favoriete onderwerp. Iedereen gebruikt Open Source-bibliotheken - waarom een hoop slechte oplossingen en fietsen maken als je een kant-en-klare bibliotheek kunt gebruiken waarin alles al is ge\u00efmplementeerd?<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/05b9cd5a8b269af2a3f59931a0774778.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDat klopt, maar bibliotheken worden ook door mensen geschreven, ze brengen bepaalde risico's met zich mee en bevatten kwetsbaarheden waarover soms, of voortdurend, wordt gerapporteerd. Daarom is de volgende stap in Application Security de analyse van open-source componenten.<\/p>\n<h3>Analyse Open Source - OSA<\/h3>\n<p>\nHet instrument omvat drie grote fasen.<\/p>\n<p><b>Zoeken naar kwetsbaarheden in bibliotheken. <\/b>Bijvoorbeeld, het instrument weet dat we een bepaalde bibliotheek gebruiken en dat in\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Common_Vulnerabilities_and_Exposures\">CVE<\/a><\/noindex> of in bugtrackers er bepaalde kwetsbaarheden zijn die betrekking hebben op deze versie van de bibliotheek. Bij het gebruik hiervan zal het instrument een waarschuwing geven dat de bibliotheek kwetsbaar is, en adviseren om een andere versie te gebruiken waarin geen kwetsbaarheden zijn.<\/p>\n<p><b>Analyse van licentiecompliance. <\/b>Dit is nog niet bijzonder populair bij ons, maar als je internationaal werkt, kun je daar soms in de problemen komen voor het gebruik van een open-source component dat je niet mag gebruiken of wijzigen. Volgens het licentiebeleid van de bibliotheek kunnen we dit niet doen. Of, als we het hebben gewijzigd en gebruiken, moeten we onze code publiceren. Natuurlijk wil niemand de code van zijn producten delen, maar daar kunnen we ons ook tegen beschermen.<\/p>\n<p><b>Analyse van componenten die in de industrie worden gebruikt. <\/b>Stel je een hypothetische situatie voor: we hebben eindelijk de ontwikkeling voltooid en de laatste release van onze microservice uitgebracht. Het functioneert daar geweldig - een week, een maand, een jaar. We verzamelen het niet, voeren geen beveiligingscontroles uit, alles lijkt goed. Maar plotseling, twee weken na de release, blijkt er een kritieke kwetsbaarheid te zijn in de open-source component die we precies in deze build gebruiken, in de productomgeving. Als we niet bijhouden wat en waar we gebruiken, zullen we deze kwetsbaarheid gewoon niet zien. In sommige instrumenten zijn er mogelijkheden voor het monitoren van kwetsbaarheden in de bibliotheken die momenteel in productie worden gebruikt. Dit is zeer nuttig.<\/p>\n<p><b>Mogelijkheden:<\/b><\/p>\n<ul>\n<li>Verschillende beleidslijnen voor verschillende fasen van ontwikkeling.\n<\/li>\n<li>Monitoring van componenten in de industrie.\n<\/li>\n<li>Controle van bibliotheken binnen de organisatie.\n<\/li>\n<li>Ondersteuning voor verschillende build-systemen en talen.\n<\/li>\n<li>Analyse van Docker-afbeeldingen.\n<\/li>\n<\/ul>\n<p>\nEnkele voorbeelden van leiders in het veld die zich bezighouden met open-source analyse.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/f1b05f86beb4a64f9bf3443963e3603b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDe enige gratis optie hiervan is <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/OWASP_Dependency_Check\">Dependency-Check<\/a><\/noindex> van OWASP. Je kunt het in de vroege stadia inschakelen om te zien hoe het werkt en wat het ondersteunt. Dit zijn voornamelijk cloudproducten of on-premise, maar hun basisgegevens worden toch naar het internet verzonden. Ze sturen niet jouw bibliotheken, maar hashes of hun berekende waarden en fingerprints naar hun server om meldingen over kwetsbaarheden te ontvangen.<\/p>\n<h3>Integratie in het proces<\/h3>\n<p>\n<b>Controle van bibliotheken binnen de perimeter<\/b>, die worden gedownload uit externe bronnen. We hebben externe en interne repositories. Bijvoorbeeld, binnen Event Central hebben we Nexus, en we willen dat er binnen onze repository geen kwetsbaarheden met de status 'kritisch' of 'hoog' zijn. Proxymogelijkheden kunnen zo worden ingesteld met de Nexus Firewall Lifecycle-tool, zodat dergelijke kwetsbaarheden worden afgeschermd en niet in de interne repository komen.<\/p>\n<p><b>Integratie in CI<\/b>. Op hetzelfde niveau als geautomatiseerde tests, unit tests en fasering van de ontwikkeling: dev, test, prod. In elke fase kunnen verschillende bibliotheken worden gedownload en kan alles worden gebruikt, maar als er iets met een strikte status 'kritisch' aanwezig is, is het misschien de moeite waard om hier de aandacht van ontwikkelaars op te vestigen bij de release naar productie.<\/p>\n<p><b>Integratie met artifact repositories<\/b>: Nexus en JFrog.<\/p>\n<p><b>Integratie in de ontwikkelomgeving. <\/b>De tools die je kiest, moeten integratie hebben met ontwikkelomgevingen. De ontwikkelaar moet vanuit zijn werkplek toegang hebben tot de scanresultaten, of de mogelijkheid hebben om zelf te scannen en de code op kwetsbaarheden te controleren v\u00f3\u00f3r commit in CVS.<\/p>\n<p><b>Integratie in CD. <\/b>Dit is een geweldige functie die ik heel leuk vind en waarover ik eerder heb gesproken - monitoring van nieuwe kwetsbaarheden in de productieomgeving. Dit werkt ongeveer als volgt.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/605c638df343db5c47ab36b4dc00f41c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWe hebben <b>Openbare component repositories<\/b>\u00a0\u2014 enkele tools van buitenaf en onze interne repository. We willen alleen vertrouwde componenten daarin. Bij het proxy\u00ebren van een aanvraag controleren we of de gedownloade bibliotheek geen kwetsbaarheden heeft. Als deze onder bepaalde beleid valt, die we vaststellen en verplicht met de ontwikkeling afstemmen, wordt deze niet gedownload en komt er een melding om een andere versie te gebruiken. Dienovereenkomstig, als er iets echt kritisch en slecht in de bibliotheek zit, krijgt de ontwikkelaar deze tijdens de installatie niet \u2014 hij moet een hogere of lagere versie gebruiken.<\/p>\n<ul>\n<li>Bij de build controleren we of niemand iets kwaads heeft toegevoegd, of alle componenten veilig zijn en niemand gevaarlijke dingen op een USB-stick heeft meegenomen.\n<\/li>\n<li>In onze repository hebben we alleen vertrouwde componenten. \n<\/li>\n<li>Bij de deployment controleren we nogmaals precies het pakket: war, jar, DL of Docker-image of het aan het beleid voldoet. \n<\/li>\n<li>Bij de release in productie monitoren we wat er in de productieomgeving gebeurt: verschijnen er kritieke kwetsbaarheden of niet.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Dynamische analyse \u2014 DAST<\/h2>\n<p>\nDynamische analysetools verschillen van alles wat hiervoor is gezegd. Het is een soort simulatie van hoe een gebruiker met de applicatie werkt. Als het een webapplicatie is, sturen we aanvragen, simuleren het werk van de klant, klikken op knoppen aan de voorkant en sturen kunstmatige gegevens vanuit het formulier: aanhalingstekens, haakjes, symbolen in verschillende encoderingen, om te zien hoe de applicatie werkt en externe gegevens verwerkt.<\/p>\n<p>Dit systeem maakt het ook mogelijk om templatekwetsbaarheden in Open Source te controleren. Aangezien DAST niet weet welke Open Source we gebruiken, gooit het gewoon 'kwaadaardige' patronen en analyseert het de serverantwoorden:<\/p>\n<p><i>\u2014 Aha, hier is een deserialisatieprobleem, en hier is er geen.<\/i><\/p>\n<p>Hierin zijn grote risico's, want als je deze veiligheidstest uitvoert op dezelfde stand die de testers gebruiken \u2014 kunnen er onaangename dingen gebeuren.<\/p>\n<ul>\n<li>Hoge belasting op de netwerksysteem van de applicatie.\n<\/li>\n<li>Geen integraties.\n<\/li>\n<li>Mogelijkheid om de instellingen van de geanalyseerde toepassing te wijzigen.\n<\/li>\n<li>Geen ondersteuning voor benodigde technologie\u00ebn.\n<\/li>\n<li>Complexiteit van de configuratie.\n<\/li>\n<\/ul>\n<p>\nWij hadden een situatie waarin we uiteindelijk AppScan konden lanceren: we hebben lang geprobeerd toegang te krijgen tot de applicatie, kregen 3 accounts en waren blij - eindelijk kunnen we alles controleren! We startten de scan, en het eerste wat AppScan deed, was in het admin-paneel duiken, op alle knoppen drukken, de helft van de gegevens veranderen en uiteindelijk de server volledig om zeep helpen. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mailform.io\/\">mailform<\/a><\/noindex>-verzoeken. De ontwikkeling met testen zei:<\/p>\n<p><i>\u2014 Jongens, maken jullie een grap?! We hebben jullie accounts gegeven, en jullie hebben de stand platgelegd!<\/i><\/p>\n<p>Houd rekening met mogelijke risico's. Idealiter moet je een aparte stand voor IB-testen voorbereiden, die op de een of andere manier van de rest van de omgeving is ge\u00efsoleerd, en het is raadzaam de admin-pagina in handmatige modus te controleren. Dit is een pentest - die resterende procenten inspanning die we nu niet beschouwen. <\/p>\n<p>Het is belangrijk om te bedenken dat je dit kunt gebruiken als een alternatief voor belastingstests. In de eerste fase kun je een dynamische scanner inschakelen met 10-15 threads en kijken wat eruit komt, maar meestal, zoals de praktijk aantoont, komt er niets goeds uit.<\/p>\n<p>Enkele bronnen die we normaal gebruiken.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/45a25dbe2a2d053e6ed16d31b6ac53ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHet is de moeite waard om te benadrukken <noindex><a rel=\"nofollow\" href=\"https:\/\/portswigger.net\/burp\">Burp Suite<\/a><\/noindex>\u00a0\u2014 dat is de 'Zwitsers zakmes' voor iedere beveiligingsspecialist. Iedereen gebruikt het, en het is zeer gebruiksvriendelijk. Onlangs is er een nieuwe demo-versie van de enterprise edition uitgebracht. Vroeger was het gewoon een standalone tool met plugins, maar nu maken de ontwikkelaars eindelijk een grote server waarmee je meerdere agenten kunt beheren. Dat is geweldig, ik raad aan het te proberen.<\/p>\n<h3>Integratie in het proces<\/h3>\n<p>\nDe integratie verloopt behoorlijk goed en eenvoudig: <b>de scan starten na een succesvolle installatie <\/b>van de applicatie op de stand en\u00a0<b>scannen na succesvolle integratietests<\/b>.<\/p>\n<p>Als de integraties niet werken of als er placeholders en mock-functies zijn, is dit zinloos en nutteloos - welke patroon we ook verzenden, de server zal altijd op dezelfde manier reageren.<\/p>\n<ul>\n<li>Ideaal is een aparte stand voor testen.\n<\/li>\n<li>Houd een logboek van de inlogvolgorde voordat je met testen begint.\n<\/li>\n<li>Systeemadministratie testen - alleen handmatig.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Proces<\/h2>\n<p>\nEen beetje algemeen over het proces in het algemeen en over het werk van elk instrument, in het bijzonder. Alle applicaties zijn anders - de ene werkt beter met dynamische analyse, de andere met statische, de derde analyseert OpenSource, pentests of iets totaal anders, zoals events met.\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Waf\">Waf<\/a><\/noindex>.<\/p>\n<blockquote><p>Elke proces heeft controle nodig.<\/p><\/blockquote>\n<p>\nOm te begrijpen hoe het proces werkt en waar het kan worden verbeterd, is het nodig om metrics te verzamelen van alles wat binnen handbereik is, inclusief productie-metrics, metrics van tools en uit defect-trackers.<\/p>\n<p>Alle gegevens zijn nuttig. We moeten vanuit verschillende perspectieven kijken naar waar bepaalde tools beter worden toegepast en waar het proces specifiek tekortschiet. Misschien is het de moeite waard om de responstijd van de ontwikkeling te bekijken om te begrijpen waar het proces kan worden verbeterd op basis van de tijd. Hoe meer gegevens, hoe meer perspectieven kunnen worden gebouwd van hoog niveau tot de details van elk proces.<\/p>\n<p><img decoding=\"async\" alt=\"Angst en haat voor DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/93e079b19c4c8189ce6ca4eaec186eed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOmdat elke statische en dynamische analyzer zijn eigen API, zijn eigen manieren van starten en principes heeft, waarbij sommigen planners hebben en anderen niet, ontwikkelen we een tool. <b>AppSec Orchestrator<\/b>, die een enkele toegangspunt in het hele proces van het product biedt en het vanuit \u00e9\u00e9n punt kan beheren.<\/p>\n<p>Voor managers, ontwikkelaars en security-engineers is er een toegangspunt vanuit waar ze kunnen zien wat er is gestart, configureren en scans starten, scanresultaten ontvangen en eisen indienen. We proberen af te stappen van papierwerk en alles om te zetten in menselijke taal die door de ontwikkeling wordt gebruikt \u2013 pagina's op Confluence met status en metrics, defecten in Jira of in verschillende defect-trackers, of integratie in een synchrone\/asynchrone CI\/CD-proces.<\/p>\n<h2>Belangrijkste punten<\/h2>\n<p>\n<b>Tools zijn niet het belangrijkste.<\/b> Denk eerst na over het proces \u2013 pas dan implementeren van tools. Tools zijn goed, maar duur, dus het is mogelijk om met het proces te beginnen en de samenwerking en het begrip tussen ontwikkeling en veiligheid te verbeteren. Vanuit het perspectief van veiligheid hoeft niet alles abrupt te worden gestopt; vanuit het perspectief van de ontwikkeling, als er iets hoogmega super kritisch is, moet dit worden aangepakt en niet op het probleem worden geblinddoekt.<\/p>\n<p><b>Productkwaliteit<\/b>\u00a0<b>is het gezamenlijke doel<\/b> voor zowel veiligheid als ontwikkeling. We doen hetzelfde, proberen ervoor te zorgen dat alles goed werkt en er geen reputatierisico's of financi\u00eble verliezen zijn. Daarom bevorderen we de benadering van DevSecOps, SecDevOps om de communicatie te verbeteren en een kwalitatief beter product te maken.<\/p>\n<p><b>Begin met wat er al is.<\/b>: vereisten, architectuur, gedeeltelijke controles, trainingen, richtlijnen. Pas niet meteen alle praktijken toe op alle projecten \u2014 <b>beweeg iteratief<\/b>. Er is geen uniforme standaard \u2014 <b>experimenteer<\/b> en probeer verschillende benaderingen en oplossingen.<\/p>\n<p><b>Tussen de tekortkomingen van informatiebeveiliging en functionele tekortkomingen is er een gelijkteken<\/b>.<\/p>\n<p><b>Automatiseer alles<\/b>, wat beweegt. Alles wat niet beweegt \u2014 laat het bewegen en automatiseer het. Als iets handmatig wordt gedaan, is dat geen goed gedeelte van het proces. Misschien is het de moeite waard om het te herzien en ook te automatiseren.<\/p>\n<p>Als de grootte van het cybersecurityteam klein is \u2014 <b>gebruik Security Champions<\/b>.<\/p>\n<p>Misschien past wat ik heb verteld niet bij u en bedenkt u zelf iets \u2014 en dat is goed. Maar\u00a0<b>kiest u de tools op basis van de vereisten voor uw specifieke proces<\/b>. Kijk niet naar wat de community zegt, dat deze tool slecht is en die goed. Misschien gebeurt het tegenovergestelde voor uw product.<\/p>\n<p><b>Vereisten voor tools.<\/b><\/p>\n<ul>\n<li>Lage mate van False Positive.\n<\/li>\n<li>Redelijke analysetijd.\n<\/li>\n<li>Gebruiksgemak.\n<\/li>\n<li>Beschikbaarheid van integraties.\n<\/li>\n<li>Begrip van de roadmap voor productontwikkeling.\n<\/li>\n<li>Mogelijkheid tot maatwerk van tools.\n<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p>De presentatie van Yuri werd gekozen als een van de beste op DevOpsConf 2018. Om nog meer interessante idee\u00ebn en praktische casestudy's te leren kennen, komt u op 27 en 28 mei naar Skolkovo tijdens\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow-rit\/2019\">DevOpsConf<\/a><\/noindex> binnen <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2019\">het festival RIT++<\/a><\/noindex>. En nog beter, als u uw ervaring wilt delen, dan <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-rit\">dien uw aanvraag in<\/a><\/noindex> voor de presentatie tot 21 april.<\/p><\/blockquote>\n<p>Bron: <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.3 - 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\/nl\/blog\/administrirovanie\/strah-i-nenavist-devsecops\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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 en haat in DevSecOps | ProHoster","description":"We hadden 2 code-analyzers, 4 tools voor dynamisch testen, onze eigen creaties en 250 scripts.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/strah-i-nenavist-devsecops","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/31852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=31852"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/31852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/23720"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=31852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=31852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=31852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}