{"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\/da\/blog\/administrirovanie\/strah-i-nenavist-devsecops","title":{"rendered":"Frygt og had i DevSecOps","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Vi havde 2 kodeanalysev\u00e6rkt\u00f8jer, 4 v\u00e6rkt\u00f8jer til dynamisk testning, vores egne kreationer og 250 scripts. Ikke at alt dette var n\u00f8dvendigt i den nuv\u00e6rende proces, men da jeg begyndte at implementere DevSecOps, skal man g\u00f8re det ordentligt.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i 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\">Kilde<\/a><\/noindex>. Karakterforfattere: Justin Roiland og Dan Harmon.<\/i><\/p>\n<p>Hvad er SecDevOps? Og DevSecOps? Hvad er forskellene? Applikationssikkerhed - hvad handler det om? Hvorfor virker den klassiske tilgang ikke l\u00e6ngere? Alle disse sp\u00f8rgsm\u00e5l har svar. <b>Yuri Shabalin<\/b> af\u00a0<b>Swordfish Security. <\/b>Yuri vil grundigt besvare alle sp\u00f8rgsm\u00e5l og gennemg\u00e5 problemerne ved overgangen fra den klassiske model for applikationssikkerhed til DevSecOps-processen: hvordan man korrekt integrerer sikre udviklingsprocesser ind i DevOps, uden at \u00f8del\u00e6gge noget, hvordan man gennemg\u00e5r de vigtigste sikkerhedstesttrin, hvilke v\u00e6rkt\u00f8jer man kan anvende, hvordan disse adskiller sig, og hvordan de kan konfigureres korrekt for at undg\u00e5 faldgruber.<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=\"Afspil 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 opl\u00e6gsholderen:<\/b> <b>Yuri Shabalin - <\/b>Chief Security Architect i virksomheden <b>Swordfish Security<\/b>. Han er ansvarlig for implementeringen af SSDL, for den samlede integration af applikationsanalysev\u00e6rkt\u00f8jer i et samlet udviklings- og test\u00f8kosystem. 7 \u00e5rs erfaring inden for informationssikkerhed. Har arbejdet for Alfa-Bank, Sberbank og i Positive Technologies, som udvikler software og tilbyder tjenester. Opl\u00e6gsholder ved internationale konferencer s\u00e5som ZerONights, PHDays, RISSPA, OWASP.<\/p>\n<h2>Applikationssikkerhed: hvad handler det om?<\/h2>\n<p>\n<b>Applikationssikkerhed<\/b>\u00a0er en gren af sikkerhed, der beskytter applikationer. Dette relaterer sig ikke til infrastruktur eller netv\u00e6rkssikkerhed, men netop til det, vi skriver og udviklere arbejder p\u00e5 - det handler om mangler og s\u00e5rbarheder i selve applikationen.<\/p>\n<p>Retning <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>\u00a0er udviklet af Microsoft. P\u00e5 diagrammet ses den kanoniske model for SDLC, som har som hovedopgave at inddrage sikkerheden i hver fase af udviklingen, fra krav til udgivelse og lancering i produktion. Microsoft inds\u00e5, at der i produktionen er for mange fejl, og at de bliver flere, og at noget m\u00e5tte g\u00f8res, og de foreslog denne tilgang, som blev kanonisk.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/466773b9a5bd355419fa1d6d1ddbca66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nApplikationssikkerhed og SSDL fokuserer ikke p\u00e5 at opdage s\u00e5rbarheder, som mange tror, men p\u00e5 at forhindre, at de opst\u00e5r. Gennem tiden er den kanoniske tilgang fra Microsoft blevet forbedret og udviklet, med en dybere og mere detaljeret tilgang.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/58d3e6aadd30594c018940bcb2a8248b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen kanoniske SDLC er st\u00e6rkt detaljeret i forskellige metoder - OpenSAMM, BSIMM, OWASP. Metoderne adskiller sig, men generelt er de ens.<\/p>\n<h3>Building Security In Maturity Model<\/h3>\n<p>\nJeg kan bedst lide <b>BSIMM<\/b>\u00a0\u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bsimm.com\/\">Building Security In Maturity Model<\/a><\/noindex>. Grundlaget for metoden er opdelingen af Application Security processen i 4 dom\u00e6ner: Governance, Intelligence, SSDL Touchpoints og Deployment. I hvert dom\u00e6ne er der 12 praksisser, der pr\u00e6senteres i form af 112 aktiviteter.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/ae0bbfd0dde335af886282672ed92367.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHver af de 112 aktiviteter har <b>3 modenhedsniveauer<\/b>: grundl\u00e6ggende, mellem og avanceret. Alle 12 praksisser kan studeres efter sektioner, udv\u00e6lge vigtige for dig og forst\u00e5, hvordan man implementerer dem og gradvist tilf\u00f8je elementer, s\u00e5som statisk og dynamisk kodeanalyse eller code review. Du laver en plan og arbejder roligt inden for rammerne af implementeringen af de valgte aktiviteter.<\/p>\n<h2>Hvorfor DevSecOps<\/h2>\n<p><\/p>\n<blockquote><p>DevOps er en samlet stor proces, hvor det er n\u00f8dvendigt at tage sig af sikkerheden.<\/p><\/blockquote>\n<p>\nOprindeligt <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DevOps\"><b>DevOps<\/b><\/a><\/noindex> forudsatte sikkerhedstjek. I praksis var antallet af sikkerhedsteams meget mindre end nu, og de fungerede ikke som deltagere i processen, men som en kontrol- og tilsynsmyndighed, der stiller krav til den og kontrollerer produktets kvalitet ved slutningen af udgivelsen. Dette er den klassiske tilgang, hvor sikkerhedsteams var adskilt fra udviklingen og ikke deltog i processen.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/1c5958fb123313308bdd92c5471c44da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet st\u00f8rste problem er netop, at informationssikkerhed er adskilt fra udvikling. Normalt er det en slags informationssikkerhedsdom\u00e6ne, der rummer 2-3 store og dyre v\u00e6rkt\u00f8jer. Hver sjette m\u00e5ned modtager vi kildekoden eller en applikation, der skal tjekkes, og \u00e9n gang om \u00e5ret udf\u00f8res der <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%98%D1%81%D0%BF%D1%8B%D1%82%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%B8%D0%B5\">penetrationstests<\/a><\/noindex>. Alt dette f\u00f8rer til, at deadlines for produktlancering uds\u00e6ttes, og udviklerne f\u00e5r et enormt antal s\u00e5rbarheder fra automatiserede v\u00e6rkt\u00f8jer. Det hele er umuligt at sortere og reparere, fordi resultaterne fra de sidste seks m\u00e5neder ikke engang er blevet analyseret, og nu er der en ny bunke.<\/p>\n<p>I vores virksomheds arbejdsproces ser vi, at sikkerhed i alle sektorer og industrier indser, at det er tid til at samarbejde med udviklingen - 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 passer perfekt ind i metoden for agil udvikling, til implementering, st\u00f8tte og deltagelse i hver udgivelse og iteration.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/cf258bd7efc82ff27787b5029cf2f945.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Overgangen til DevSecOps<\/h2>\n<p>\nDet vigtigste ord i Security Development Lifecycle er <b>\"processen\"<\/b>Du skal forst\u00e5 dette, f\u00f8r du t\u00e6nker p\u00e5 at k\u00f8be v\u00e6rkt\u00f8jer.<\/p>\n<blockquote><p>At inkludere v\u00e6rkt\u00f8jerne i DevOps-processen er ikke nok \u2013 det er vigtigt med interaktion og forst\u00e5else mellem deltagerne i processen.<\/p><\/blockquote>\n<p><\/p>\n<h3>Mennesker er vigtigere end v\u00e6rkt\u00f8jer.<\/h3>\n<p>\nPlanl\u00e6gningen af en sikker udviklingsproces begynder ofte med at v\u00e6lge og k\u00f8be et v\u00e6rkt\u00f8j, og slutter med at fors\u00f8ge at integrere v\u00e6rkt\u00f8jet i den nuv\u00e6rende proces, hvilket ofte kun bliver fors\u00f8g. Dette f\u00f8rer til triste konsekvenser, da hvert v\u00e6rkt\u00f8j har sine egne egenskaber og begr\u00e6nsninger.<\/p>\n<p>Et almindeligt tilf\u00e6lde er, n\u00e5r sikkerhedsafdelingen v\u00e6lger et godt, dyrt v\u00e6rkt\u00f8j med mange funktioner og henvender sig til udviklerne for at integrere det i processen. Men det fungerer ikke \u2013 processen er bygget p\u00e5 en m\u00e5de, hvor begr\u00e6nsningerne af det allerede k\u00f8bte v\u00e6rkt\u00f8j ikke passer ind i den nuv\u00e6rende paradigm.<\/p>\n<blockquote><p>Start med at beskrive, hvilket resultat du \u00f8nsker, og hvordan processen vil se ud. Dette hj\u00e6lper med at forst\u00e5 v\u00e6rkt\u00f8jets og sikkerhedens roller i processen.<\/p><\/blockquote>\n<p><\/p>\n<h3>Begynd med det, der allerede bruges.<\/h3>\n<p>\nF\u00f8r du k\u00f8ber dyre v\u00e6rkt\u00f8jer, skal du se p\u00e5, hvad du allerede har. Hver virksomhed har sikkerhedskrav, der stilles til udviklingen, der er gennemgange og pentests \u2013 hvorfor ikke omdanne alt dette til en forst\u00e5elig og brugervenlig form?<\/p>\n<p>Normalt er kravene en papirforklaring, der ligger p\u00e5 hylden. Der var engang, vi kom ind i en virksomhed for at se p\u00e5 processerne og bad om at f\u00e5 vist sikkerhedskravene til softwaren. Den specialist, der arbejdede med det, ledte i lang tid:<\/p>\n<p><i>\u2014 Nu, et eller andet sted i noter, var der en vej til, hvor dette dokument l\u00e5.<\/i><\/p>\n<p>Til sidst fik vi dokumentet efter en uge.<\/p>\n<p>For krav, gennemgange og alt andet, opret en side, f.eks. p\u00e5\u00a0<b>Confluence<\/b>\u00a0\u2014 det er praktisk for alle.<\/p>\n<blockquote><p>Det er nemmere at omformatere det, der allerede findes, og bruge det som start.<\/p><\/blockquote>\n<p><\/p>\n<h3>Brug Security Champions. <\/h3>\n<p>\nNormalt arbejder der en sikkerhedsekspert i en gennemsnitlig virksomhed med 100-200 udviklere, som udf\u00f8rer flere funktioner og fysisk ikke kan n\u00e5 at kontrollere alt. Selv hvis han g\u00f8r sit bedste \u2013 kan han ikke kontrollere al den kode, der genereres af udviklingen alene. For s\u00e5danne tilf\u00e6lde er konceptet udviklet \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/Security_Champions\"><b>Security Champions.<\/b><\/a><\/noindex>.<\/p>\n<blockquote><p>Security Champions er en person inden for udviklingsteamet, der er interesseret i sikkerheden af dit produkt.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/c67728db4a6e34407da199387eba2bb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSecurity Champion er b\u00e5de indgangen til udviklingsteamet og sikkerhedsevangelisten i \u00e9n person.<\/p>\n<p>Normalt, n\u00e5r en sikkerhedsekspert kommer ind i udviklingsteamet og p\u00e5peger en fejl i koden, f\u00e5r de et overrasket svar:<\/p>\n<p><i>\u2014 Hvem er du? Jeg ser dig for f\u00f8rste gang. Jeg har det godt\u2014min senior kollega gav mig 'apply' p\u00e5 review, s\u00e5 lad os komme videre!<\/i><\/p>\n<p>Dette er en typisk situation, fordi der er meget mere tillid til seniorer eller blot kolleger inden for teamet, som udvikleren interagerer konstant med i arbejdet og code reviews. Hvis Security Champion p\u00e5peger en fejl og dens konsekvenser, vil deres ord have mere v\u00e6gt.<\/p>\n<p>Udviklere kender ogs\u00e5 deres kode bedre end nogen sikkerhedsekspert. For en person, der har mindst 5 projekter i statisk analysev\u00e6rkt\u00f8jet, er det normalt sv\u00e6rt at huske alle nuancer. Security Champions kender deres produkt: hvad interagerer hvad med, og hvad skal man se p\u00e5 f\u00f8rst \u2013 de er mere effektive.<\/p>\n<p>S\u00e5 overvej at implementere Security Champions og udvide sikkerhedsteamets indflydelse. For selve championen er dette ogs\u00e5 gavnligt: professionel udvikling i et nyt omr\u00e5de, udvidelse af teknisk viden, forbedring af tekniske, ledelses- og lederskabskompetencer, \u00f8get markedsv\u00e6rdi. Dette er et element af social engineering, dine '\u00f8jne' i udviklingsteamet.<\/p>\n<h2>Testningsfaser<\/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 til 80<\/a><\/noindex>\u00a0siger, at 20% af indsatsen giver 80% af resultatet. Disse 20% er de praksisser for applikationsanalyse, som kan og b\u00f8r automatiseres. Eksempler p\u00e5 s\u00e5danne aktiviteter er statisk analyse\u2014 <b>SAST<\/b>, dynamisk analyse\u2014 <b>DAST,<\/b> og\u00a0<b>kontrol af Open Source<\/b>. Jeg vil fort\u00e6lle mere om aktiviteterne samt v\u00e6rkt\u00f8jerne og hvilke s\u00e6rlige udfordringer vi typisk st\u00f8der p\u00e5 ved implementering i processen, og hvordan man g\u00f8r det korrekt.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/db720e0879cdd1ed818461ffb5f927da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>De prim\u00e6re udfordringer med v\u00e6rkt\u00f8jerne<\/h3>\n<p>\nJeg vil fremh\u00e6ve de relevante udfordringer, der g\u00e6lder for alle v\u00e6rkt\u00f8jer, som kr\u00e6ver opm\u00e6rksomhed. Jeg vil gennemg\u00e5 dem mere detaljeret for ikke at gentage mig selv senere.<\/p>\n<p><b>Lang analyseperiode. <\/b>Hvis der g\u00e5r 30 minutter fra commit til produktion for alle tests og bygninger, vil sikkerhedskontroller tage en hel dag. Ingen vil bremse processen. Tag denne egenskab i betragtning og drag konklusioner.<\/p>\n<p><b>H\u00f8jt niveau af False Negative eller False Positive. <\/b>Alle produkter er forskellige, de bruger forskellige frameworks og har deres egen stil til at skrive kode. P\u00e5 forskellige kodebaser og teknologier kan v\u00e6rkt\u00f8jer vise forskellige niveauer af False Negative og False Positive. S\u00e5 se p\u00e5, hvad der pr\u00e6cist er i\u00a0<b>dit<\/b> firma og for <b>dine<\/b> applikationer, der vil vise gode og p\u00e5lidelige resultater.<\/p>\n<p><b>Ingen integrationer med eksisterende v\u00e6rkt\u00f8jer<\/b>. Se p\u00e5 v\u00e6rkt\u00f8jerne med fokus p\u00e5 integrationer, med hvad du allerede bruger. For eksempel, hvis du har Jenkins eller TeamCity \u2013 tjek integrationen af v\u00e6rkt\u00f8jerne med dette software, og ikke med GitLab CI, som du ikke bruger.<\/p>\n<p><b>Mangel p\u00e5 eller overdreven kompleksitet af tilpasning. <\/b>Hvis v\u00e6rkt\u00f8jet ikke har et API, hvorfor har man s\u00e5 brug for det? Alt, hvad der kan g\u00f8res i gr\u00e6nsefladen, skal v\u00e6re tilg\u00e6ngeligt gennem API'et. Ideelt set b\u00f8r v\u00e6rkt\u00f8jet have mulighed for at tilpasse kontroller.<\/p>\n<p><b>Ingen udviklings Roadmap for produktet. <\/b>Udviklingen st\u00e5r ikke stille; vi bruger altid nye frameworks og funktioner, genkoder gammelt kode til nye sprog. Vi \u00f8nsker at v\u00e6re sikre p\u00e5, at v\u00e6rkt\u00f8jet, vi k\u00f8ber, vil underst\u00f8tte nye frameworks og teknologier. Derfor er det vigtigt at vide, at produktet har en reel og 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> for udvikling.<\/p>\n<h3>Processens egenskaber<\/h3>\n<p>\nUdover v\u00e6rkt\u00f8jernes egenskaber, skal du ogs\u00e5 tage h\u00f8jde for udviklingsprocessens s\u00e6regenheder. At forstyrre udviklingen er en typisk fejl. Lad os se p\u00e5, hvilke andre aspekter der b\u00f8r overvejes, og hvad sikkerhedsteamet skal fokusere p\u00e5.<\/p>\n<p>For ikke at forsinke udviklings- og udgivelsestidspunkter, skal du oprette <b>forskellige regler<\/b> og forskellige <b>show stoppers\u00a0<\/b>\u2014 kriterier for at stoppe byggeprocessen, n\u00e5r der findes s\u00e5rbarheder \u2014 <b>for forskellige milj\u00f8er<\/b>. For eksempel, vi forst\u00e5r, at den nuv\u00e6rende gren g\u00e5r til udviklingsstand eller UAT, s\u00e5 vi stopper ikke op og siger:<\/p>\n<p><i>\u2014 Der er s\u00e5rbarheder her, I kan ikke g\u00e5 videre!<\/i><\/p>\n<p>P\u00e5 dette stadium er det vigtigt at informere udviklerne om, at der er sikkerhedsproblemer, som det er v\u00e6rd at v\u00e6re opm\u00e6rksom p\u00e5.<\/p>\n<p><b>Forekomster af s\u00e5rbarheder er ikke en hindring for fortsat testning<\/b>: manuel, integrations- eller manuel. P\u00e5 den anden side er vi n\u00f8dt til at \u00f8ge sikkerheden af produktet, og s\u00e5 udviklerne ikke overser, hvad sikkerheden opdager. Derfor g\u00f8r vi nogle gange s\u00e5dan: p\u00e5 standen, n\u00e5r det udrulles til udviklingsmilj\u00f8et, informerer vi blot udviklingen:<\/p>\n<p><i>\u2014 Herre, I har nogle problemer, v\u00e6r venlig at l\u00e6gge m\u00e6rke til dem.<\/i><\/p>\n<p>P\u00e5 UAT-fasen viser vi igen advarsler om s\u00e5rbarheder, og ved overgang til produktion siger vi:<\/p>\n<p><i>\u2014 Herre, vi har advaret flere gange, og I har ikke gjort noget\u2014 vi vil ikke frigive det med dette.<\/i><\/p>\n<p>N\u00e5r vi taler om koden og dynamikken, er det n\u00f8dvendigt kun at vise og advare om s\u00e5rbarhederne for de funktioner og koder, der lige er blevet skrevet i denne funktion. Hvis udvikleren har rykket en knap 3 pixels, og vi fort\u00e6ller ham, at han har en SQL-injektion, og at han derfor hurtigt skal rette det\u2014 det er forkert. Se kun p\u00e5 det, der er skrevet nu, og de \u00e6ndringer, der kommer ind i applikationen.<\/p>\n<p>Lad os sige, at vi har en eller anden funktionel fejl\u2014 det, hvordan applikationen ikke skal fungere: penge overf\u00f8res ikke, ved klik p\u00e5 knappen er der ikke overgang til den n\u00e6ste side, eller produktet indl\u00e6ses ikke. <b>Sikkerhedsdefekter<\/b>\u00a0\u2014 det er de samme defekter, men ikke i forhold til, hvordan applikationen fungerer, men til sikkerhed. <\/p>\n<blockquote><p>Ikke alle softwarekvalitetsproblemer er sikkerhedsproblemer. Men alle sikkerhedsproblemer er relateret til softwarekvalitet. Sherif Mansour, Expedia.<\/p><\/blockquote>\n<p>\nDa alle s\u00e5rbarheder er de samme defekter, b\u00f8r de befinde sig de samme steder som alle udviklingsdefekter. S\u00e5 glem rapporter og skr\u00e6mmende PDF-filer, som ingen l\u00e6ser.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/e54e64658a3882bdc68a48c6ef426746.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDa jeg arbejdede i et firma, der besk\u00e6ftigede sig med udvikling, modtog jeg en rapport fra statisk analysev\u00e6rkt\u00f8jer. Jeg \u00e5bnede den, blev chokeret, lavede mig en kop kaffe, bladrede igennem 350 sider, lukkede den og gik tilbage til arbejdet. <b>Store rapporter er d\u00f8de rapporter<\/b>. Normalt g\u00e5r de ingen steder, e-mails slettes, glemmes, tabes, eller virksomheden siger, at den accepterer risici.<\/p>\n<p>Hvad skal man g\u00f8re? De bekr\u00e6ftede fejl, vi har fundet, omdanner vi simpelthen til en udviklingsvenlig form, for eksempel ved at l\u00e6gge dem i backlog i Jira. Vi prioriterer fejl og retter dem i r\u00e6kkef\u00f8lge efter prioritet sammen med funktionelle fejl og testfejl.<\/p>\n<h2>Statisk analyse - SAST<\/h2>\n<p>\n<b>Det er en analyse af koden for s\u00e5rbarheder.<\/b>, men det er ikke det samme som SonarQube. Vi tjekker ikke kun efter m\u00f8nstre eller stil. Under analysen anvendes en r\u00e6kke tilgange: efter svaghedstr\u00e6et, efter\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>, efter analyse af konfigurationsfiler. Det er alt, hvad der har med selve koden at g\u00f8re.<\/p>\n<p><b>Fordele ved tilgangen<\/b>: <b>identifikation af s\u00e5rbarheder i koden p\u00e5 et tidligt udviklingstrin<\/b>, n\u00e5r der ikke endnu er oprettet testmilj\u00f8er eller f\u00e6rdige v\u00e6rkt\u00f8jer, og<b>\u00a0mulighed for inkrementel scanning<\/b>: scanning af den del af koden, som er \u00e6ndret, og kun den funktionalitet, vi arbejder p\u00e5 nu, hvilket reducerer scannings tiden.<\/p>\n<p><b>Ulemper<\/b>\u00a0\u2014 det er manglende support for n\u00f8dvendige sprog.<\/p>\n<p><b>N\u00f8dvendige integrationer, <\/b>som skal v\u00e6re i v\u00e6rkt\u00f8jerne, efter min subjektive mening:<\/p>\n<ul>\n<li>Integrationsv\u00e6rkt\u00f8j: Jenkins, TeamCity og GitLab CI.\n<\/li>\n<li>Udviklingsmilj\u00f8: Intellij IDEA, Visual Studio. Det er lettere for udvikleren ikke at skulle navigere i en uforst\u00e5elig gr\u00e6nseflade, der ogs\u00e5 skal huskes, men direkte p\u00e5 sin arbejdsplads i sit eget udviklingsmilj\u00f8 at se alle n\u00f8dvendige integrationer og s\u00e5rbarheder, som han har fundet.\n<\/li>\n<li>Kodegennemgang: SonarQube og manuel gennemgang.\n<\/li>\n<li>Fejlsporingssystemer: Jira og Bugzilla.\n<\/li>\n<\/ul>\n<p>\nP\u00e5 billedet er nogle af de bedste repr\u00e6sentanter for statisk analyse.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/bab3420874ac090d4d107edb0d2b857b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet vigtigste er ikke v\u00e6rkt\u00f8jerne, men processen, derfor findes der Open Source-l\u00f8sninger, som ogs\u00e5 er gode til at afpr\u00f8ve processen.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/4f2c278922c291b15922bc5748f87dc3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSAST Open Source vil ikke finde et stort antal s\u00e5rbarheder eller komplekse DataFlow, men ved opbygning af processen kan de bruges. De hj\u00e6lper med at forst\u00e5, hvordan processen vil blive bygget, hvem der skal tage sig af fejlene, hvem der skal rapportere og hvem der skal redeg\u00f8re. Hvis du vil gennemf\u00f8re den indledende fase af at opbygge sikkerheden i din kode, s\u00e5 brug Open Source-l\u00f8sninger.<\/p>\n<p>Hvordan kan dette integreres, hvis du er i begyndelsen af din rejse, og du ikke har noget: hverken CI, Jenkins eller TeamCity? Lad os se p\u00e5 integrationer i processen.<\/p>\n<h3>Integration p\u00e5 CVS-niveau<\/h3>\n<p>\nHvis du har Bitbucket eller GitLab, kan du lave integration p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/CVS\">Concurrent Versions System<\/a><\/noindex>.<\/p>\n<p><b>Efter h\u00e6ndelsen<\/b>\u00a0\u2014 pull request, commit. Du scannerer koden og i build-status viser du, om sikkerhedstesten er best\u00e5et eller ikke.<\/p>\n<p><b>Feedback. <\/b>Uden tvivl er feedback altid n\u00f8dvendig. Hvis du blot har udf\u00f8rt arbejdet p\u00e5 sikkerhedssiden, lagt det i en boks og ikke har fortalt nogen om det, men s\u00e5 i slutningen af m\u00e5neden kaster en bunke bugs p\u00e5 bordet \u2014 det er ikke korrekt og ikke godt.<\/p>\n<h3>Integration med code review systemet<\/h3>\n<p>\nEn gang gjorde vi en teknisk bruger fra AppSec til standard reviewer i en r\u00e6kke vigtige projekter. Afh\u00e6ngig af om der blev fundet fejl i den nye kode eller ej, tildeler revieweren i pull request status som 'accept' eller 'need work' \u2014 enten er alt OK, eller der er behov for forbedringer og links til hvad der skal forbedres. For integration med den version, der g\u00e5r i produktion, havde vi aktiveret en forbud mod merge, hvis testene for informationssikkerhed ikke var best\u00e5et. Vi implementerede dette i den manuelle code review, s\u00e5 de \u00f8vrige deltagere i processen kunne se sikkerhedsstatus for lige netop denne proces.<\/p>\n<h3>Integration med SonarQube<\/h3>\n<p>\nMange har <noindex><a rel=\"nofollow\" href=\"https:\/\/de.wikipedia.org\/wiki\/Quality_Gate\">quality gate<\/a><\/noindex> for kodekvalitet. Her er det det samme \u2014 man kan lave de samme gates, men kun for SAST v\u00e6rkt\u00f8jer. Det vil have det samme interface, samme quality gate, bare kaldet <b>security gate<\/b>. Og hvis du har implementeret en proces med SonarQube, kan du nemt integrere alt der.<\/p>\n<h3>Integration p\u00e5 CI-niveau<\/h3>\n<p>\nHer er det ogs\u00e5 ret enkelt:<\/p>\n<ul>\n<li><b>P\u00e5 samme niveau som autotests<\/b>, unit tests.\n<\/li>\n<li><b>Opdeling efter udviklingsfaser<\/b>: dev, test, prod. Forskellige s\u00e6t regler kan inkluderes, eller forskellige fail conditions: vi stopper byggeprocessen, eller vi stopper ikke byggeprocessen.\n<\/li>\n<li><b>Synkron\/asin-kron k\u00f8rsel<\/b>. Vi venter enten p\u00e5, at testene for sikkerhed er afsluttet, eller ikke venter. Det vil sige, at vi blot har startet dem og g\u00e5r videre, og s\u00e5 kommer status om, at alt er fint eller skidt.\n<\/li>\n<\/ul>\n<p>\nDet hele er i en perfekt rosenr\u00f8d verden. I virkeligheden eksisterer det ikke, men vi str\u00e6ber efter det. Resultatet af sikkerhedstests b\u00f8r svare til resultaterne af unit tests.<\/p>\n<p>For example, we took on a large project and decided that we would now scan it using SAST \u2014 OK. We put this project into SAST, it reported 20,000 vulnerabilities, and with a firm decision, we accepted that everything was fine. 20,000 vulnerabilities are our technical debt. We'll store the debt in a box, gradually sorting it out and logging bugs in defect trackers. We will hire a company, do everything ourselves, or receive help from Security Champions \u2014 and the technical debt will decrease.<\/p>\n<p>And all newly appearing vulnerabilities in the new code must be fixed just like errors in unit or automated tests. Conditioned, the build ran, two tests fell off, and there were two security tests. OK \u2014 we checked what happened, fixed one thing, fixed another, re-ran next time \u2014 everything is fine, no new vulnerabilities appeared, tests were not failed. If the task is deeper and needs careful handling, or if fixing vulnerabilities touches large layers of what's under the hood: log a bug in the defect tracker, it'll be prioritized and fixed. Unfortunately, the world is not perfect, and tests sometimes fail.<\/p>\n<p>An example of a security gate \u2014 analogous to a quality gate, based on the presence and number of vulnerabilities in the code.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/eb30d3c7988b28c2cb25e9656871ec96.png\" style=\"display:block;margin: 0 auto;\" \/>Integrating with SonarQube \u2014 the plugin is installed, everything is very convenient and great.<\/p>\n<h3>Integration with the development environment<\/h3>\n<p>\n<b>Integration capabilities:<\/b><\/p>\n<ul>\n<li>Launching a scan from the development environment even before commit.\n<\/li>\n<li>Viewing results.\n<\/li>\n<li>Analyzing results.\n<\/li>\n<li>Synchronization with the server.\n<\/li>\n<\/ul>\n<p>\nThis is what obtaining results from the server looks like.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/270d4af76fddc0ceebca908c7d3835b8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn our development environment <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/idea\/\">IntelliJ IDEA<\/a><\/noindex> a new item simply appears, which reports that vulnerabilities were detected during the scan. You can immediately fix the code, check the recommendations, and\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_graph\">Flow Graph<\/a><\/noindex>. All this is located at the developer's workstation, which is very convenient \u2014 there's no need to visit other links and look for something extra.<\/p>\n<h2>Open Source<\/h2>\n<p>\nThis is my favorite topic. Everyone uses Open Source libraries \u2014 why write a bunch of shortcuts and bicycles when you can use a ready-made library where everything is already implemented?<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/05b9cd5a8b269af2a3f59931a0774778.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSelvf\u00f8lgelig, det er rigtigt, men biblioteker skrives ogs\u00e5 af mennesker, de indeb\u00e6rer ogs\u00e5 visse risici og der opst\u00e5r ogs\u00e5 s\u00e5rbarheder, der sporadisk eller konstant rapporteres om. Derfor er det n\u00e6ste skridt i Applikationssikkerhed - det er analyse af Open Source-komponenter.<\/p>\n<h3>Open Source-analyse - OSA<\/h3>\n<p>\nV\u00e6rkt\u00f8jet inkluderer tre store faser.<\/p>\n<p><b>S\u00f8gning efter s\u00e5rbarheder i biblioteker. <\/b>For eksempel ved v\u00e6rkt\u00f8jet, at vi bruger et bestemt bibliotek, og at i\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Common_Vulnerabilities_and_Exposures\">CVE<\/a><\/noindex> eller i bug-tracking-systemer er der s\u00e5rbarheder, der vedr\u00f8rer denne version af biblioteket. Ved brug af det vil v\u00e6rkt\u00f8jet give en advarsel om, at biblioteket er s\u00e5rbart og anbefale at bruge en anden version, hvor der ikke er s\u00e5rbarheder.<\/p>\n<p><b>Analyse af licensm\u00e6ssig renhed. <\/b>Det er ikke s\u00e5 popul\u00e6rt her, men hvis du arbejder med udlandet, kan du nogle gange f\u00e5 problemer for at bruge en komponent med \u00e5bent kildekode, som ikke m\u00e5 bruges eller modificeres. If\u00f8lge bibliotekets licenspolitik kan vi ikke g\u00f8re dette. Eller hvis vi har modificeret det og bruger det, skal vi offentligg\u00f8re vores kode. Selvf\u00f8lgelig \u00f8nsker ingen at offentligg\u00f8re koden til deres produkter, men der er ogs\u00e5 m\u00e5der at beskytte sig mod dette.<\/p>\n<p><b>Analyse af komponenter, der anvendes i industrimilj\u00f8. <\/b>Lad os forestille os en hypotetisk situation, hvor vi endelig har afsluttet udviklingen og udgivet den seneste version af vores mikrotjeneste. Det lever fantastisk der - en uge, en m\u00e5ned, et \u00e5r. Vi samler det ikke, foretr\u00e6kker ikke sikkerhedstests, alt virker fint. Men pludselig efter to uger efter udgivelsen opst\u00e5r en kritisk s\u00e5rbarhed i en Open Source-komponent, som vi bruger netop i denne version, i produktionsmilj\u00f8et. Hvis vi ikke registrerer, hvad og hvor vi bruger, vil vi simpelthen ikke se denne s\u00e5rbarhed. Nogle v\u00e6rkt\u00f8jer har mulighed for at overv\u00e5ge s\u00e5rbarheder i biblioteker, der aktuelt bruges i produktionen. Dette er meget nyttigt.<\/p>\n<p><b>Muligheder:<\/b><\/p>\n<ul>\n<li>Forskellige politikker for forskellige udviklingsfaser.\n<\/li>\n<li>Overv\u00e5gning af komponenter i industrimilj\u00f8et.\n<\/li>\n<li>Kontrol af biblioteker inden for organisationen.\n<\/li>\n<li>Support for forskellige build-systemer og sprog.\n<\/li>\n<li>Analyse af Docker-billeder.\n<\/li>\n<\/ul>\n<p>\nFlere eksempler p\u00e5 ledende akt\u00f8rer inden for omr\u00e5det, der besk\u00e6ftiger sig med Open Source-analyse.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/f1b05f86beb4a64f9bf3443963e3603b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDen eneste gratis af dem er <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/OWASP_Dependency_Check\">Dependency-Check<\/a><\/noindex> fra OWASP. Det kan inkluderes i de tidlige faser for at se, hvordan det fungerer, og hvad det underst\u00f8tter. Det omfatter prim\u00e6rt alle cloud-produkter eller on-premise, men deres database bliver stadig sendt til internettet. De sender ikke dine biblioteker, men hashes eller egne v\u00e6rdier, som de beregner, samt fingeraftryk til deres server for at f\u00e5 notifikationer om s\u00e5rbarheder.<\/p>\n<h3>Integration i proces<\/h3>\n<p>\n<b>Kontrol af biblioteker i perimeteren<\/b>, som downloades fra eksterne kilder. Vi har eksterne og interne repositoryer. For eksempel er Nexus installeret internt i Event Central, og vi \u00f8nsker, at der ikke skal v\u00e6re s\u00e5rbarheder med status \"kritisk\" eller \"h\u00f8j\" i vores interne repository. Det er muligt at ops\u00e6tte proxy med hj\u00e6lp af Nexus Firewall Lifecycle-v\u00e6rkt\u00f8jet, s\u00e5 s\u00e5danne s\u00e5rbarheder bliver afsk\u00e5ret og ikke kommer ind i det interne repository.<\/p>\n<p><b>Integration i CI<\/b>. P\u00e5 samme niveau som autotests, enhedstests og opdeling efter udviklingsfaser: dev, test, prod. P\u00e5 hvert niveau kan man downloade alle biblioteker og bruge hvad som helst, men hvis der er noget kritisk - kan det v\u00e6re en god id\u00e9 at g\u00f8re udviklerne opm\u00e6rksomme p\u00e5 det, n\u00e5r de g\u00e5r i produktion.<\/p>\n<p><b>Integration med artifact repositories<\/b>: Nexus og JFrog.<\/p>\n<p><b>Integration i udviklingsmilj\u00f8. <\/b>De v\u00e6rkt\u00f8jer, du v\u00e6lger, skal have integration med udviklingsmilj\u00f8er. Udvikleren skal fra sin arbejdsplads have adgang til scanneresultaterne eller have mulighed for selv at scanne og kontrollere koden for s\u00e5rbarheder inden commit til CVS.<\/p>\n<p><b>Integration i CD. <\/b>Dette er en fantastisk funktion, som jeg rigtig godt kan lide, og som jeg allerede har talt om - overv\u00e5gning af nye s\u00e5rbarheder i produktionsmilj\u00f8et. Det fungerer cirka s\u00e5dan her.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/605c638df343db5c47ab36b4dc00f41c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi har <b>Public Component Repositories<\/b>\u00a0\u2014 nogle v\u00e6rkt\u00f8jer udefra, og vores interne repository. Vi \u00f8nsker kun, at der skal v\u00e6re trusted components i det. N\u00e5r vi proxy-anmoder, tjekker vi, at det downloadede bibliotek ikke har s\u00e5rbarheder. Hvis det falder ind under bestemte politikker, som vi opstiller og n\u00f8dvendigvis godkender med udviklingen, s\u00e5 downloader vi det ikke, og der kommer en besked om at bruge en anden version. Hvis der virkelig er noget kritisk og d\u00e5rligt i biblioteket, vil udvikleren slet ikke modtage biblioteket p\u00e5 installationsstadiet \u2014 i stedet skal de bruge en nyere eller \u00e6ldre version.<\/p>\n<ul>\n<li>Ved build tjekker vi, at ingen har indf\u00f8rt noget skadelig, at alle komponenter er sikre, og at ingen har bragt noget farligt p\u00e5 en USB-n\u00f8gle.\n<\/li>\n<li>I vores repository har vi kun trusted components. \n<\/li>\n<li>Ved deployment tjekker vi endnu engang selve pakken: war, jar, DL eller Docker-billede for at sikre, at den overholder politikken. \n<\/li>\n<li>N\u00e5r vi g\u00e5r i produktion, overv\u00e5ger vi, hvad der sker i produktionsmilj\u00f8et: opst\u00e5r der kritiske s\u00e5rbarheder eller ej.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Dynamisk analyse \u2014 DAST<\/h2>\n<p>\nV\u00e6rkt\u00f8jer til dynamisk analyse adskiller sig fundamentalt fra alt, hvad der er blevet sagt tidligere. Det er en imitation af brugerens interaktion med applikationen. Hvis det er en webapplikation, sender vi anmodninger, der simulerer kundens handlinger, trykker p\u00e5 knapperne p\u00e5 frontenden, og sender kunstige data fra formularen: citationstegn, parenteser, tegn i forskellige kodninger, for at se, hvordan applikationen fungerer og behandler eksterne data.<\/p>\n<p>Det samme system muligg\u00f8r at tjekke skabelonbaserede s\u00e5rbarheder i Open Source. Da DAST ikke ved, hvilket Open Source vi bruger, sender det blot \"ondartede\" m\u00f8nstre og analyserer serverens svar:<\/p>\n<p><i>\u2014 Aha, her er et deserialiseringsproblem, og her er der ikke.<\/i><\/p>\n<p>Der er store risici forbundet med dette, fordi hvis du udf\u00f8rer denne sikkerhedstest p\u00e5 den samme stand, som testeplaceringsfolk arbejder med, kan der ske ubehagelige ting.<\/p>\n<ul>\n<li>H\u00f8j belastning p\u00e5 netv\u00e6rket applikationsserver.\n<\/li>\n<li>Ingen integrationer.\n<\/li>\n<li>Mulighed for \u00e6ndring af indstillingerne for den analyserede applikation.\n<\/li>\n<li>Ingen st\u00f8tte til n\u00f8dvendige teknologier.\n<\/li>\n<li>Sv\u00e6rhedsgrad ved ops\u00e6tning.\n<\/li>\n<\/ul>\n<p>\nVi havde en situation, hvor vi endelig satte AppScan i gang: der var lang tid, vi skulle have adgang til applikationen, vi fik tre konti og blev glade - endelig kunne vi tjekke alt! Vi startede scanning, og det f\u00f8rste, AppScan gjorde - var at g\u00e5 ind i administrationspanelet, trykke p\u00e5 alle knapperne, \u00e6ndre halvdelen af dataene, og derefter dr\u00e6be serveren med sine <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mailform.io\/\">mailform<\/a><\/noindex>-anmodninger. Udviklingen med testning sagde:<\/p>\n<p><i>- Drengene, er I seri\u00f8se?! Vi gav jer konti, og I lagde standet ned!<\/i><\/p>\n<p>T\u00e6nk p\u00e5 de mulige risici. I ideelle tilf\u00e6lde skal du forberede et separat testmilj\u00f8 til informationssikkerhed, som p\u00e5 en eller anden m\u00e5de vil v\u00e6re isoleret fra det \u00f8vrige milj\u00f8, og det er \u00f8nskeligt at tjekke adminpanelet manuelt. Det er et pentest - de resterende procent af indsatsen, som vi ikke overvejer nu. <\/p>\n<p>Det er v\u00e6rd at bem\u00e6rke, at dette kan bruges som et analogt belastningstest. I f\u00f8rste fase kan du aktivere den dynamiske scanner med 10-15 tr\u00e5de og se, hvad der sker, men som regel, som praksis viser, er der ikke noget godt.<\/p>\n<p>Nogle ressourcer, som vi normalt bruger.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/45a25dbe2a2d053e6ed16d31b6ac53ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet er v\u00e6rd at fremh\u00e6ve <noindex><a rel=\"nofollow\" href=\"https:\/\/portswigger.net\/burp\">Burp Suite<\/a><\/noindex>\u00a0- det er \"svejtserkniv\" for enhver sikkerhedsspecialist. Alle bruger det, og det er meget praktisk. Der er nu kommet en ny demo-version af enterprise edition. Tidligere var det blot et stand-alone v\u00e6rkt\u00f8j med plugins, men nu endelig laver udviklerne en stor server, som man kan styre flere agenter fra. Det er fantastisk, jeg anbefaler at pr\u00f8ve.<\/p>\n<h3>Integration i proces<\/h3>\n<p>\nIntegration sker ganske godt og enkelt: <b>start scanning efter vellykket installation <\/b>af applikationen p\u00e5 standet og\u00a0<b>scanning efter vellykket gennemf\u00f8relse af integrationstestning<\/b>.<\/p>\n<p>Hvis integrationerne ikke fungerer, eller hvis der er stubbe og mock-funktioner, er det meningsl\u00f8st og ubrugeligt - uanset hvilket m\u00f8nster vi sender, vil serveren stadig svare ens.<\/p>\n<ul>\n<li>Ideelt set - et separat milj\u00f8 til testning.\n<\/li>\n<li>F\u00f8r testning skal du notere login-sekvensen.\n<\/li>\n<li>Testning af administrationssystemet - kun manuelt.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Proces<\/h2>\n<p>\nLidt generelt om processen generelt og om arbejdet med hvert v\u00e6rkt\u00f8j, is\u00e6r. Alle applikationer er forskellige - nogle fungerer bedre med dynamisk analyse, andre med statisk, nogle med OpenSource-analyse, pentests eller noget helt andet, for eksempel h\u00e6ndelser med\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Waf\">Waf<\/a><\/noindex>.<\/p>\n<blockquote><p>Hver proces har brug for kontrol.<\/p><\/blockquote>\n<p>\nFor at forst\u00e5, hvordan processen fungerer, og hvor den kan forbedres, er det n\u00f8dvendigt at samle metrikker fra alt, hvad der er tilg\u00e6ngeligt, inklusive produktionsmetrikker, metrikker fra v\u00e6rkt\u00f8jer og fra defekttrackere.<\/p>\n<p>Alle data er nyttige. Man skal se p\u00e5 forskellige aspekter af, hvor hvert v\u00e6rkt\u00f8j anvendes bedst, og hvor processen specifikt svigter. M\u00e5ske er det v\u00e6rd at kigge p\u00e5 svartiderne fra udviklingen for at forst\u00e5, hvor forbedringer kan laves baseret p\u00e5 tiden. Jo flere data, jo flere perspektiver kan man konstruere fra overordnede til detaljer om hver proces.<\/p>\n<p><img decoding=\"async\" alt=\"Frygt og had i DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/93e079b19c4c8189ce6ca4eaec186eed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDa alle statiske og dynamiske analysev\u00e6rkt\u00f8jer har deres egne API'er, forskellige m\u00e5der at k\u00f8re dem p\u00e5, principper, nogle har planl\u00e6ggere, andre har ikke \u2013 skriver vi et v\u00e6rkt\u00f8j <b>AppSec Orkestrator<\/b>, som g\u00f8r det muligt at have et enkelt indgangspunkt til hele processen fra produktet og styre det fra \u00e9t sted.<\/p>\n<p>For ledere, udviklere og sikkerhedsingeni\u00f8rer er der et indgangspunkt, hvor man kan se, hvad der er i gang, konfigurere og starte scanninger, f\u00e5 scanningresultater og stille krav. Vi fors\u00f8ger at undg\u00e5 papirarbejde og konvertere alt til et menneskeligt format, som udviklingen bruger \u2013 sider p\u00e5 Confluence med status og metrikker, defekter i Jira eller i forskellige defekttrackere, eller integration i en synkron\/asin-kron proces i CI\/CD.<\/p>\n<h2>Hovedpunkter<\/h2>\n<p>\n<b>V\u00e6rkt\u00f8jer er ikke det vigtigste.<\/b> F\u00f8rst skal man overveje processen \u2013 derefter implementere v\u00e6rkt\u00f8jer. V\u00e6rkt\u00f8jer er gode, men dyre, s\u00e5 man kan begynde med processen og oprette interaktion og forst\u00e5else mellem udvikling og sikkerhed. Fra et sikkerhedssynspunkt er det ikke n\u00f8dvendigt at 'stoppe' alt, og fra et udviklingssynspunkt, hvis der er noget high mega super kritisk, s\u00e5 skal det l\u00f8ses, ikke ignoreres.<\/p>\n<p><b>Produktkvalitet<\/b>\u00a0<b>er et f\u00e6lles m\u00e5l<\/b> for b\u00e5de sikkerhed og udvikling. Vi arbejder p\u00e5 samme sag, og s\u00f8rger for, at alt fungerer korrekt og undg\u00e5r omd\u00f8mmem\u00e6ssige risici og \u00f8konomiske tab. Derfor fremmer vi tilgangene DevSecOps og SecDevOps for at forbedre kommunikationen og g\u00f8re produktet bedre.<\/p>\n<p><b>Start med det, der allerede er tilg\u00e6ngeligt.<\/b>: krav, arkitektur, delvise kontroller, tr\u00e6ning, retningslinjer. Du beh\u00f8ver ikke at anvende alle praktikker p\u00e5 alle projekter med det samme \u2014 <b>arbejd iterativt<\/b>. Der er ikke nogen universel standard \u2014 <b>eksperiment\u00e9r<\/b> og pr\u00f8v forskellige metoder og l\u00f8sninger.<\/p>\n<p><b>Mellem IOT-defekter og funktionelle defekter er der et lighedstegn<\/b>.<\/p>\n<p><b>Automatiser alt<\/b>, der bev\u00e6ger sig. Alt, der ikke bev\u00e6ger sig - skal flyttes og automatiseres. Hvis noget g\u00f8res manuelt, er det ikke en god del af processen. Det kan v\u00e6re v\u00e6rd at overveje igen og ogs\u00e5 automatisere.<\/p>\n<p>Hvis st\u00f8rrelsen p\u00e5 IOT-teamet er lille - <b>brug Security Champions<\/b>.<\/p>\n<p>M\u00e5ske er det, jeg har talt om, ikke det for dig, og du finder p\u00e5 noget eget - og det er godt. Men\u00a0<b>v\u00e6lg v\u00e6rkt\u00f8jer baseret p\u00e5 kravene specifikt til din proces<\/b>. Lyt ikke til, hvad community siger om, at dette v\u00e6rkt\u00f8j er d\u00e5rligt, og dette er godt. M\u00e5ske vil hele situationen v\u00e6re omvendt for dit produkt.<\/p>\n<p><b>Krav til v\u00e6rkt\u00f8jer.<\/b><\/p>\n<ul>\n<li>Lav falsk positiv rate.\n<\/li>\n<li>Acceptabel analysetid.\n<\/li>\n<li>Brugervenlighed.\n<\/li>\n<li>Tilg\u00e6ngelighed af integrationer.\n<\/li>\n<li>Forst\u00e5else af produktets udviklingsplan.\n<\/li>\n<li>Mulighed for at tilpasse v\u00e6rkt\u00f8jerne.\n<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p>Yuris pr\u00e6sentation blev valgt som en af de bedste p\u00e5 DevOpsConf 2018. For at l\u00e6re om flere interessante id\u00e9er og praktiske cases, kom den 27. og 28. maj til Skolkovo p\u00e5\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow-rit\/2019\">DevOpsConf<\/a><\/noindex> som en del af <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2019\">festivalen RIT++<\/a><\/noindex>. Og endnu bedre, hvis du er klar til at dele din erfaring, s\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-rit\">indsend en ans\u00f8gning<\/a><\/noindex> til pr\u00e6sentation inden 21. april.<\/p><\/blockquote>\n<p>Kilde: <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\/da\/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=\"da_DK\" \/>\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\/da\/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\udd47Frygt og had DevSecOps | ProHoster","description":"Vi havde 2 kodeanalysatorer, 4 v\u00e6rkt\u00f8jer til dynamisk testning, vores egne l\u00f8sninger og 250 scripts.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/strah-i-nenavist-devsecops","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/31852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=31852"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/31852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/23720"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=31852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=31852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=31852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}