{"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\/sv\/blog\/administrirovanie\/strah-i-nenavist-devsecops","title":{"rendered":"R\u00e4dsla och hat DevSecOps","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Vi hade 2 kodanalysatorer, 4 verktyg f\u00f6r dynamisk testning, egna skapelser och 250 skript. Inte s\u00e5 att allt detta var n\u00f6dv\u00e4ndigt i den nuvarande processen, men eftersom jag b\u00f6rjade implementera DevSecOps, s\u00e5 m\u00e5ste man g\u00e5 hela v\u00e4gen.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat 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\">K\u00e4lla<\/a><\/noindex>. Karakt\u00e4rernas skapare: Justin Roiland och Dan Harmon.<\/i><\/p>\n<p>Vad \u00e4r SecDevOps? Och DevSecOps? Vad \u00e4r skillnaderna? Applikationss\u00e4kerhet \u2013 vad handlar det om? Varf\u00f6r fungerar den klassiska metoden inte l\u00e4ngre? P\u00e5 alla dessa fr\u00e5gor har svaret. <b>Jurij Shabalin<\/b> fr\u00e5n\u00a0<b>Swordfish Security. <\/b>Jurij kommer grundligt att svara p\u00e5 allt och g\u00e5 igenom problemen med \u00f6verg\u00e5ngen fr\u00e5n den klassiska modellen f\u00f6r applikationss\u00e4kerhet till DevSecOps-processen: hur man r\u00e4tt ska g\u00e5 tillv\u00e4ga f\u00f6r att integrera processen f\u00f6r s\u00e4ker utveckling i DevOps-processen utan att bryta n\u00e5got, hur man g\u00e5r igenom huvudsakliga faser av s\u00e4kerhetstestning, vilka verktyg som kan anv\u00e4ndas, hur de skiljer sig och hur man korrekt konfigurerar dem f\u00f6r att undvika fallgropar.<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=\"Spela video\" 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>Om talaren:<\/b> <b>Jurij Shabalin \u2013 <\/b>Chief Security Architect p\u00e5 <b>Swordfish Security.<\/b>. Ansvarar f\u00f6r implementeringen av SSDL, f\u00f6r den totala integrationen av programanalysverktyg i ett enhetligt utvecklings- och testekosystem. 7 \u00e5rs erfarenhet inom informationss\u00e4kerhet. Har arbetat p\u00e5 Alfa-Bank, Sberbank och p\u00e5 Positive Technologies, som utvecklar programvara och tillhandah\u00e5ller tj\u00e4nster. Talare vid internationella konferenser som ZerONights, PHDays, RISSPA, OWASP.<\/p>\n<h2>Applikationss\u00e4kerhet: vad handlar det om?<\/h2>\n<p>\n<b>Applikationss\u00e4kerhet<\/b>\u00a0\u2013 \u00e4r ett omr\u00e5de inom s\u00e4kerhet som ansvarar f\u00f6r s\u00e4kerheten hos applikationer. Detta r\u00f6r sig inte om infrastruktur eller n\u00e4tverkss\u00e4kerhet, utan just det vi skriver och det utvecklarna arbetar med \u2013 det handlar om brister och s\u00e5rbarheter i sj\u00e4lva applikationen.<\/p>\n<p>Inriktning <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/ef\/ef6\/modeling\/designer\/advanced\/edmx\/ssdl-spec\">SDL eller SDLC<\/a><\/noindex>\u00a0\u2014 <b>Security development lifecycle<\/b>\u00a0\u2013 utvecklades av Microsoft. P\u00e5 schemat \u2013 den kanoniska modellen av SDLC, vars huvudsakliga uppgift \u00e4r att s\u00e4kerhet ska ing\u00e5 i varje steg av utvecklingen, fr\u00e5n krav till release och produktion. Microsoft ins\u00e5g att det fanns f\u00f6r m\u00e5nga buggar i produktion, att de blev fler och att n\u00e5got m\u00e5ste g\u00f6ras \u00e5t det, vilket ledde till detta tillv\u00e4gag\u00e5ngss\u00e4tt som blev kanoniskt.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/466773b9a5bd355419fa1d6d1ddbca66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nApplikationss\u00e4kerhet och SSDL syftar inte till att uppt\u00e4cka s\u00e5rbarheter, som man vanligtvis tror, utan till att f\u00f6rhindra att de uppst\u00e5r. Med tiden har den kanoniska metoden fr\u00e5n Microsoft f\u00f6rb\u00e4ttrats, utvecklats, och det har tillkommit en djupare och mer detaljerad insikt.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/58d3e6aadd30594c018940bcb2a8248b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen kanoniska SDLC \u00e4r starkt detaljerad i olika metoder \u2013 OpenSAMM, BSIMM, OWASP. Metoderna skiljer sig \u00e5t, men \u00f6vergripande liknar de varandra.<\/p>\n<h3>Bygg s\u00e4kerhet in i mognadsmodellen<\/h3>\n<p>\nJag gillar mest <b>BSIMM<\/b>\u00a0\u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bsimm.com\/\">Bygg s\u00e4kerhet in i mognadsmodellen<\/a><\/noindex>. Grunden i metoden \u00e4r att dela upp processen f\u00f6r applikationss\u00e4kerhet i 4 dom\u00e4ner: Governance, Intelligence, SSDL Touchpoints och Deployment. I varje dom\u00e4n finns 12 praktiker som presenteras i form av 112 aktiviteter.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/ae0bbfd0dde335af886282672ed92367.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVarje av de 112 aktiviteterna har <b>3 mognadsniv\u00e5er<\/b>: grundl\u00e4ggande, medel och avancerad. Alla 12 praktiker kan studeras avsnitt f\u00f6r avsnitt, v\u00e4lja viktiga f\u00f6r er och f\u00f6rst\u00e5 hur de ska implementeras och gradvis l\u00e4gga till element, till exempel statisk och dynamisk kodanalys eller code review. Ni skriver en plan och arbetar lugnt enligt den i implementeringen av de valda aktiviteterna.<\/p>\n<h2>Varf\u00f6r DevSecOps<\/h2>\n<p><\/p>\n<blockquote><p>DevOps \u00e4r en stor helhet d\u00e4r man m\u00e5ste ta ansvar f\u00f6r s\u00e4kerheten.<\/p><\/blockquote>\n<p>\nUrsprungligen <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DevOps\"><b>DevOps<\/b><\/a><\/noindex> antog s\u00e4kerhetskontroller. I praktiken var s\u00e4kerhetsteamen mycket mindre \u00e4n idag, och de fungerade inte som deltagare i processen, utan som en kontroll- och tillsynsorganisation som st\u00e4ller krav och kontrollerar kvaliteten p\u00e5 produkten i slutet av release. Detta \u00e4r den klassiska metoden d\u00e4r s\u00e4kerhetsteamen stod bakom en v\u00e4gg fr\u00e5n utvecklingen och inte deltog i processen.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/1c5958fb123313308bdd92c5471c44da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHuvudproblemet ligger just i att s\u00e4kerheten \u00e4r separat fr\u00e5n utvecklingen. Vanligtvis \u00e4r det en s\u00e4kerhetskontur med 2-3 stora och dyra verktyg. En g\u00e5ng var sj\u00e4tte m\u00e5nad kommer k\u00e4llkoden eller applikationen som beh\u00f6ver kontrolleras, och en g\u00e5ng om \u00e5ret g\u00f6rs <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\">pentester<\/a><\/noindex>. Detta leder till att tidslinjen f\u00f6r produktlansering f\u00f6rsenas, och utvecklaren f\u00e5r en enorm m\u00e4ngd s\u00e5rbarheter fr\u00e5n automatiserade verktyg. Allt detta \u00e4r om\u00f6jligt att sortera ut och \u00e5tg\u00e4rda, eftersom resultaten fr\u00e5n tidigare sex m\u00e5nader inte har sorterats, och h\u00e4r kommer en ny bunt.<\/p>\n<p>Under v\u00e5rt f\u00f6retags arbete ser vi att s\u00e4kerhet inom alla omr\u00e5den och industrier f\u00f6rst\u00e5r att det \u00e4r dags att samarbeta med utvecklingen \u2013 i\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>. DevSecOps-paradigmet passar utm\u00e4rkt in i metoden f\u00f6r agil utveckling, f\u00f6r implementering, st\u00f6d och deltagande i varje release och iteration.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/cf258bd7efc82ff27787b5029cf2f945.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>\u00d6verg\u00e5ngen till DevSecOps<\/h2>\n<p>\nDet viktigaste ordet i s\u00e4kerhetsutvecklingslivscykeln \u00e4r <b>\"process\"<\/b>Du m\u00e5ste f\u00f6rst\u00e5 detta innan du t\u00e4nker p\u00e5 att k\u00f6pa verktyg.<\/p>\n<blockquote><p>Att bara inkludera verktyg i DevOps-processen \u00e4r inte tillr\u00e4ckligt - det \u00e4r viktigt med samverkan och f\u00f6rst\u00e5else mellan deltagarna i processen.<\/p><\/blockquote>\n<p><\/p>\n<h3>M\u00e4nniskor \u00e4r viktigare \u00e4n verktygen.<\/h3>\n<p>\nOfta b\u00f6rjar planeringen av en s\u00e4ker utvecklingsprocess med valet och k\u00f6pet av verktyg, och slutar med f\u00f6rs\u00f6k att integrera verktyget i den p\u00e5g\u00e5ende processen, som ofta f\u00f6rblir just f\u00f6rs\u00f6k. Detta leder till sorgliga konsekvenser, eftersom varje verktyg har sina egna egenskaper och begr\u00e4nsningar.<\/p>\n<p>Ett vanligt fall \u00e4r n\u00e4r s\u00e4kerhetsavdelningen valt ett bra, dyrt verktyg med m\u00e5nga m\u00f6jligheter och kom till utvecklarna f\u00f6r att integrera det i processen. Men det fungerar inte - processen \u00e4r s\u00e5dan att begr\u00e4nsningarna f\u00f6r det redan ink\u00f6pta verktyget inte passar in i den nuvarande paradigm.<\/p>\n<blockquote><p>B\u00f6rja med att beskriva vilket resultat du vill ha och hur processen ska se ut. Detta hj\u00e4lper till att f\u00f6rst\u00e5 verktygets och s\u00e4kerhetens roller i processen.<\/p><\/blockquote>\n<p><\/p>\n<h3>B\u00f6rja med det som redan anv\u00e4nds.<\/h3>\n<p>\nInnan du k\u00f6per dyra verktyg, ta en titt p\u00e5 vad du redan har. Varje f\u00f6retag har s\u00e4kerhetskrav som st\u00e4lls p\u00e5 utvecklingen, det finns granskningar, pentester - varf\u00f6r inte omvandla allt detta till en begriplig och anv\u00e4ndarv\u00e4nlig form?<\/p>\n<p>Vanligtvis \u00e4r kraven en pappersh\u00f6g som ligger p\u00e5 hyllan. Det har funnits fall d\u00e4r vi kommer till ett f\u00f6retag f\u00f6r att titta p\u00e5 processerna och ber om att f\u00e5 se s\u00e4kerhetskraven f\u00f6r mjukvaran. Specialisten som hanterade detta letade l\u00e4nge:<\/p>\n<p><i>- Nu, n\u00e5gonstans i anteckningarna var det en v\u00e4g till det h\u00e4r dokumentet.<\/i><\/p>\n<p>Till slut fick vi dokumentet efter en vecka.<\/p>\n<p>F\u00f6r krav, kontroller och annat, skapa en sida, till exempel p\u00e5\u00a0<b>Confluence<\/b>\u00a0\u2013 det \u00e4r praktiskt f\u00f6r alla.<\/p>\n<blockquote><p>Det \u00e4r enklare att omforma det som redan finns och anv\u00e4nda det som start.<\/p><\/blockquote>\n<p><\/p>\n<h3>Anv\u00e4nd Security Champions. <\/h3>\n<p>\nVanligtvis, i ett medelstort f\u00f6retag med 100-200 utvecklare, arbetar en s\u00e4kerhetsansvarig som utf\u00f6r flera funktioner och har fysiskt sv\u00e5rt att kolla allt. \u00c4ven om han f\u00f6rs\u00f6ker sitt b\u00e4sta - ensam kan han inte kontrollera hela koden som utvecklarna genererar. F\u00f6r s\u00e5dana fall har konceptet balanserats - <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 \u00e4r en person inom utvecklingsteamet som \u00e4r intresserad av s\u00e4kerheten i din produkt.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/c67728db4a6e34407da199387eba2bb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSecurity Champion \u00e4r ing\u00e5ngen till utvecklingsteamet och s\u00e4kerhetens evangelist i en och samma person.<\/p>\n<p>Vanligtvis, n\u00e4r en s\u00e4kerhetsexpert kommer till utvecklingsteamet och p\u00e5pekar ett fel i koden, f\u00e5r de ett f\u00f6rv\u00e5nat svar:<\/p>\n<p><i>\u2014 Vem \u00e4r du? Jag ser dig f\u00f6r f\u00f6rsta g\u00e5ngen. Jag m\u00e5r bra \u2014 min seniora kollega gav godk\u00e4nt p\u00e5 code review, vi g\u00e5r vidare!<\/i><\/p>\n<p>Detta \u00e4r en typisk situation, eftersom det finns mycket st\u00f6rre f\u00f6rtroende f\u00f6r seniorer eller bara kollegor i teamet som utvecklaren st\u00e4ndigt interagerar med i sitt arbete och under code review. Om Security Champion ist\u00e4llet p\u00e5pekar felet och konsekvenserna kommer deras ord att v\u00e4ga tyngre.<\/p>\n<p>Utvecklare k\u00e4nner ocks\u00e5 till sin kod b\u00e4ttre \u00e4n n\u00e5gon s\u00e4kerhetsexpert. F\u00f6r en person som har minst 5 projekt i verktyget f\u00f6r statisk analys \u00e4r det vanligtvis sv\u00e5rt att komma ih\u00e5g alla detaljer. Security Champions k\u00e4nner sitt produkt: vad som interagerar med vad och vad som b\u00f6r beaktas f\u00f6rst \u2014 de \u00e4r mer effektiva.<\/p>\n<p>S\u00e5 t\u00e4nk p\u00e5 att implementera Security Champions och ut\u00f6ka s\u00e4kerhetsteamets inflytande. F\u00f6r sj\u00e4lva m\u00e4staren \u00e4r detta ocks\u00e5 f\u00f6rdelaktigt: professionell utveckling inom ett nytt omr\u00e5de, utvidgning av teknisk kunskap, f\u00f6rb\u00e4ttring av tekniska, ledarskaps- och ledarniv\u00e5er, \u00f6kad marknadsv\u00e4rde. Det \u00e4r en viss form av social ingenj\u00f6rskonst, dina \"\u00f6gon\" i utvecklingsteamet.<\/p>\n<h2>Testningssteg<\/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\">Paradigmet 20 av 80<\/a><\/noindex>\u00a0anger att 20% av insatserna ger 80% av resultaten. Dessa 20% \u00e4r praxis f\u00f6r analys av applikationer som kan och b\u00f6r automatiseras. Exempel p\u00e5 s\u00e5dana aktiviteter \u00e4r statisk analys \u2014 <b>SAST<\/b>, dynamisk analys \u2014 <b>DAST,<\/b> och\u00a0<b>kontroll av Open Source<\/b>. Jag kommer att ber\u00e4tta mer om aktiviteterna samt om de verktyg och specifika egenskaper vi vanligtvis st\u00f6ter p\u00e5 n\u00e4r vi implementerar dem i processen, och hur man g\u00f6r det korrekt.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/db720e0879cdd1ed818461ffb5f927da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Huvudproblem med verktygen<\/h3>\n<p>\nJag kommer att lyfta fram aktuella problem f\u00f6r alla verktyg som kr\u00e4ver uppm\u00e4rksamhet. Jag kommer att g\u00e5 igenom dem mer ing\u00e5ende f\u00f6r att undvika upprepning.<\/p>\n<p><b>L\u00e5ngsam analys. <\/b>Om det tar 30 minuter fr\u00e5n commit till produktionslansering f\u00f6r alla tester och byggprocessen, kommer s\u00e4kerhetskontrollerna att ta ett dygn. Ingen kommer att vilja bromsa processen. T\u00e4nk p\u00e5 denna aspekt och dra slutsatser.<\/p>\n<p><b>H\u00f6g niv\u00e5 av False Negative eller False Positive. <\/b>Alla produkter \u00e4r olika, alla anv\u00e4nder olika ramverk och sin egen kodstil. P\u00e5 olika kodbaser och teknologier kan verktygen visa olika niv\u00e5er av False Negative och False Positive. S\u00e5 se p\u00e5 vad som faktiskt g\u00e4ller f\u00f6r\u00a0<b>ert<\/b> f\u00f6retag och <b>era<\/b> applikationer, som kommer att ge bra och tillf\u00f6rlitliga resultat.<\/p>\n<p><b>Det finns inga integrationer med befintliga verktyg<\/b>. Titta p\u00e5 verktygen ur integrationsperspektiv, baserat p\u00e5 det ni redan anv\u00e4nder. Till exempel, om ni anv\u00e4nder Jenkins eller TeamCity \u2014 kontrollera integrationen av verktygen med just denna programvara, och inte med GitLab CI, som ni inte anv\u00e4nder.<\/p>\n<p><b>Avsaknad eller \u00f6verdriven komplexitet av anpassningar. <\/b>Om verktyget inte har ett API, varf\u00f6r skulle det d\u00e5 vara n\u00f6dv\u00e4ndigt? Allt som kan g\u00f6ras i gr\u00e4nssnittet b\u00f6r ocks\u00e5 vara tillg\u00e4ngligt via API. I en idealisk situation b\u00f6r verktyget ha m\u00f6jlighet att anpassa kontroller.<\/p>\n<p><b>Ingen produktutvecklingsplan. <\/b>Utvecklingen st\u00e5r inte still, vi anv\u00e4nder alltid nya ramverk och funktioner, och skriver om gammal kod till nya spr\u00e5k. Vi vill vara s\u00e4kra p\u00e5 att verktyget vi k\u00f6per kommer att st\u00f6dja nya ramverk och teknologier. D\u00e4rf\u00f6r \u00e4r det viktigt att veta att produkten har en verklig och korrekt <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> utvecklingsplan.<\/p>\n<h3>Processens s\u00e4rdrag<\/h3>\n<p>\nF\u00f6rutom verktygens s\u00e4rdrag b\u00f6r ni ocks\u00e5 ta h\u00e4nsyn till utvecklingsprocessens s\u00e4rdrag. Till exempel, att st\u00f6ra utvecklingen \u00e4r ett typiskt misstag. L\u00e5t oss titta p\u00e5 vilka andra s\u00e4rdrag som b\u00f6r beaktas och vad s\u00e4kerhetsteamet b\u00f6r fokusera p\u00e5.<\/p>\n<p>F\u00f6r att inte f\u00f6rsena utvecklings- och lanseringsscheman, skapa <b>olika regler<\/b> och <b>show stoppers\u00a0<\/b>\u2014 kriterier som stoppar byggprocessen vid f\u00f6rekomst av s\u00e5rbarheter \u2014 <b>f\u00f6r olika milj\u00f6er<\/b>. Till exempel, vi f\u00f6rst\u00e5r att den aktuella grenen g\u00e5r till utvecklingsmilj\u00f6n eller UAT, vilket betyder att vi inte stoppar eller s\u00e4ger:<\/p>\n<p><i>\u2014 H\u00e4r finns s\u00e5rbarheter, ni kan inte g\u00e5 vidare!<\/i><\/p>\n<p>I detta skede \u00e4r det viktigt att informera utvecklarna om att det finns s\u00e4kerhetsproblem som de b\u00f6r uppm\u00e4rksamma.<\/p>\n<p><b>N\u00e4rvaron av s\u00e5rbarheter \u00e4r inget hinder f\u00f6r fortsatt testning<\/b>: manuell, integrations- eller manuellt. \u00c5 andra sidan beh\u00f6ver vi p\u00e5 n\u00e5got s\u00e4tt \u00f6ka produktens s\u00e4kerhet s\u00e5 att utvecklarna inte ignorerar det som s\u00e4kerheten uppt\u00e4cker. D\u00e4rf\u00f6r g\u00f6r vi ibland s\u00e5 h\u00e4r: vid stand-upen, n\u00e4r det lanseras p\u00e5 utvecklingsmilj\u00f6n, informerar vi helt enkelt utvecklingen:<\/p>\n<p><i>\u2014 Grabbar, ni har problem, v\u00e4nligen ta en titt p\u00e5 dem.<\/i><\/p>\n<p>Under UAT-steget visar vi \u00e5terigen varningar om s\u00e5rbarheter, och n\u00e4r vi g\u00e5r live s\u00e4ger vi:<\/p>\n<p><i>\u2014 Grabbar, vi har varnat flera g\u00e5nger, ni har inte gjort n\u00e5got \u2013 vi kan inte sl\u00e4ppa ut er med detta.<\/i><\/p>\n<p>Om vi pratar om kod och dynamik, s\u00e5 \u00e4r det n\u00f6dv\u00e4ndigt att bara visa och varna f\u00f6r s\u00e5rbarheterna i de funktioner och koder som just har skrivits i denna funktion. Om utvecklaren flyttade en knapp med 3 pixlar och vi s\u00e4ger till honom att han har en SQL-injektion och d\u00e4rf\u00f6r m\u00e5ste fixa detta omedelbart \u2013 det \u00e4r fel. Titta bara p\u00e5 det som har skrivits nu och p\u00e5 den \u00e4ndring som kommer till applikationen.<\/p>\n<p>L\u00e5t oss s\u00e4ga att vi har en viss funktionell defekt \u2013 det som applikationen inte ska g\u00f6ra: pengar \u00f6verf\u00f6rs inte, det blir inget klick p\u00e5 knappen som leder till n\u00e4sta sida eller varan laddas inte. <b>S\u00e4kerhetsdefekter<\/b>\u00a0\u2014 det \u00e4r samma typ av defekter, men inte i termer av applikationens funktion, utan av s\u00e4kerhet. <\/p>\n<blockquote><p>Inte alla problem med mjukvarukvalitet \u00e4r s\u00e4kerhetsproblem. Men alla s\u00e4kerhetsproblem \u00e4r relaterade till mjukvarukvalitet. Sherif Mansour, Expedia.<\/p><\/blockquote>\n<p>\nEftersom alla s\u00e5rbarheter \u00e4r samma typ av defekter, b\u00f6r de finnas d\u00e4r d\u00e4r alla utvecklingsdefekter finns. S\u00e5 gl\u00f6m rapporterna och de skr\u00e4mmande PDF:erna som ingen l\u00e4ser.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/e54e64658a3882bdc68a48c6ef426746.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e4r jag arbetade p\u00e5 ett f\u00f6retag som sysslade med utveckling fick jag en rapport fr\u00e5n verktyg f\u00f6r statisk analys. Jag \u00f6ppnade den, blev f\u00f6rskr\u00e4ckt, gjorde kaffe, bl\u00e4ddrade igenom 350 sidor, st\u00e4ngde den och gick tillbaka till mitt arbete. <b>Stora rapporter \u00e4r d\u00f6da rapporter<\/b>. Ofta g\u00e5r de ingenstans, e-postmeddelanden raderas, gl\u00f6ms bort, tappar bort eller s\u00e5 s\u00e4ger aff\u00e4rssidan att de accepterar riskerna.<\/p>\n<p>Vad ska man g\u00f6ra? De bekr\u00e4ftade defekter som har hittats omvandlar vi helt enkelt till en utvecklingsv\u00e4nlig form, till exempel genom att l\u00e4gga dem i backloggen i Jira. Vi prioriterar defekterna och \u00e5tg\u00e4rdar dem i prioritetsordning tillsammans med funktionella defekter och testdefekter.<\/p>\n<h2>Statisk analys - SAST<\/h2>\n<p>\n<b>Detta \u00e4r en analys av koden f\u00f6r att uppt\u00e4cka s\u00e5rbarheter.<\/b>, men det \u00e4r inte detsamma som SonarQube. Vi kontrollerar inte bara utifr\u00e5n m\u00f6nster eller stil. Under analysen till\u00e4mpas en rad tillv\u00e4gag\u00e5ngss\u00e4tt: efter s\u00e5rbarhetsstrukturen, genom\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>, genom analys av konfigurationsfiler. Det handlar allt om koden.<\/p>\n<p><b>F\u00f6rdelar med tillv\u00e4gag\u00e5ngss\u00e4ttet<\/b>: <b>uppt\u00e4ckte s\u00e5rbarheter i koden i ett tidigt skede av utvecklingen<\/b>, n\u00e4r det \u00e4nnu inte finns n\u00e5gra milj\u00f6er eller f\u00e4rdiga verktyg, och<b>\u00a0m\u00f6jligheten till inkrementell skanning<\/b>: skanning av den del av koden som har \u00e4ndrats, och endast den funktion som vi just nu arbetar med, vilket minskar skanningstiden.<\/p>\n<p><b>Nackdelar<\/b>\u00a0\u2014 det \u00e4r avsaknaden av st\u00f6d f\u00f6r n\u00f6dv\u00e4ndiga spr\u00e5k.<\/p>\n<p><b>N\u00f6dv\u00e4ndiga integrationer, <\/b>som b\u00f6r finnas i verktygen, enligt min subjektiva \u00e5sikt:<\/p>\n<ul>\n<li>Integrationsverktyg: Jenkins, TeamCity och Gitlab CI.\n<\/li>\n<li>Utvecklingsmilj\u00f6: Intellij IDEA, Visual Studio. F\u00f6r utvecklaren \u00e4r det bekv\u00e4mare att inte tr\u00e4nga sig in i ett oklart gr\u00e4nssnitt som man m\u00e5ste minnas, utan direkt p\u00e5 sin arbetsplats i sin egen utvecklingsmilj\u00f6 se alla n\u00f6dv\u00e4ndiga integrationer och s\u00e5rbarheter som han har hittat.\n<\/li>\n<li>Code review: SonarQube och manuell granskning.\n<\/li>\n<li>Defekthanterare: Jira och Bugzilla.\n<\/li>\n<\/ul>\n<p>\nP\u00e5 bilden visas n\u00e5gra av de b\u00e4sta representationerna av statisk analys.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/bab3420874ac090d4d107edb0d2b857b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet \u00e4r inte verktygen som \u00e4r viktiga, utan processen, d\u00e4rf\u00f6r finns det Open Source-l\u00f6sningar som ocks\u00e5 \u00e4r bra f\u00f6r att testa processen.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/4f2c278922c291b15922bc5748f87dc3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSAST Open Source kommer inte att uppt\u00e4cka ett stort antal s\u00e5rbarheter eller komplexa DataFlow, men i uppbyggnaden av processen kan de anv\u00e4ndas och b\u00f6r anv\u00e4ndas. De hj\u00e4lper till att f\u00f6rst\u00e5 hur processen kommer att byggas, vem som kommer att ansvara f\u00f6r buggar, vem som rapporterar, och vem som ska rapportera. Om du vill genomf\u00f6ra den inledande fasen av att bygga s\u00e4kerheten i din kod - anv\u00e4nd Open Source-l\u00f6sningar.<\/p>\n<p>Hur kan detta integreras om ni \u00e4r i b\u00f6rjan av er resa, om ni inte har n\u00e5got: ingen CI, ingen Jenkins, ingen TeamCity? L\u00e5t oss betrakta integrationer i processen.<\/p>\n<h3>Integrering p\u00e5 CVS-niv\u00e5<\/h3>\n<p>\nOm ni har Bitbucket eller GitLab kan ni g\u00f6ra en integration p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/CVS\">Concurrent Versions System<\/a><\/noindex>.<\/p>\n<p><b>Vid h\u00e4ndelse<\/b>\u00a0\u2014 pull request, commit. Du skannar koden och i byggstatus visar du om s\u00e4kerhetskontrollen passerade eller inte.<\/p>\n<p><b>Feedback. <\/b>Sj\u00e4lvklart beh\u00f6vs alltid feedback. Om du bara genomf\u00f6rde det p\u00e5 s\u00e4kerhetssidan, lade det i en l\u00e5da och inte ber\u00e4ttade n\u00e5got f\u00f6r n\u00e5gon, och sedan i slutet av m\u00e5naden sl\u00e4ppte en massa buggar - det \u00e4r inte r\u00e4tt och inte bra.<\/p>\n<h3>Integration med kodgranskningssystemet<\/h3>\n<p>\nEn g\u00e5ng st\u00e4llde vi in en teknisk anv\u00e4ndare AppSec som standardgranskare i flera viktiga projekt. Beroende p\u00e5 om det fanns n\u00e5gra fel i den nya koden eller inte, st\u00e4ller granskarna status f\u00f6r pull request till \"accept\" eller \"need work\" - antingen \u00e4r allt okej, eller s\u00e5 beh\u00f6ver det justeras och l\u00e4nkar till vad som beh\u00f6ver justeras. F\u00f6r den version som g\u00e5r i produktion hade vi inkluderat ett f\u00f6rbud mot merge om testet f\u00f6r informationss\u00e4kerhet inte passerades. Vi inkluderade detta i manuell kodgranskning, och de andra deltagarna i processen s\u00e5g s\u00e4kerhetsstatusarna just f\u00f6r den specifika processen.<\/p>\n<h3>Integration med SonarQube<\/h3>\n<p>\nM\u00e5nga har <noindex><a rel=\"nofollow\" href=\"https:\/\/de.wikipedia.org\/wiki\/Quality_Gate\">quality gate<\/a><\/noindex> f\u00f6r kodkvalitet. H\u00e4r \u00e4r detsamma - du kan skapa samma gates bara f\u00f6r SAST-verktyg. Det kommer att vara samma gr\u00e4nssnitt, samma quality gate, bara att det kommer att kallas <b>security gate<\/b>. Och om du har st\u00e4llt in en process med SonarQube kan du lugnt integrera allt d\u00e4r.<\/p>\n<h3>Integration p\u00e5 CI-niv\u00e5<\/h3>\n<p>\nH\u00e4r \u00e4r allt ocks\u00e5 ganska enkelt:<\/p>\n<ul>\n<li><b>P\u00e5 samma niv\u00e5 som automatiserade tester<\/b>, enhetstester.\n<\/li>\n<li><b>Uppdelning efter utvecklingssteg<\/b>: dev, test, prod. Olika upps\u00e4ttningar regler kan inkluderas, eller olika fail conditions: vi stoppar byggandet, vi stoppar inte byggandet.\n<\/li>\n<li><b>Synchronous\/asynchronous launch<\/b>. Vi v\u00e4ntar p\u00e5 att testerna f\u00f6r s\u00e4kerhet ska avslutas eller inte. Det vill s\u00e4ga vi k\u00f6r dem bara och g\u00e5r vidare, och senare f\u00e5r vi status att allt \u00e4r bra eller d\u00e5ligt.\n<\/li>\n<\/ul>\n<p>\nDetta \u00e4r allt i en perfekt rosa v\u00e4rld. I verkliga livet finns det inte, men vi str\u00e4var efter det. Resultatet av genomf\u00f6rda s\u00e4kerhetskontroller b\u00f6r vara j\u00e4mf\u00f6rbart med resultaten fr\u00e5n enhetstester.<\/p>\n<p>Till exempel tog vi ett stort projekt och best\u00e4mde att vi nu skulle skanna det med SAST \u2013 okej. Vi la in detta projekt i SAST, och det gav oss 20 000 s\u00e5rbarheter. Genom en viljeaktighet beslutade vi att allt var okej. 20 000 s\u00e5rbarheter \u00e4r v\u00e5r tekniska skuld. Vi l\u00e4gger skulden i en l\u00e5da och kommer att ta itu med den gradvis och registrera buggar i defektsp\u00e5rare. Vi anst\u00e4ller ett f\u00f6retag, g\u00f6r allt sj\u00e4lva eller f\u00e5r hj\u00e4lp av Security Champions \u2013 och den tekniska skulden kommer att minska.<\/p>\n<p>Och alla nya s\u00e5rbarheter i den nya koden m\u00e5ste \u00e5tg\u00e4rdas lika snabbt som fel i unit- eller automatisk tester. Som sagt, bygget startade, vi k\u00f6rde det, tv\u00e5 tester misslyckades och tv\u00e5 s\u00e4kerhetstester misslyckades. Okej \u2013 vi gick dit, s\u00e5g vad som h\u00e4nde, korrigerade det ena, korrigerade det andra, n\u00e4sta g\u00e5ng k\u00f6rde vi det \u2013 allt var bra, inga nya s\u00e5rbarheter d\u00f6k upp, testerna misslyckades inte. Om denna uppgift \u00e4r djupare och beh\u00f6ver unders\u00f6kas grundligt, eller om \u00e5tg\u00e4rden av s\u00e5rbarheterna p\u00e5verkar stora delar av vad som ligger under huven: en bug registrerades i defektsp\u00e5rare, den prioriteras och \u00e5tg\u00e4rdas. Tyv\u00e4rr \u00e4r v\u00e4rlden inte perfekt och testerna faller ibland.<\/p>\n<p>Exempel p\u00e5 s\u00e4kerhetsport \u2013 analog med kvalitetsport, baserat p\u00e5 n\u00e4rvaron och m\u00e4ngden s\u00e5rbarheter i koden.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/eb30d3c7988b28c2cb25e9656871ec96.png\" style=\"display:block;margin: 0 auto;\" \/>Integrera med SonarQube \u2013 pluginen installeras, allt \u00e4r mycket bekv\u00e4mt och bra.<\/p>\n<h3>Integration med utvecklingsmilj\u00f6n<\/h3>\n<p>\n<b>Integrationsm\u00f6jligheter:<\/b><\/p>\n<ul>\n<li>Starta skanning fr\u00e5n utvecklingsmilj\u00f6n redan innan commit.\n<\/li>\n<li>Granska resultaten.\n<\/li>\n<li>Analysera resultaten.\n<\/li>\n<li>Synkronisering med servern.\n<\/li>\n<\/ul>\n<p>\nS\u00e5 h\u00e4r ser det ut att h\u00e4mta resultat fr\u00e5n servern.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/270d4af76fddc0ceebca908c7d3835b8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI v\u00e5r utvecklingsmilj\u00f6 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/idea\/\">Intellij IDEA<\/a><\/noindex> finns det bara ett extra alternativ som informerar att s\u00e5dana s\u00e5rbarheter uppt\u00e4cktes under skanningen. Man kan omedelbart r\u00e4tta koden, se rekommendationer och\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_graph\">Fl\u00f6desdiagram<\/a><\/noindex>. Allt detta finns p\u00e5 utvecklarens arbetsplats, vilket \u00e4r mycket bekv\u00e4mt \u2013 man beh\u00f6ver inte g\u00e5 igenom andra l\u00e4nkar och leta efter n\u00e5got extra.<\/p>\n<h2>\u00d6ppen k\u00e4llkod<\/h2>\n<p>\nDet h\u00e4r \u00e4r mitt favorit\u00e4mne. Alla anv\u00e4nder Open Source-bibliotek \u2013 varf\u00f6r skriva en massa provisoriska l\u00f6sningar och cyklar n\u00e4r man kan ta ett f\u00e4rdigt bibliotek d\u00e4r allt redan \u00e4r implementerat?<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/05b9cd5a8b269af2a3f59931a0774778.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSj\u00e4lvklart, det \u00e4r s\u00e5, men bibliotek skrivs ocks\u00e5 av m\u00e4nniskor, innefattar ocks\u00e5 vissa risker och d\u00e4r finns ocks\u00e5 s\u00e5rbarheter som periodiskt eller konstant rapporteras. D\u00e4rf\u00f6r finns det ett n\u00e4sta steg i Application Security \u2013 det \u00e4r analysen av Open Source-komponenter.<\/p>\n<h3>Analys av Open Source \u2013 OSA<\/h3>\n<p>\nVerktyget inneh\u00e5ller tre stora steg.<\/p>\n<p><b>S\u00f6kning efter s\u00e5rbarheter i biblioteken. <\/b>Till exempel, verktyget vet att vi anv\u00e4nder ett visst bibliotek och att det\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Common_Vulnerabilities_and_Exposures\">CVE<\/a><\/noindex> eller i bug trackers finns s\u00e5rbarheter som \u00e4r relaterade till den h\u00e4r versionen av biblioteket. Vid f\u00f6rs\u00f6k att anv\u00e4nda det kommer verktyget att ge en varning om att biblioteket \u00e4r s\u00e5rbart och rekommenderar att anv\u00e4nda en annan version d\u00e4r s\u00e5rbarheter inte finns.<\/p>\n<p><b>Analys av licensrenhet. <\/b>Det \u00e4r fortfarande inte s\u00e4rskilt popul\u00e4rt h\u00e4r, men om du arbetar internationellt kan du periodiskt f\u00e5 problem f\u00f6r att anv\u00e4nda en komponent med \u00f6ppen k\u00e4llkod som inte f\u00e5r anv\u00e4ndas eller modifieras. Enligt licenspolicyn f\u00f6r biblioteket f\u00e5r vi inte g\u00f6ra detta. Eller om vi har modifierat den och anv\u00e4nder den, m\u00e5ste vi l\u00e4gga ut v\u00e5r kod. Naturligtvis vill ingen l\u00e4gga ut koden f\u00f6r sina produkter, men det finns ocks\u00e5 s\u00e4tt att skydda sig mot detta.<\/p>\n<p><b>Analys av komponenter som anv\u00e4nds i industriell milj\u00f6. <\/b>L\u00e5t oss f\u00f6rest\u00e4lla oss en hypotetisk situation d\u00e4r vi \u00e4ntligen har avslutat utvecklingen och sl\u00e4ppt den sista versionen av v\u00e5r mikrotj\u00e4nst. Den fungerar utm\u00e4rkt \u2013 en vecka, en m\u00e5nad, ett \u00e5r. Vi samlar inte in den, vi g\u00f6r inga s\u00e4kerhetskontroller, allt verkar bra. Men pl\u00f6tsligt, tv\u00e5 veckor efter sl\u00e4ppet, kommer en kritisk s\u00e5rbarhet fram i en Open Source-komponent som vi anv\u00e4nder just i den h\u00e4r versionen, i produktionsmilj\u00f6. Om vi inte registrerar vad och var vi anv\u00e4nder, kommer vi helt enkelt inte att se den h\u00e4r s\u00e5rbarheten. Vissa verktyg har m\u00f6jlighet att \u00f6vervaka s\u00e5rbarheter i bibliotek som f\u00f6r n\u00e4rvarande anv\u00e4nds i produktion. Det \u00e4r mycket anv\u00e4ndbart.<\/p>\n<p><b>M\u00f6jligheter:<\/b><\/p>\n<ul>\n<li>Olika policys f\u00f6r olika faser av utveckling.\n<\/li>\n<li>\u00d6vervakning av komponenter i industriell milj\u00f6.\n<\/li>\n<li>Kontroll av bibliotek inom organisationens kontur.\n<\/li>\n<li>St\u00f6d f\u00f6r olika byggsystem och spr\u00e5k.\n<\/li>\n<li>Analys av Docker-bilder.\n<\/li>\n<\/ul>\n<p>\nN\u00e5gra exempel p\u00e5 ledande akt\u00f6rer inom omr\u00e5det som sysslar med Open Source-analys.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/f1b05f86beb4a64f9bf3443963e3603b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDen enda gratis av dem \u00e4r <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/OWASP_Dependency_Check\">Dependency-Check<\/a><\/noindex> fr\u00e5n OWASP. Det kan inkluderas tidigt f\u00f6r att se hur det fungerar och vad det st\u00f6der. I huvudsak handlar det om alla molnprodukter eller on-premise, men de skickas fortfarande till internet i samband med sin databas. De skickar inte dina bibliotek, utan hashv\u00e4rden eller sina egna ber\u00e4knade v\u00e4rden, och fingeravtryck till sina servrar f\u00f6r att f\u00e5 information om s\u00e5rbarheter.<\/p>\n<h3>Integration i processen<\/h3>\n<p>\n<b>Kontroll av bibliotek i perimeter<\/b>, som laddas ner fr\u00e5n externa k\u00e4llor. Vi har externa och interna f\u00f6rr\u00e5d. Till exempel, inom Event Central finns Nexus, och vi vill att v\u00e5rt interna f\u00f6rr\u00e5d inte ska inneh\u00e5lla s\u00e5rbarheter med status 'kritisk' eller 'h\u00f6g'. Det g\u00e5r att st\u00e4lla in proxy med hj\u00e4lp av verktyget Nexus Firewall Lifecycle s\u00e5 att s\u00e5dana s\u00e5rbarheter blockeras och inte n\u00e5r det interna f\u00f6rr\u00e5det.<\/p>\n<p><b>Integration i CI<\/b>. P\u00e5 samma niv\u00e5 som automatiserade tester, enhetstester och uppdelning efter utvecklingssteg: dev, test, prod. I varje steg kan man ladda ner vilket bibliotek som helst och anv\u00e4nda vad som helst, men om det finns n\u00e5got med status 'kritisk' kanske man b\u00f6r uppm\u00e4rksamma utvecklarna p\u00e5 detta i samband med lansering.<\/p>\n<p><b>Integration med artefaktlagringar<\/b>: Nexus och JFrog.<\/p>\n<p><b>Integration i utvecklingsmilj\u00f6n. <\/b>Verktyg som du v\u00e4ljer m\u00e5ste ha integration med utvecklingsmilj\u00f6er. Utvecklaren ska ha tillg\u00e5ng till resultaten fr\u00e5n skanningarna fr\u00e5n sin arbetsstation, eller ha m\u00f6jlighet att sj\u00e4lv skanna och kontrollera koden f\u00f6r s\u00e5rbarheter innan man commitar i CVS.<\/p>\n<p><b>Integration i CD. <\/b>Det h\u00e4r \u00e4r en fantastisk funktion som jag verkligen gillar och som jag redan har ber\u00e4ttat om \u2013 \u00f6vervakning av nya s\u00e5rbarheter i produktionsmilj\u00f6er. Det fungerar ungef\u00e4r s\u00e5 h\u00e4r.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/605c638df343db5c47ab36b4dc00f41c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi har <b>Offentliga komponentf\u00f6rr\u00e5d<\/b>\u00a0\u2014 vissa verktyg utanf\u00f6r och v\u00e5r interna databas. Vi vill att det endast ska finnas trusted components i den. Vid proxyf\u00f6rfr\u00e5gningar verifierar vi att det nedladdade biblioteket inte har n\u00e5gra s\u00e5rbarheter. Om det faller under vissa policyer som vi fastst\u00e4ller och godk\u00e4nner med utvecklingen, laddar vi inte ner det, och det kommer en avvisning att anv\u00e4nda en annan version. Om biblioteksinneh\u00e5llet \u00e4r verkligt kritiskt och d\u00e5ligt, f\u00e5r utvecklaren inte biblioteket ens under installationssteget \u2014 det f\u00e5r anv\u00e4nda en h\u00f6gre eller l\u00e4gre version.<\/p>\n<ul>\n<li>Vid bygget kontrollerar vi att ingen har introducerat n\u00e5got d\u00e5ligt, att alla komponenter \u00e4r s\u00e4kra och att ingen har f\u00f6rt in n\u00e5got farligt via USB.\n<\/li>\n<li>I v\u00e5rt arkiv har vi endast trusted components. \n<\/li>\n<li>Vid deployment kontrollerar vi \u00e5terigen sj\u00e4lva paketet: war, jar, DL eller Docker-image s\u00e5 att det \u00f6verensst\u00e4mmer med policyn. \n<\/li>\n<li>N\u00e4r vi g\u00e5r i produktion \u00f6vervakar vi det som h\u00e4nder i den industriella milj\u00f6n: om kritiska s\u00e5rbarheter dyker upp eller inte.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Dynamisk analys \u2014 DAST<\/h2>\n<p>\nVerktyg f\u00f6r dynamisk analys skiljer sig markant fr\u00e5n allt som sagts tidigare. Det \u00e4r en simulering av anv\u00e4ndarens interaktion med applikationen. Om det \u00e4r en webbapplikation, skickar vi f\u00f6rfr\u00e5gningar som imiterar klientens arbete, trycker p\u00e5 knappar p\u00e5 frontend, skickar artificiella data fr\u00e5n formul\u00e4r: citationstecken, parenteser, symboler i olika kodningar, f\u00f6r att se hur applikationen fungerar och behandlar externa data.<\/p>\n<p>Detta system g\u00f6r det ocks\u00e5 m\u00f6jligt att kontrollera m\u00f6nsterv\u00e4rdiga s\u00e5rbarheter i Open Source. Eftersom DAST inte vet vilken Open Source vi anv\u00e4nder, skickar den helt enkelt \"skadliga\" m\u00f6nster och analyserar svaren fr\u00e5n servern:<\/p>\n<p><i>\u2014 Aha, h\u00e4r finns ett deserialiseringsproblem, men h\u00e4r finns det inte.<\/i><\/p>\n<p>Det medf\u00f6r stora risker, eftersom om du genomf\u00f6r detta s\u00e4kerhetstest p\u00e5 samma plattform som anv\u00e4nds av testarna \u2014 kan obehagliga saker h\u00e4nda.<\/p>\n<ul>\n<li>H\u00f6g belastning p\u00e5 applikationsservern.\n<\/li>\n<li>Inga integrationer.\n<\/li>\n<li>M\u00f6jlighet att \u00e4ndra inst\u00e4llningarna f\u00f6r den analyserade applikationen.\n<\/li>\n<li>Ingen support f\u00f6r n\u00f6dv\u00e4ndiga teknologier.\n<\/li>\n<li>Sv\u00e5righetsgrad i konfigurationen.\n<\/li>\n<\/ul>\n<p>\nVi hade en situation n\u00e4r vi \u00e4ntligen k\u00f6rde AppScan: vi k\u00e4mpade l\u00e4nge f\u00f6r att f\u00e5 tillg\u00e5ng till applikationen, fick tre konton och var glada - nu kan vi \u00e4ntligen kontrollera allt! Vi startade skanningen, och det f\u00f6rsta AppScan gjorde - det gick in i administrat\u00f6rspanelen, klickade p\u00e5 alla knappar, \u00e4ndrade h\u00e4lften av datan, och sedan d\u00f6dade det servern helt. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mailform.io\/\">mailform<\/a><\/noindex>-f\u00f6rfr\u00e5gningar. Utveckling med testning sa:<\/p>\n<p><i>\u2014 Grabbar, ni sk\u00e4mtar?! Vi gav er konton, och ni la ner standen!<\/i><\/p>\n<p>T\u00e4nk p\u00e5 m\u00f6jliga risker. I idealfallet f\u00f6rbered ett separat stand f\u00f6r testning av informationss\u00e4kerhet, som b\u00f6r vara isolerat fr\u00e5n den \u00f6vriga milj\u00f6n p\u00e5 n\u00e5got s\u00e4tt, och det \u00e4r \u00f6nskv\u00e4rt att kontrollera adminpanelen manuellt. Det h\u00e4r \u00e4r en pentest - de \u00e5terst\u00e5ende procenten av insatserna som vi inte beaktar just nu. <\/p>\n<p>Det \u00e4r v\u00e4rt att notera att detta kan anv\u00e4ndas som ett alternativ till belastningstestning. I det f\u00f6rsta steget kan en dynamisk skanner s\u00e4ttas i 10-15 tr\u00e5dar och se vad som h\u00e4nder, men i praktiken visar det sig vanligtvis att det inte blir n\u00e5got bra.<\/p>\n<p>N\u00e5gra resurser som vi vanligtvis anv\u00e4nder.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/45a25dbe2a2d053e6ed16d31b6ac53ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet \u00e4r v\u00e4rt att framh\u00e4va <noindex><a rel=\"nofollow\" href=\"https:\/\/portswigger.net\/burp\">Burp Suite<\/a><\/noindex>\u00a0\u2014 detta \u00e4r en \"schweizisk arm\u00e9kniv\" f\u00f6r varje s\u00e4kerhetsspecialist. Den anv\u00e4nds av alla och \u00e4r mycket anv\u00e4ndarv\u00e4nlig. En ny demoversion av enterprise edition har just sl\u00e4ppts. Tidigare var det bara en frist\u00e5ende programvara med plugins, men nu g\u00f6r utvecklarna \u00e4ntligen en stor server fr\u00e5n vilken man kan hantera flera agenter. Det \u00e4r fantastiskt, jag rekommenderar att prova.<\/p>\n<h3>Integration i processen<\/h3>\n<p>\nIntegrationen fungerar ganska bra och enkelt: <b>start av skanning efter en lyckad installation <\/b>av applikationen p\u00e5 standen och\u00a0<b>skanning efter en framg\u00e5ngsrik genomf\u00f6rd integrationstestning<\/b>.<\/p>\n<p>Om integrationerna inte fungerar eller det finns dummy-funktioner, \u00e4r det meningsl\u00f6st och v\u00e4rdel\u00f6st - oavsett vilket m\u00f6nster vi skickar s\u00e5 kommer servern fortfarande att svara samma.<\/p>\n<ul>\n<li>Idealiskt - ett separat stand f\u00f6r testning.\n<\/li>\n<li>Innan testningen b\u00f6rjar, skriv ner inloggningssekvensen.\n<\/li>\n<li>Testning av administrativt system - bara manuellt.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Process<\/h2>\n<p>\nLite \u00f6versiktligt om processen i allm\u00e4nhet och om varje verktygs arbete, speciellt. Alla applikationer \u00e4r olika - den ena fungerar b\u00e4ttre med dynamisk analys, den andra med statisk, den tredje med OpenSource-analys, pentest eller n\u00e5got helt annat, till exempel h\u00e4ndelser med\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Waf\">Waf<\/a><\/noindex>.<\/p>\n<blockquote><p>Varje process beh\u00f6ver kontroll.<\/p><\/blockquote>\n<p>\nF\u00f6r att f\u00f6rst\u00e5 hur processen fungerar och var den kan f\u00f6rb\u00e4ttras, m\u00e5ste man samla metrik fr\u00e5n allt som g\u00e5r att n\u00e5, inklusive produktionsmetrik, metrik fr\u00e5n verktyg och fr\u00e5n defektsp\u00e5rare.<\/p>\n<p>All data \u00e4r anv\u00e4ndbar. Man m\u00e5ste titta ur olika vinklar p\u00e5 var ett verktyg till\u00e4mpas b\u00e4st, var processen specifikt faller. Kanske b\u00f6r man titta p\u00e5 utvecklingens svarstid f\u00f6r att f\u00f6rst\u00e5 var man kan f\u00f6rb\u00e4ttra processen baserat p\u00e5 tid. Ju mer data, desto fler perspektiv kan byggas fr\u00e5n \u00f6vergripande till detaljer i varje process.<\/p>\n<p><img decoding=\"async\" alt=\"R\u00e4dsla och hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/93e079b19c4c8189ce6ca4eaec186eed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEftersom alla statiska och dynamiska analyzers har sina egna API:er, sina egna s\u00e4tt att starta, principer, n\u00e5gra har schemal\u00e4ggare, andra har det inte \u2013 skriver vi ett verktyg <b>AppSec Orkestrator<\/b>, som m\u00f6jligg\u00f6r en enhetlig ing\u00e5ngspunkt till hela processen med produkten och hantera den fr\u00e5n en punkt.<\/p>\n<p>F\u00f6r chefer, utvecklare och s\u00e4kerhetsingenj\u00f6rer finns en ing\u00e5ngspunkt d\u00e4r man kan se vad som k\u00f6rs, konfigurera och starta skanning, f\u00e5 resultat av skanning, st\u00e4lla krav. Vi f\u00f6rs\u00f6ker g\u00e5 bort fr\u00e5n papper och \u00f6vers\u00e4tta allt till ett m\u00e4nskligt s\u00e4tt som utvecklingen anv\u00e4nder \u2013 sidor i Confluence med status och metrik, defekter i Jira eller i olika defektsp\u00e5rare, eller integrera i en synkron\/asin kprocess i CI\/CD.<\/p>\n<h2>Nyckelinsikter<\/h2>\n<p>\n<b>Verktyg \u00e4r inte huvudsaken.<\/b> F\u00f6rst planera processen \u2013 sedan implementera verktyg. Verktyg \u00e4r bra men dyra, s\u00e5 man kan b\u00f6rja med processen och etablera samverkan och f\u00f6rst\u00e5else mellan utveckling och s\u00e4kerhet. Ur s\u00e4kerhetssynpunkt \u2013 det \u00e4r inte n\u00f6dv\u00e4ndigt att stoppa allt som kommer, Ur utvecklingssynpunkt \u2013 om det finns n\u00e5got som \u00e4r h\u00f6gmega superkritisk, m\u00e5ste det \u00e5tg\u00e4rdas snarare \u00e4n att blunda f\u00f6r problemet.<\/p>\n<p><b>Produktkvalitet<\/b>\u00a0<b>\u2013 ett gemensamt m\u00e5l<\/b> b\u00e5de f\u00f6r s\u00e4kerhet och utveckling. Vi g\u00f6r en gemensam sak, str\u00e4var efter att allt fungerar korrekt och att det inte finns reputationsrisker eller ekonomiska f\u00f6rluster. D\u00e4rf\u00f6r f\u00f6respr\u00e5kar vi tillv\u00e4gag\u00e5ngss\u00e4ttet DevSecOps, SecDevOps f\u00f6r att f\u00f6rb\u00e4ttra kommunikationen och g\u00f6ra produkten mer kvalitativ.<\/p>\n<p><b>B\u00f6rja med det som redan finns<\/b>: krav, arkitektur, partiella kontroller, tr\u00e4ningar, riktlinjer. Anv\u00e4nd inte alla metoder p\u00e5 en g\u00e5ng f\u00f6r alla projekt \u2014 <b>g\u00e5 vidare iterativt<\/b>. Det finns ingen enhetlig standard \u2014 <b>experimentera<\/b> och prova olika tillv\u00e4gag\u00e5ngss\u00e4tt och l\u00f6sningar.<\/p>\n<p><b>Det finns en likhet mellan s\u00e4kerhetsdefekter och funktionella defekter<\/b>.<\/p>\n<p><b>Automatisera allt<\/b>, som r\u00f6r sig. Allt som inte r\u00f6r sig \u2014 f\u00f6rs\u00f6k att f\u00e5 det att r\u00f6ra sig och automatisera det. Om n\u00e5got g\u00f6rs manuellt \u00e4r det inte en bra del av processen. Det kanske \u00e4r v\u00e4rt att omv\u00e4rdera det och automatisera det ocks\u00e5.<\/p>\n<p>Om storleken p\u00e5 s\u00e4kerhetsteamet \u00e4r liten \u2014 <b>anv\u00e4nd Security Champions.<\/b>.<\/p>\n<p>Kanske \u00e4r det jag har pratat om inte l\u00e4mpligt f\u00f6r er och ni hittar p\u00e5 n\u00e5got eget \u2014 och det \u00e4r okej. Men\u00a0<b>v\u00e4lj verktyg baserat p\u00e5 kraven f\u00f6r just er process<\/b>. Titta inte p\u00e5 vad communityn s\u00e4ger om att det h\u00e4r verktyget \u00e4r d\u00e5ligt, och att det h\u00e4r \u00e4r bra. Kanske visar det sig att det \u00e4r tv\u00e4rtom f\u00f6r just er produkt.<\/p>\n<p><b>Verktygskrav.<\/b><\/p>\n<ul>\n<li>L\u00e5g niv\u00e5 av False Positive.\n<\/li>\n<li>Rimlig analys tid.\n<\/li>\n<li>Anv\u00e4ndarv\u00e4nlighet.\n<\/li>\n<li>Finns integrationer.\n<\/li>\n<li>F\u00f6rst\u00e5else f\u00f6r produktens utvecklingsplan.\n<\/li>\n<li>M\u00f6jlighet till anpassning av verktyg.\n<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p>Yuris f\u00f6redrag valdes som ett av de b\u00e4sta p\u00e5 DevOpsConf 2018. F\u00f6r att uppt\u00e4cka fler intressanta id\u00e9er och praktiska fall, kom den 27 och 28 maj till Skolkovo p\u00e5\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow-rit\/2019\">DevOpsConf<\/a><\/noindex> i samband med <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2019\">festivalen RIT++<\/a><\/noindex>. Och \u00e4nnu b\u00e4ttre, om ni \u00e4r villiga att dela med er av er erfarenhet, d\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-rit\">skicka in en ans\u00f6kan<\/a><\/noindex> f\u00f6r f\u00f6redraget senast den 21 april.<\/p><\/blockquote>\n<p>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/strah-i-nenavist-devsecops\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47R\u00e4dsla och avsky f\u00f6r DevSecOps | ProHoster","description":"Vi hade 2 kodanalysatorer, 4 verktyg f\u00f6r dynamisk testning, egna skapelser och 250 skript.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/strah-i-nenavist-devsecops","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/31852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=31852"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/31852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/23720"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=31852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=31852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=31852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}