{"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\/no\/blog\/administrirovanie\/strah-i-nenavist-devsecops","title":{"rendered":"Frykt og hat DevSecOps","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Vi hadde 2 kodeanalysatorer, 4 verkt\u00f8y for dynamisk testing, egne kreasjoner og 250 skript. Ikke at alt dette var n\u00f8dvendig i den n\u00e5v\u00e6rende prosessen, men siden jeg begynte \u00e5 implementere DevSecOps, m\u00e5 jeg g\u00e5 hele veien.<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og 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\">Kilde<\/a><\/noindex>. Karakterforfattere: Justin Roiland og Dan Harmon.<\/i><\/p>\n<p>Hva er SecDevOps? Og DevSecOps? Hva er forskjellene? Applikasjonssikkerhet \u2013 hva handler det om? Hvorfor fungerer ikke den klassiske tiln\u00e6rmingen lenger? P\u00e5 alle disse sp\u00f8rsm\u00e5lene har vi svar <b>Juri Shabalin<\/b> fra\u00a0<b>Swordfish Security. <\/b>Juri vil gi detaljerte svar og belyse problemene med overgangen fra den klassiske modellen for applikasjonssikkerhet til DevSecOps-prosessen: hvordan man riktig integrerer prosessen for trygg utvikling i DevOps-prosessen uten \u00e5 \u00f8delegge noe, hvordan man passerer de viktigste testtrinnene for sikkerhet, hvilke verkt\u00f8y som kan brukes, hvordan de skiller seg fra hverandre og hvordan de skal konfigureres for \u00e5 unng\u00e5 fallgruver.<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=\"Spill 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 taleren:<\/b> <b>Juri Shabalin \u2013 <\/b>Chief Security Architect i selskapet <b>Swordfish Security<\/b>. Ansvarlig for implementering av SSDL, for generell integrering av applikasjonsanalyseverkt\u00f8y i et samlet utviklings- og test\u00f8kosystem. 7 \u00e5rs erfaring innen informasjonssikkerhet. Har jobbet i Alfa-Bank, Sberbank og i Positive Technologies, som utvikler programvare og tilbyr tjenester. Taler p\u00e5 internasjonale konferanser som ZerONights, PHDays, RISSPA, OWASP.<\/p>\n<h2>Applikasjonssikkerhet: hva handler det om?<\/h2>\n<p>\n<b>Applikasjonssikkerhet<\/b>\u00a0er et omr\u00e5de innen sikkerhet som fokuserer p\u00e5 sikkerheten til applikasjoner. Det handler ikke om infrastruktur eller nettverkssikkerhet, men om det vi skriver og det utviklerne jobber med \u2013 det gjelder svakheter og s\u00e5rbarheter i selve applikasjonen.<\/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>Sikkerhetsutviklingslivssyklus<\/b>\u00a0ble utviklet av Microsoft. I diagrammet \u2013 den kanoniske modellen for SDLC, hvis hovedoppgave er \u00e5 inkludere sikkerhet i hver fase av utviklingen, fra krav til utgivelse og produksjon. Microsoft inns\u00e5 at det var for mange feil i produksjon, de ble flere, og noe m\u00e5tte gj\u00f8res, og foreslo denne tiln\u00e6rmingen, som har blitt kanonisk.<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/466773b9a5bd355419fa1d6d1ddbca66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nApplikasjonssikkerhet og SSDL er ikke rettet mot \u00e5 oppdage s\u00e5rbarheter, som det ofte antas, men mot \u00e5 forhindre deres oppkomst. Over tid har den kanoniske tiln\u00e6rmingen fra Microsoft blitt forbedret og utviklet, med en dypere detaljinnsikt.<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/58d3e6aadd30594c018940bcb2a8248b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen kanoniske SDLC er sterkt detaljert i forskjellige metodologier - OpenSAMM, BSIMM, OWASP. Metodologiene er forskjellige, men generelt liknande.<\/p>\n<h3>Bygge sikkerhet inn modningsmodellen<\/h3>\n<p>\nJeg liker best <b>BSIMM<\/b>\u00a0\u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bsimm.com\/\">Bygge sikkerhet inn modningsmodellen<\/a><\/noindex>. Grunnlaget for metodologien er delingen av prosessen for applikasjonssikkerhet i 4 domener: Governance, Intelligence, SSDL Touchpoints og Deployment. I hvert domene er det 12 praksiser, som presenteres i form av 112 aktiviteter.<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/ae0bbfd0dde335af886282672ed92367.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHver av de 112 aktivitetene har <b>3 modenhetsniv\u00e5er<\/b>: grunnleggende, mellomliggende og avansert. Alle 12 praksiser kan l\u00e6res avsnittsvis, plukk ut viktige ting for deg, finn ut hvordan du implementerer dem, og gradvis legge til elementer som statisk og dynamisk kodeanalyse eller kodegjennomgang. Du lager en plan og jobber rolig innenfor rammene av implementeringen av valgte aktiviteter.<\/p>\n<h2>Hvorfor DevSecOps<\/h2>\n<p><\/p>\n<blockquote><p>DevOps er en stor felles prosess der man m\u00e5 ta hensyn til sikkerhet.<\/p><\/blockquote>\n<p>\nOpprinnelig <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DevOps\"><b>DevOps<\/b><\/a><\/noindex> forutsatte sikkerhetskontroller. I praksis var antallet sikkerhetsteam mye mindre enn i dag, og de fungerte ikke som deltakere i prosessen, men som et kontroll- og tilsynsorgan som stiller krav til prosessen og vurderer kvaliteten p\u00e5 produktet ved slutten av utgivelsen. Dette er en klassisk tiln\u00e6rming, der sikkerhetsteamene var adskilt fra utviklingen og ikke deltok i prosessen.<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/1c5958fb123313308bdd92c5471c44da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHovedproblemet er nettopp at sikkerheten st\u00e5r adskilt fra utviklingen. Vanligvis er det en slags sikkerhetssirkel med 2-3 store og dyre verkt\u00f8y. Hver sjette m\u00e5ned kommer kildekoden eller applikasjonen som m\u00e5 sjekkes, og en gang i \u00e5ret utf\u00f8res <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\">penetrasjonstester<\/a><\/noindex>. Alt dette f\u00f8rer til at lanseringstidene blir utsatt, og utvikleren f\u00e5r akutt behov for \u00e5 h\u00e5ndtere et stort antall s\u00e5rbarheter fra automatiserte verkt\u00f8y. Alt dette er umulig \u00e5 sortere og fikse, fordi resultatene fra de siste seks m\u00e5nedene ikke er sortert, og n\u00e5 kommer det en ny b\u00f8lge.<\/p>\n<p>I l\u00f8pet av v\u00e5rt arbeid i selskapet ser vi at sikkerhet i alle felt og industrier innser at det er p\u00e5 tide \u00e5 komme ajour og samarbeide med utviklingen i ett hjul - 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 utmerket inn i metodikken for smidig utvikling, med implementering, st\u00f8tte og deltakelse i hver utgivelse og iterasjon.<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og hat 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 viktigste ordet i Security Development Lifecycle er <b>\"prosessen\"<\/b>Du m\u00e5 forst\u00e5 dette f\u00f8r du tenker p\u00e5 \u00e5 kj\u00f8pe verkt\u00f8y.<\/p>\n<blockquote><p>Det er ikke nok \u00e5 bare inkludere verkt\u00f8yene i DevOps-prosessen \u2014 interaksjon og forst\u00e5else mellom deltakerne i prosessen er viktig.<\/p><\/blockquote>\n<p><\/p>\n<h3>Menneskene er viktigere enn verkt\u00f8yene<\/h3>\n<p>\nPlanlegging av en sikker utviklingsprosess begynner ofte med valg og kj\u00f8p av verkt\u00f8y, men ender med fors\u00f8k p\u00e5 \u00e5 integrere verkt\u00f8yet i den n\u00e5v\u00e6rende prosessen, som forblir nettopp det \u2014 fors\u00f8k. Dette f\u00f8rer til triste konsekvenser, fordi hvert verkt\u00f8y har sine egne funksjoner og begrensninger.<\/p>\n<p>Et vanlig tilfelle er n\u00e5r sikkerhetsavdelingen velger et godt, dyrt verkt\u00f8y med mange muligheter, og presenterer det for utviklerne \u2014 \u00e5 integere det i prosessen. Men det lar seg ikke gj\u00f8re \u2014 prosessen er bygget slik at begrensningene til det allerede kj\u00f8pte verkt\u00f8yet ikke passer inn i den n\u00e5v\u00e6rende paradygmen.<\/p>\n<blockquote><p>F\u00f8rst beskriv hvilket resultat du \u00f8nsker og hvordan prosessen vil se ut. Dette vil hjelpe til med \u00e5 forst\u00e5 rollene til verkt\u00f8yet og sikkerhet i prosessen.<\/p><\/blockquote>\n<p><\/p>\n<h3>Begynn med det som allerede brukes<\/h3>\n<p>\nF\u00f8r du kj\u00f8per dyre verkt\u00f8y, se p\u00e5 hva du allerede har. Hver bedrift har sikkerhetskrav som stilles til utviklingen, det er sjekker, pentester \u2014 hvorfor ikke transformere alt dette til en forst\u00e5elig og brukervennlig form?<\/p>\n<p>Som regel er kravene et papirhefte som ligger p\u00e5 hyllen. Det var en gang vi kom til et selskap for \u00e5 se p\u00e5 prosessene og ba om \u00e5 f\u00e5 se sikkerhetskravene til programvaren. Spesialisten som jobbet med dette, lette lenge:<\/p>\n<p><i>\u2014 N\u00e5, et sted i notatene var det en sti til dette dokumentet.<\/i><\/p>\n<p>Til slutt fikk vi dokumentet etter en uke.<\/p>\n<p>For krav, sjekker og annet, lag en side, for eksempel p\u00e5\u00a0<b>Confluence<\/b>\u00a0\u2014 det er praktisk for alle.<\/p>\n<blockquote><p>Det er enklere \u00e5 omformatere det som allerede finnes og bruke det som utgangspunkt.<\/p><\/blockquote>\n<p><\/p>\n<h3>Bruk Security Champions <\/h3>\n<p>\nVanligvis, i et middels stort selskap med 100-200 utviklere, jobber det en sikkerhetsekspert som utf\u00f8rer flere funksjoner, og har ikke fysisk mulighet til \u00e5 sjekke alt. Selv om han gj\u00f8r sitt beste \u2014 kan han ikke sjekke all koden som utviklingen genererer alene. For slike tilfeller er konseptet utviklet \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/Security_Champions\"><b>Security Champions<\/b><\/a><\/noindex>.<\/p>\n<blockquote><p>Security Champions er en person i utviklingsteamet som er interessert i sikkerheten til produktet ditt.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/c67728db4a6e34407da199387eba2bb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSecurity Champion er inngangspunktet til utviklingsteamet og en sikkerhetsevangelsist i \u00e9n og samme person.<\/p>\n<p>Som regel, n\u00e5r en sikkerhetsrepresentant kommer inn i utviklingsteamet og p\u00e5peker en feil i koden, f\u00e5r de et overrasket svar:<\/p>\n<p><i>\u2014 Hvem er du? Jeg ser deg for f\u00f8rste gang. Alt er i orden for meg \u2014 min senior kollega la inn \"apply\" p\u00e5 code review, s\u00e5 vi g\u00e5r videre!<\/i><\/p>\n<p>Dette er en typisk situasjon fordi det er mye st\u00f8rre tillit til seniorer eller bare kolleger i teamet som utvikleren jobber tett med og har code review med. Hvis en Security Champion p\u00e5peker en feil og konsekvenser i stedet for sikkerhetsrepresentanten, vil deres ord ha mer vekst.<\/p>\n<p>Utviklere kjenner ogs\u00e5 koden sin bedre enn noen sikkerhetsrepresentant. For en person som har minst 5 prosjekter i statisk analyseverkt\u00f8y, er det vanligvis vanskelig \u00e5 huske alle nyansene. Security Champions kjenner produktet sitt: hva som interagerer med hva og hva man skal se p\u00e5 f\u00f8rst \u2014 de er mer effektive.<\/p>\n<p>S\u00e5 vurder \u00e5 implementere Security Champions og utvide sikkerhetsteamets innflytelse. For selve mesteren er dette ogs\u00e5 nyttig: profesjonell utvikling p\u00e5 et nytt omr\u00e5de, utvidelse av teknisk horisont, forbedring av tekniske, ledelsesmessige og lederferdigheter, og \u00f8kning av markedsverdi. Dette er et element av sosial ingeni\u00f8rkunst, dine \"\u00f8yne\" i utviklingsteamet.<\/p>\n<h2>Testtrinn<\/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>\u00a0sier at 20 % av innsatsen gir 80 % av resultatene. Disse 20 % er praksiser for applikasjonsanalyse som kan og b\u00f8r automatiseres. Eksempler p\u00e5 slike aktiviteter er statisk analyse \u2014 <b>SAST<\/b>, dynamisk analyse \u2014 <b>DAST,<\/b> og\u00a0<b>kontroll av Open Source<\/b>. Jeg vil fortelle mer om aktivitetene og hvilke verkt\u00f8y, samt hvilke s\u00e6rtrekk vi vanligvis st\u00f8ter p\u00e5 n\u00e5r vi implementerer dem i prosessen, og hvordan man gj\u00f8r det riktig.<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/db720e0879cdd1ed818461ffb5f927da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Hovedproblemer med verkt\u00f8yene<\/h3>\n<p>\nJeg vil fremheve aktuelle problemer som ber\u00f8rer alle verkt\u00f8yene, som krever oppmerksomhet. Jeg vil g\u00e5 mer i dybden p\u00e5 dem for ikke \u00e5 gjenta meg selv senere.<\/p>\n<p><b>Lang tid for analyse. <\/b>Hvis det tar 30 minutter fra commit til produksjon for alle tester og bygging, vil sjekker for informasjonssikkerhet ta en hel dag. Ingen vil bremse prosessen. Ta hensyn til denne egenskapen og dra konklusjoner.<\/p>\n<p><b>H\u00f8yt niv\u00e5 av False Negative eller False Positive. <\/b>Alle produkter er forskjellige, alle bruker forskjellige rammeverk og har sin egen stil for koding. P\u00e5 forskjellige kodebaser og teknologier kan verkt\u00f8yene vise varierende niv\u00e5 av False Negative og False Positive. S\u00e5 se p\u00e5 hva som gjelder for\u00a0<b>dere<\/b> og for <b>deres<\/b> applikasjoner som vil gi gode og p\u00e5litelige resultater.<\/p>\n<p><b>Ingen integrasjoner med eksisterende verkt\u00f8y<\/b>. Se p\u00e5 verkt\u00f8yene fra vinkelen av integrasjoner med det dere allerede bruker. For eksempel, hvis dere har Jenkins eller TeamCity, sjekk integrasjonen av verkt\u00f8yene med denne programvaren, og ikke med GitLab CI som dere ikke bruker.<\/p>\n<p><b>Manglende eller overdreven kompleksitet i tilpasning. <\/b>Hvis verkt\u00f8yet ikke har API, hvorfor trenger man det? Alt som kan gj\u00f8res i grensesnittet skal v\u00e6re tilgjengelig gjennom API. Ideelt sett b\u00f8r verkt\u00f8yet ha mulighet for tilpasning av sjekker.<\/p>\n<p><b>Ingen utviklings-roadmap. <\/b>Utviklingen st\u00e5r ikke stille, vi bruker alltid nye rammeverk og funksjoner, og omskriver gammel kode til nye spr\u00e5k. Vi \u00f8nsker \u00e5 v\u00e6re sikre p\u00e5 at verkt\u00f8yet vi kj\u00f8per vil st\u00f8tte nye rammeverk og teknologier. Derfor er det viktig \u00e5 vite at produktet har en reell 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 utvikling.<\/p>\n<h3>Prosessens s\u00e6regenheter<\/h3>\n<p>\nUtover egenskapene til verkt\u00f8yene, ta ogs\u00e5 hensyn til egenskapene ved utviklingsprosessen. For eksempel er det en typisk feil \u00e5 forstyrre utviklingen. La oss se hvilke andre s\u00e6regenheter vi b\u00f8r vurdere og hva sikkerhetsteamet b\u00f8r v\u00e6re oppmerksom p\u00e5.<\/p>\n<p>For \u00e5 unng\u00e5 \u00e5 forsinke utviklings- og lanseringsfrister, lag <b>ulike regler<\/b> og forskjellige <b>show stoppers\u00a0<\/b>\u2014 kriterier for \u00e5 stoppe byggeprosessen ved tilstedev\u00e6relse av s\u00e5rbarheter \u2014 <b>for forskjellige milj\u00f8er<\/b>. For eksempel forst\u00e5r vi at den n\u00e5v\u00e6rende grenen g\u00e5r til utviklingsmilj\u00f8et eller UAT, s\u00e5 vi stopper ikke og sier:<\/p>\n<p><i>\u2014 Dere har s\u00e5rbarheter her, dere kan ikke g\u00e5 videre!<\/i><\/p>\n<p>P\u00e5 dette stadiet er det viktig \u00e5 informere utviklerne om sikkerhetsproblemer som de b\u00f8r v\u00e6re oppmerksomme p\u00e5.<\/p>\n<p><b>Tilgjengeligheten av s\u00e5rbarheter er ikke en hindring for videre testing.<\/b>: manuell, integrering eller manual. P\u00e5 den annen side trenger vi \u00e5 forbedre sikkerheten til produktet, s\u00e5 utviklerne m\u00e5 v\u00e6re oppmerksomme p\u00e5 hva sikkerhetsanalysene finner. Derfor noen ganger handler vi slik: n\u00e5r vi distribuerer p\u00e5 utviklingsmilj\u00f8et, varsler vi utviklingen:<\/p>\n<p><i>\u2014  Hei, dere har problemer, v\u00e6r s\u00e5 snill og ta hensyn til dem.<\/i><\/p>\n<p>I UAT-fasen viser vi igjen varsler om s\u00e5rbarheter, og i produksjonsfasen sier vi:<\/p>\n<p><i>\u2014  Hei, vi har advart flere ganger, dere har ikke gjort noe - vi kan ikke slippe dere ut med dette.<\/i><\/p>\n<p>N\u00e5r det gjelder koden og dynamikken, m\u00e5 vi vise og varsle om s\u00e5rbarheter bare i de funksjonene og koden som nettopp har blitt skrevet i denne funksjonen. Hvis utvikleren har flyttet en knapp med 3 piksler og vi sier til vedkommende at det er en SQL-injeksjon der som m\u00e5 rettes opp umiddelbart - det er feil. Se kun p\u00e5 det som er skrevet n\u00e5, og p\u00e5 den endringen som kommer inn i applikasjonen.<\/p>\n<p>La oss si at vi har en funksjonell feil - hvordan applikasjonen ikke skal fungere: penger overf\u00f8res ikke, klikker man p\u00e5 knappen, er det ingen overgang til neste side, eller varer lastes ikke opp. <b>Sikkerhetsdefekter<\/b>\u00a0\u2014 det er ogs\u00e5 defekter, men ikke med hensyn til applikasjonens arbeid, men i forhold til sikkerhet. <\/p>\n<blockquote><p>Ikke alle programvarekvalitetsproblemer er sikkerhetsproblemer. Men alle sikkerhetsproblemer er relatert til programvarekvalitet. Sherif Mansour, Expedia.<\/p><\/blockquote>\n<p>\nSiden alle s\u00e5rbarheter er slike defekter, b\u00f8r de finnes der hvor alle utviklingsfeil er. S\u00e5 glem rapportene og de skremmende PDF-ene som ingen leser.<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/e54e64658a3882bdc68a48c6ef426746.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDa jeg jobbet for et selskap som drev med utvikling, fikk jeg tilsendt en rapport fra statiske analyseverkt\u00f8y. Jeg \u00e5pnet den, ble forskrekket, lagde meg kaffe, bladde gjennom 350 sider, lukket den og fortsatte med arbeidet mitt. <b>Store rapporter er d\u00f8de rapporter<\/b>. De g\u00e5r vanligvis ingen steder, e-poster slettes, glemmes, mistes, eller forretningen sier at de aksepterer risikoer.<\/p>\n<p>Hva gj\u00f8r man? Bekreftede feil som er funnet, blir enkelt omgjort til en utviklingsvennlig format, for eksempel lagret i backlog i Jira. Vi prioriterer feil og retter dem i rekkef\u00f8lge etter prioritet, p\u00e5 lik linje med funksjonelle feil og testfeil.<\/p>\n<h2>Statisk analyse - SAST<\/h2>\n<p>\n<b>Dette er en kodeanalyse for s\u00e5rbarheter<\/b>, men dette er ikke det samme som SonarQube. Vi sjekker ikke bare ut ifra m\u00f8nstre eller stil. I analysen brukes en rekke tiln\u00e6rminger: ved hjelp av s\u00e5rbarhetstreet, ved\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>, ved analyse av konfigurasjonsfiler. Dette er alt som gjelder koden direkte.<\/p>\n<p><b>Fordeler med tiln\u00e6rmingen<\/b>: <b>avdekking av s\u00e5rbarheter i koden tidlig i utviklingsprosessen<\/b>, n\u00e5r det fortsatt ikke finnes milj\u00f8er og verkt\u00f8y er klare, og<b>\u00a0mulighet for inkrementell skanning<\/b>: skanning av den delen av koden som har blitt endret, og bare av den funksjonaliteten vi jobber med n\u00e5, noe som reduserer skanningstiden.<\/p>\n<p><b>Ulemper<\/b>\u00a0\u2014 er frav\u00e6ret av st\u00f8tte for n\u00f8dvendige spr\u00e5k.<\/p>\n<p><b>N\u00f8dvendige integrasjoner, <\/b>som m\u00e5 v\u00e6re i verkt\u00f8yene, etter min subjektive mening:<\/p>\n<ul>\n<li>Integrasjonsverkt\u00f8y: Jenkins, TeamCity og Gitlab CI.\n<\/li>\n<li>Utviklingsmilj\u00f8: Intellij IDEA, Visual Studio. Det er lettere for utvikleren \u00e5 ikke navigere i en uforst\u00e5elig grensesnitt som m\u00e5 memoreres, men \u00e5 se alle n\u00f8dvendige integrasjoner og s\u00e5rbarheter han har funnet, rett p\u00e5 arbeidsplassen i sitt eget utviklingsmilj\u00f8.\n<\/li>\n<li>Kodegjennomgang: SonarQube og manuell gjennomgang.\n<\/li>\n<li>Feilsporeverkt\u00f8y: Jira og Bugzilla.\n<\/li>\n<\/ul>\n<p>\nBildet viser noen av de beste representantene for statisk analyse.<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/bab3420874ac090d4d107edb0d2b857b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet er prosessen som er viktig, ikke verkt\u00f8yene, s\u00e5 det finnes Open Source-l\u00f8sninger som ogs\u00e5 er gode for \u00e5 utvikle prosessen.<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/4f2c278922c291b15922bc5748f87dc3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSAST Open Source vil ikke finne et stort antall s\u00e5rbarheter eller komplekse DataFlow, men n\u00e5r prosessen bygges, kan og b\u00f8r de brukes. De hjelper til med \u00e5 forst\u00e5 hvordan prosessen skal bygges, hvem som skal svare p\u00e5 feilene, hvem som skal rapportere og hvem som skal rapportere tilbake. Hvis du \u00f8nsker \u00e5 gjennomf\u00f8re det f\u00f8rste steget i oppbyggingen av sikkerheten til koden din - bruk Open Source-l\u00f8sninger.<\/p>\n<p>Hvordan kan dette integreres hvis du er i starten av reisen, hvis du ikke har noe: hverken CI, Jenkins eller TeamCity? La oss se p\u00e5 integrasjoner i prosessen.<\/p>\n<h3>Integrasjon p\u00e5 CVS-niv\u00e5<\/h3>\n<p>\nHvis du har Bitbucket eller GitLab, kan du gj\u00f8re integrasjon p\u00e5 niv\u00e5et <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/CVS\">Concurrent Versions System<\/a><\/noindex>.<\/p>\n<p><b>Ved hendelse<\/b>\u00a0\u2014 pull request, commit. Du skanner koden og viser i statusen til byggingen om sikkerhetskontrollen har best\u00e5tt eller ikke.<\/p>\n<p><b>Tilbakemelding. <\/b>Uten tvil er tilbakemelding alltid n\u00f8dvendig. Hvis du bare har utf\u00f8rt oppgaven p\u00e5 sikkerhetssiden, pakket det inn i en boks og fortalt ingen om det, og deretter p\u00e5 slutten av m\u00e5neden kommer med en haug med feil - det er ikke riktig og ikke bra.<\/p>\n<h3>Integrasjon med systemet for kodegjennomgang<\/h3>\n<p>\nEn gang hadde vi en teknisk bruker fra AppSec som standardgjennomgj\u00f8rer for viktige prosjekter. Avhengig av om det ble funnet feil i den nye koden eller ei, tildeler gjennomgangeren statusen til pull request som \u00abakseptert\u00bb eller \u00abtrenger arbeid\u00bb - enten alt er OK, eller det er behov for videre arbeid med linker til hva som m\u00e5 forbedres. For integreringen med versjonen som g\u00e5r til produksjon, hadde vi aktivert forbud mot fletning hvis testen for informasjonssikkerhet ikke bestod. Vi inkluderte dette i manuell kodegjennomgang, og de andre deltakerne i prosessen s\u00e5 sikkerhetsstatusene for nettopp denne spesifikke prosessen.<\/p>\n<h3>Integrasjon 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 - man kan lage de samme gates bare for SAST-verkt\u00f8y. Det vil v\u00e6re det samme grensesnittet, den samme quality gate, men den vil bli kalt <b>security gate<\/b>. Og p\u00e5 samme m\u00e5te, hvis du har satt opp prosessen med SonarQube, kan du enkelt integrere alt dit.<\/p>\n<h3>Integrasjon p\u00e5 CI-niv\u00e5<\/h3>\n<p>\nHer er det ogs\u00e5 ganske enkelt:<\/p>\n<ul>\n<li><b>P\u00e5 samme niv\u00e5 som automatiserte tester<\/b>, enhetstester.\n<\/li>\n<li><b>Oppdeling etter utviklingsfaser<\/b>: dev, test, prod. Ulike sett med regler kan aktiveres, eller forskjellige feilkriterier: stoppe byggingen, ikke stoppe byggingen.\n<\/li>\n<li><b>Synkron\/asin.kron oppstart<\/b>. Vi venter p\u00e5 \u00e5 f\u00e5 vite om sikkerhetstestene er ferdige eller ikke. Det vil si at vi bare startet dem og g\u00e5r videre, og deretter kommer statusen til oss om at alt er bra eller d\u00e5rlig.\n<\/li>\n<\/ul>\n<p>\nDette er alt i en ideell verden. I det virkelige liv finnes ikke dette, men vi streber etter det. Resultatet av sikkerhetskontrollene b\u00f8r v\u00e6re likt resultatene fra enhetstestene.<\/p>\n<p>For example, we took on a large project and decided that we would now scan it with SAST \u2014 OK. We fed this project into SAST, which reported 20,000 vulnerabilities, and by force of will, we accepted that everything was fine. 20,000 vulnerabilities \u2014 that\u2019s our technical debt. We'll box up the debt, gradually tackle it, and log bugs in the defect trackers. We\u2019ll hire a company, do everything ourselves, or be assisted by Security Champions \u2014 and the technical debt will decrease.<\/p>\n<p>All newly appeared vulnerabilities in the new code must be resolved just like errors in unit or automated tests. Conditionally speaking, a build was launched, ran the tests, two tests fell and two security tests failed. OK \u2014 we checked what happened, fixed one issue, fixed the other, ran the tests next time \u2014 all good, no new vulnerabilities appeared, tests were not failed. If this task is deeper and needs a thorough investigation, or fixing vulnerabilities affects large parts of what lies beneath: a bug was logged in the defect tracker, it gets 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=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/eb30d3c7988b28c2cb25e9656871ec96.png\" style=\"display:block;margin: 0 auto;\" \/>We integrate with SonarQube \u2014 the plugin is installed, everything is very convenient and cool.<\/p>\n<h3>Integration with the development environment<\/h3>\n<p>\n<b>Integration capabilities:<\/b><\/p>\n<ul>\n<li>Running scans from the development environment even before a 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=\"Frykt og hat 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> there simply appears an additional item that informs that vulnerabilities were found during the scan. You can immediately fix the code, check recommendations and\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_graph\">Flow Graph<\/a><\/noindex>. Everything is located at the developer's workstation, which is very convenient \u2014 no need to navigate through additional links to check something else.<\/p>\n<h2>Open Source<\/h2>\n<p>\nThis is my favorite topic. Everyone uses Open Source libraries \u2014 why write a bunch of workarounds and wheel reinventions when you can use a ready-made library where everything is already implemented?<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/05b9cd5a8b269af2a3f59931a0774778.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSelvf\u00f8lgelig, det er slik, men biblioteker skrives ogs\u00e5 av mennesker, og de medf\u00f8rer ogs\u00e5 bestemte risikoer og inneholder ogs\u00e5 s\u00e5rbarheter som av og til eller stadig rapporteres. Derfor er det neste trinnet i Application Security \u2013 analyse av Open Source-komponenter.<\/p>\n<h3>Analyse av Open Source \u2013 OSA<\/h3>\n<p>\nVerkt\u00f8yet inkluderer tre store faser.<\/p>\n<p><b>S\u00f8ke etter s\u00e5rbarheter i bibliotekene. <\/b>For eksempel vet verkt\u00f8yet at vi bruker et 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-trackere finnes det s\u00e5rbarheter som ang\u00e5r denne versjonen av biblioteket. N\u00e5r man pr\u00f8ver \u00e5 bruke det, vil verkt\u00f8yet gi en advarsel om at biblioteket er s\u00e5rbart, og anbefale \u00e5 bruke en annen versjon hvor s\u00e5rbarhetene ikke finnes.<\/p>\n<p><b>Analyse av lisensrenhet. <\/b>Dette er enn\u00e5 ikke spesielt popul\u00e6rt her, men hvis du jobber med utenlandske prosjekter, kan du noen ganger f\u00e5 problemer for \u00e5 bruke en Open Source-komponent som ikke kan brukes eller modifiseres. I henhold til lisenspolitikken til biblioteket, kan vi ikke gj\u00f8re dette. Hvis vi har modifisert det og bruker det, m\u00e5 vi legge ut koden v\u00e5r. Selvf\u00f8lgelig \u00f8nsker ingen \u00e5 publisere koden til sine produkter, men det finnes m\u00e5ter \u00e5 beskytte seg mot dette.<\/p>\n<p><b>Analyse av komponenter som brukes i industrien. <\/b>La oss anta en hypotetisk situasjon hvor vi endelig har fullf\u00f8rt utviklingen og utgitt den siste versjonen av mikrotjenesten v\u00e5r. Den lever der fantastisk \u2013 en uke, en m\u00e5ned, et \u00e5r. Vi samler den ikke inn, gjennomf\u00f8rer ikke sikkerhetssjekker, alt virker bra. Men plutselig, to uker etter utgivelsen, avdekkes en kritisk s\u00e5rbarhet i Open Source-komponenten vi bruker nettopp i denne utgitt versjonen, i produksjonsmilj\u00f8et. Hvis vi ikke registrerer hva og hvor vi bruker, vil vi bare ikke f\u00e5 med oss denne s\u00e5rbarheten. I enkelte verkt\u00f8y er det muligheter for \u00e5 overv\u00e5ke s\u00e5rbarheter i bibliotekene som n\u00e5 brukes i produksjon. Dette er veldig nyttig.<\/p>\n<p><b>Muligheter:<\/b><\/p>\n<ul>\n<li>Ulike retningslinjer for forskjellige faser av utviklingen.\n<\/li>\n<li>Overv\u00e5king av komponenter i produksjonsmilj\u00f8et.\n<\/li>\n<li>Kontroll av bibliotekene innenfor organisasjonens rammer.\n<\/li>\n<li>St\u00f8tte for ulike byggesystemer og spr\u00e5k.\n<\/li>\n<li>Analyse av Docker-bilder.\n<\/li>\n<\/ul>\n<p>\nNoen eksempler p\u00e5 ledere innen omr\u00e5det som jobber med analyse av Open Source.<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/f1b05f86beb4a64f9bf3443963e3603b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDen eneste gratis av dem er <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/OWASP_Dependency_Check\">Dependency-Check<\/a><\/noindex> fra OWASP. Det kan aktiveres i de tidlige fasene for \u00e5 se hvordan det fungerer og hva det st\u00f8tter. Hovedsakelig er dette alle skyprodukter eller on-premise, men til tross for dette blir de fortsatt sendt til internett. De sender ikke dine biblioteker, men snarere hasher eller sine egne verdier som de beregner, og fingeravtrykk til sine servere for \u00e5 f\u00e5 varsler om s\u00e5rbarheter.<\/p>\n<h3>Integrasjon i prosessen<\/h3>\n<p>\n<b>Bokholderkontroll i perimetern<\/b>, som lastes ned fra eksterne kilder. Vi har b\u00e5de eksterne og interne depot. For eksempel, inne i Event Central har vi Nexus, og vi \u00f8nsker at det ikke skal v\u00e6re noen s\u00e5rbarheter med status \"kritisk\" eller \"h\u00f8y\" i v\u00e5rt interne depot. Det er mulig \u00e5 konfigurere proxy med verkt\u00f8yet Nexus Firewall Lifecycle for \u00e5 stenge slike s\u00e5rbarheter ute fra det interne depot.<\/p>\n<p><b>Integrasjon i CI<\/b>. P\u00e5 samme niv\u00e5 som autotester, enhetstester og oppdeling etter utviklingsfaser: dev, test, prod. I hver fase kan du laste ned alle bibliotekene, bruke hva som helst, men hvis det er noe alvorlig med status 'kritisk', vil kanskje utviklerne v\u00e6re enige i at det er noe de b\u00f8r v\u00e6re oppmerksomme p\u00e5 f\u00f8r produksjon.<\/p>\n<p><b>Integrasjon med artefaktlagre<\/b>: Nexus og JFrog.<\/p>\n<p><b>Integrasjon i utviklingsmilj\u00f8et. <\/b>Verkt\u00f8yene du velger, m\u00e5 ha integrasjon med utviklingsmilj\u00f8er. Utvikleren m\u00e5 ha tilgang til skanneresultatene fra sin arbeidsplass, eller mulighet til \u00e5 skanne selv og sjekke koden for s\u00e5rbarheter f\u00f8r de committer til CVS.<\/p>\n<p><b>Integrasjon i CD. <\/b>Dette er en fantastisk funksjon som jeg liker veldig godt og som jeg allerede har snakket om \u2013 overv\u00e5king av nye s\u00e5rbarheter i produksjonsmilj\u00f8et. Det fungerer omtrent slik.<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/605c638df343db5c47ab36b4dc00f41c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi har <b>Offentlige komponentdepoter<\/b>\u00a0\u2014 noen verkt\u00f8y utenfor, og v\u00e5rt interne lager. Vi vil at det kun skal v\u00e6re trusted components der. N\u00e5r vi proxier en foresp\u00f8rsel, kontrollerer vi at det nedlastede biblioteket ikke har s\u00e5rbarheter. Hvis det faller under spesifikke retningslinjer som vi setter og som n\u00f8dvendigvis m\u00e5 godkjennes av utviklingen, laster vi det ikke opp, og det kommer et avslag om \u00e5 bruke en annen versjon. Dermed, hvis det er noe virkelig kritisk og d\u00e5rlig i biblioteket, vil utvikleren ikke f\u00e5 biblioteket p\u00e5 installasjonsstadiet\u2014han m\u00e5 bruke en h\u00f8yere eller lavere versjon.<\/p>\n<ul>\n<li>Ved bygging sjekker vi at ingen har fors\u00f8kt \u00e5 lure inn noe d\u00e5rlig, at alle komponentene er sikre, og at ingen har f\u00f8rt inn noe farlig p\u00e5 en USB-enhet.\n<\/li>\n<li>I lageret v\u00e5rt har vi kun trusted components. \n<\/li>\n<li>Ved distribusjon sjekker vi igjen selve pakken: war, jar, DL eller Docker-bilde for \u00e5 se at det er i samsvar med retningslinjene. \n<\/li>\n<li>N\u00e5r vi g\u00e5r ut i produksjon overv\u00e5ker vi hva som skjer i det industrielle milj\u00f8et: dukker det opp kritiske s\u00e5rbarheter eller ikke.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Dynamisk analyse \u2013 DAST<\/h2>\n<p>\nVerkt\u00f8yene for dynamisk analyse skiller seg radikalt fra alt som er sagt f\u00f8r. Dette er en form for simulering av brukerens interaksjon med applikasjonen. Hvis det er en webapplikasjon, sender vi foresp\u00f8rslene som imiterer klientens arbeid, trykker p\u00e5 knapper p\u00e5 fronten, sender kunstige data fra skjemaet: anf\u00f8rselstegn, parenteser, tegn i forskjellige koderinger, for \u00e5 se hvordan applikasjonen fungerer og behandler eksterne data.<\/p>\n<p>Det samme systemet lar oss sjekke mal-s\u00e5rbarheter i Open Source. Siden DAST ikke vet hvilken Open Source vi bruker, sender det bare \u00abondsinnede\u00bb m\u00f8nstre og analyserer serverens svar:<\/p>\n<p><i>\u2014 Aha, her er det et deserialiseringsproblem, og her er det ikke.<\/i><\/p>\n<p>Det medf\u00f8rer store risikoer, fordi hvis du gjennomf\u00f8rer denne sikkerhetstesten p\u00e5 den samme plattformen som testerne arbeider med\u2014kan det skje ubehagelige ting.<\/p>\n<ul>\n<li>H\u00f8y belastning p\u00e5 nettverksserveren for applikasjonen.\n<\/li>\n<li>Ingen integrasjoner.\n<\/li>\n<li>Mulighet for \u00e5 endre innstillingene for den analyserte applikasjonen.\n<\/li>\n<li>Ingen st\u00f8tte for n\u00f8dvendige teknologier.\n<\/li>\n<li>Vanskeligheter med oppsett.\n<\/li>\n<\/ul>\n<p>\nVi hadde en situasjon der vi endelig startet AppScan: vi fikk i lang tid tilgang til applikasjonen, fikk tre kontoer og ble glade \u2013 endelig skulle vi sjekke alt! Vi startet skanningen, og det f\u00f8rste AppScan gjorde var \u00e5 g\u00e5 inn i administrasjonspanelet, trykke p\u00e5 alle knapper, endre halvparten av dataene, og s\u00e5 drepte den til og med serveren sin. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mailform.io\/\">mailform<\/a><\/noindex>-foresp\u00f8rslene. Utviklingen med testing sa:<\/p>\n<p><i>\u2013 Folkens, er dere seri\u00f8se?! Vi ga dere kontoene, og dere la ned testmilj\u00f8et!<\/i><\/p>\n<p>V\u00e6r oppmerksom p\u00e5 mulige risikoer. Ideelt sett b\u00f8r du forberede et eget milj\u00f8 for testing av informasjonssikkerhet som er isolert fra resten av omgivelsene, og det anbefales \u00e5 sjekke administrasjonspanelet i manuell modus. Dette er en pentest \u2013 de gjenv\u00e6rende prosentene av innsatsen som vi ikke vurderer n\u00e5. <\/p>\n<p>Det er verdt \u00e5 merke seg at dette kan brukes som en analog til belastningstesting. I den f\u00f8rste fasen kan du aktivere en dynamisk skanner med 10-15 tr\u00e5der og se hva som skjer, men som regel, som praksis viser, er resultatene ikke gode.<\/p>\n<p>Noen ressurser som vi vanligvis bruker.<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/45a25dbe2a2d053e6ed16d31b6ac53ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet er verdt \u00e5 fremheve <noindex><a rel=\"nofollow\" href=\"https:\/\/portswigger.net\/burp\">Burp Suite<\/a><\/noindex>\u00a0\u2013 dette er \u00absveitsisk arm\u00e9kniv\u00bb for enhver sikkerhetsspesialist. Alle bruker det, og det er veldig praktisk. N\u00e5 har det kommet en ny demoversjon av enterprise edition. Tidligere var dette bare et stand-alone verkt\u00f8y med plugins, men n\u00e5 lager utviklerne endelig en stor server som gj\u00f8r det mulig \u00e5 administrere flere agenter. Dette er flott, jeg anbefaler \u00e5 pr\u00f8ve det.<\/p>\n<h3>Integrasjon i prosessen<\/h3>\n<p>\nIntegrasjonen skjer ganske bra og enkelt: <b>start skanningen etter vellykket installasjon <\/b>av applikasjonen p\u00e5 milj\u00f8et og\u00a0<b>skanning etter vellykket gjennomf\u00f8ring av integrasjonstesting.<\/b>.<\/p>\n<p>Hvis integrasjonene ikke fungerer eller det er dummy-funksjoner og mock-funksjoner, er det meningsl\u00f8st og nyttel\u00f8st \u2013 uansett hvilket m\u00f8nster vi sender, vil serveren svare likt.<\/p>\n<ul>\n<li>Ideelt sett \u2013 et eget milj\u00f8 for testing.\n<\/li>\n<li>F\u00f8r testingen, skriv ned innloggingssekvensen.\n<\/li>\n<li>Testing av administrasjonssystemet \u2013 bare manuelt.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Prosessen<\/h2>\n<p>\nLitt generelt om prosessen generelt og om arbeidet til hvert enkelt verkt\u00f8y. Alle applikasjoner er forskjellige \u2013 \u00e9n fungerer bedre med dynamisk analyse, en annen med statisk, en tredje med OpenSource-analyse, pentester eller noe helt annet, for eksempel hendelser med\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Waf\">Waf<\/a><\/noindex>.<\/p>\n<blockquote><p>Hver prosess trenger kontroll.<\/p><\/blockquote>\n<p>\nFor \u00e5 forst\u00e5 hvordan prosessen fungerer og hvor den kan forbedres, m\u00e5 man samle inn metrikker fra alt man har tilgang til, inkludert produksjonsmetrikker, metrikker fra verkt\u00f8y og fra feilsporere.<\/p>\n<p>Alle data er nyttige. Man m\u00e5 se p\u00e5 forskjellige perspektiver for \u00e5 forst\u00e5 hvor et verkt\u00f8y er best anvendt, og hvor prosessen spesifikt svikter. Kanskje man b\u00f8r se p\u00e5 utviklernes responstid for \u00e5 finne ut hvor forbedringer kan gj\u00f8res basert p\u00e5 tid. Jo flere data man har, jo flere perspektiver kan man bygge fra overordnede til detaljerte prosessniv\u00e5er.<\/p>\n<p><img decoding=\"async\" alt=\"Frykt og hat DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/93e079b19c4c8189ce6ca4eaec186eed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSiden alle statiske og dynamiske analyseverkt\u00f8y har sine egne API-er, m\u00e5ter \u00e5 kj\u00f8re p\u00e5, prinsipper, noen har planleggere, andre har ikke \u2013 vi utvikler et verkt\u00f8y <b>AppSec Orkestrator<\/b>, som gir en enkelt tilgangspunkt til hele prosessen fra produktet og lar deg styre det fra ett punkt.<\/p>\n<p>For ledere, utviklere og sikkerhetsingeni\u00f8rer er det ett tilgangspunkt hvor man kan se hva som er igangsatt, konfigurere og starte skanning, f\u00e5 resultatene fra skanningen og stille krav. Vi pr\u00f8ver \u00e5 unng\u00e5 papirer og oversette alt til et menneskelig format som er i bruk av utviklere \u2013 sider p\u00e5 Confluence med status og metrikker, feil i Jira eller forskjellige feilsporere, eller integrere i synkron \/ asynkron prosess i CI\/CD.<\/p>\n<h2>Hovedpunkter<\/h2>\n<p>\n<b>Verkt\u00f8yene er ikke det viktigste.<\/b> F\u00f8rst m\u00e5 man tenke gjennom prosessen \u2013 deretter implementere verkt\u00f8y. Verkt\u00f8yene er gode, men dyre, s\u00e5 man kan begynne med prosessen og etablere samarbeid og forst\u00e5else mellom utvikling og sikkerhet. Fra et sikkerhetssynspunkt \u2013 man m\u00e5 ikke \"stoppe\" alt som kommer forbi, fra et utviklingssynspunkt \u2013 hvis noe er high mega super kritisk, m\u00e5 det utbedres i stedet for \u00e5 lukke \u00f8ynene for problemet.<\/p>\n<p><b>Produktkvalitet<\/b>\u00a0<b>\u2013 et felles m\u00e5l<\/b> for b\u00e5de sikkerhet og utvikling. Vi gj\u00f8r det samme, pr\u00f8ver \u00e5 sikre at alt fungerer riktig og at det ikke er noen omd\u00f8mmerisikoer eller \u00f8konomiske tap. Derfor fremmer vi tiln\u00e6rmingen til DevSecOps, SecDevOps, for \u00e5 etablere kommunikasjon og gj\u00f8re produktet bedre.<\/p>\n<p><b>Begynn med det som allerede finnes.<\/b>: krav, arkitektur, delvise kontroller, treninger, retningslinjer. Du trenger ikke \u00e5 implementere alle praksiser p\u00e5 alle prosjekter med \u00e9n gang \u2014 <b>g\u00e5 iterativt<\/b>. Det finnes ingen enhetlig standard \u2014 <b>eksperimenter<\/b> og pr\u00f8v ulike tiln\u00e6rminger og l\u00f8sninger.<\/p>\n<p><b>Mellom sikkerhetsfeil og funksjonalitetsfeil er det likhetstegn<\/b>.<\/p>\n<p><b>Automatiser alt<\/b>, som beveger seg. Alt som ikke beveger seg \u2014 beveg det og automatiser det. Hvis noe gj\u00f8res manuelt, er ikke det en god del av prosessen. Det kan v\u00e6re lurt \u00e5 revurdere det og ogs\u00e5 automatisere.<\/p>\n<p>Hvis st\u00f8rrelsen p\u00e5 sikkerhetsteamet er liten \u2014 <b>bruk Security Champions<\/b>.<\/p>\n<p>Kanskje det jeg har snakket om ikke passer for deg, og du finner p\u00e5 noe eget \u2014 og det er bra. Men\u00a0<b>velg verkt\u00f8y basert p\u00e5 kravene til din egen prosess<\/b>. Ikke se p\u00e5 hva communityen sier, at dette verkt\u00f8yet er d\u00e5rlig, og dette er bra. Kanskje alt viser seg \u00e5 v\u00e6re motsatt for ditt produkt.<\/p>\n<p><b>Krav til verkt\u00f8yene.<\/b><\/p>\n<ul>\n<li>Lavt niv\u00e5 av falske positiver.\n<\/li>\n<li>Rimelig analysetid.\n<\/li>\n<li>Brukervennlighet.\n<\/li>\n<li>Tilgjengelighet av integrasjoner.\n<\/li>\n<li>Forst\u00e5else av produktets utviklingsroadmap.\n<\/li>\n<li>Mulighet for tilpasning av verkt\u00f8yene.\n<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p>Yuris presentasjon ble valgt som en av de beste p\u00e5 DevOpsConf 2018. For \u00e5 bli kjent med enda flere interessante ideer og praktiske saker, kom til Skolkovo 27. og 28. mai p\u00e5\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow-rit\/2019\">DevOpsConf<\/a><\/noindex> som en del av <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2019\">RIT++ festivalen<\/a><\/noindex>. Og enda bedre, hvis du er villig til \u00e5 dele din erfaring, s\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-rit\">send inn en s\u00f8knad<\/a><\/noindex> til presentasjonen innen 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.5 - 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\/no\/blog\/administrirovanie\/strah-i-nenavist-devsecops\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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\udd47Frykt og aversjon i DevSecOps | ProHoster","description":"Vi hadde 2 kodeanalysatorer, 4 verkt\u00f8y for dynamisk testing, egne prosjekter og 250 skript.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/strah-i-nenavist-devsecops","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/31852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=31852"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/31852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/23720"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=31852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=31852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=31852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}