Frykt og avsky for DevSecOps

Vi hadde 2 kodeanalysatorer, 4 dynamiske testverktÞy, vÄrt eget hÄndverk og 250 skript. Det er ikke det at alt dette er nÞdvendig i den nÄvÊrende prosessen, men nÄr du begynner Ä implementere DevSecOps, mÄ du gÄ til slutten.

Frykt og avsky for DevSecOps

Kilde. Karakterskapere: Justin Roiland og Dan Harmon.

Hva er SecDevOps? Hva med DevSecOps? Hva er forskjellene? Applikasjonssikkerhet – hva handler det om? Hvorfor fungerer ikke den klassiske tilnĂŠrmingen lenger? Vet svaret pĂ„ alle disse spĂžrsmĂ„lene Yuri Shabalin av Sverdfisksikkerhet. Yuri vil svare pĂ„ alt i detalj og analysere problemene med overgangen fra den klassiske applikasjonssikkerhetsmodellen til DevSecOps-prosessen: hvordan man pĂ„ riktig mĂ„te nĂŠrmer seg integreringen av den sikre utviklingsprosessen i DevOps-prosessen og ikke bryter noe, hvordan gĂ„r man gjennom hovedstadiene av sikkerhetstesting, hvilke verktĂžy som kan brukes, og hva de skiller seg fra og hvordan du konfigurerer dem riktig for Ă„ unngĂ„ fallgruver.

Spill av video

Om foredragsholderen: Yuri Shabalin - Hovedsikkerhetsarkitekt i selskapet Sverdfisksikkerhet. Ansvarlig for implementering av SSDL, for den generelle integreringen av applikasjonsanalyseverktÞy i et enhetlig utviklings- og testÞkosystem. 7 Ärs erfaring innen informasjonssikkerhet. Jobbet i Alfa-Bank, Sberbank og Positive Technologies, som utvikler programvare og leverer tjenester. Foredragsholder pÄ internasjonale konferanser ZerONights, PHDays, RISSPA, OWASP.

Applikasjonssikkerhet: hva handler det om?

Programvaresikkerhet â€“ Dette er sikkerhetsseksjonen som har ansvar for applikasjonssikkerhet. Dette gjelder ikke infrastruktur eller nettverkssikkerhet, men heller hva vi skriver og hva utviklere jobber med – dette er manglene og sĂ„rbarhetene ved selve applikasjonen.

retning SDL eller SDLC - Sikkerhetsutvikling livssyklus - utviklet av Microsoft. Diagrammet viser den kanoniske SDLC-modellen, hvis hovedoppgave er deltakelse av sikkerhet pĂ„ alle trinn i utviklingen, fra krav til utgivelse og produksjon. Microsoft innsĂ„ at det var for mange feil i bransjen, det var flere av dem og noe mĂ„tte gjĂžres med det, og de foreslo denne tilnĂŠrmingen, som har blitt kanonisk.

Frykt og avsky for DevSecOps

Application Security og SSDL er ikke rettet mot Ă„ oppdage sĂ„rbarheter, slik man vanligvis tror, ​​men pĂ„ Ă„ forhindre at de oppstĂ„r. Over tid har Microsofts kanoniske tilnĂŠrming blitt forbedret, utviklet og introdusert i et dypere, mer detaljert dykk.

Frykt og avsky for DevSecOps

Den kanoniske SDLC er svĂŠrt detaljert i ulike metoder - OpenSAMM, BSIMM, OWASP. Metodene er forskjellige, men generelt like.

Byggesikkerhet i modenhetsmodell

Jeg liker det best BSIMM - Byggesikkerhet i modenhetsmodell. Grunnlaget for metodikken er inndelingen av Application Security-prosessen i 4 domener: Governance, Intelligence, SSDL Touchpoints og Deployment. Hvert domene har 12 praksiser, som er representert som 112 aktiviteter.

Frykt og avsky for DevSecOps

Hver av de 112 aktivitetene har 3 nivÄer av modenhet: nybegynner, middels og avansert. Du kan studere alle de 12 praksisene seksjon for seksjon, velge ting som er viktige for deg, finne ut hvordan du implementerer dem og gradvis legge til elementer, for eksempel statisk og dynamisk kodeanalyse eller kodegjennomgang. Du skriver ned en plan og jobber rolig etter den som en del av gjennomfÞringen av de valgte aktivitetene.

Hvorfor DevSecOps

DevOps er en generell, stor prosess der sikkerhet mÄ tas i betraktning.

Utgangspunktet DevOps involvert sikkerhetskontroller. I praksis var antallet sikkerhetsteam mye mindre enn nÄ, og de fungerte ikke som deltakere i prosessen, men som et kontroll- og tilsynsorgan som stiller krav til det og kontrollerer kvaliteten pÄ produktet ved slutten av utgivelsen. Dette er en klassisk tilnÊrming der sikkerhetsteam var bak muren fra utviklingen og ikke deltok i prosessen.

Frykt og avsky for DevSecOps

Hovedproblemet er at informasjonssikkerhet er atskilt fra utvikling. Vanligvis er dette en slags informasjonssikkerhetskrets og den inneholder 2-3 store og dyre verktÞy. En gang i halvÄret kommer kildekoden eller applikasjonen som skal sjekkes, og en gang i Äret produseres de pentests. Alt dette fÞrer til at utgivelsesdatoen for industrien er forsinket, og utvikleren blir utsatt for et stort antall sÄrbarheter fra automatiserte verktÞy. Det er umulig Ä demontere og reparere alt dette, fordi resultatene for de foregÄende seks mÄnedene ikke ble sortert ut, men her er en ny batch.

I lĂžpet av vĂ„rt selskaps arbeid ser vi at sikkerhet i alle omrĂ„der og bransjer forstĂ„r at det er pĂ„ tide Ă„ ta igjen og snurre med utviklingen pĂ„ samme hjul - i Agile. DevSecOps-paradigmet passer perfekt med smidig utviklingsmetodikk, implementering, stĂžtte og deltakelse i hver utgivelse og iterasjon.

Frykt og avsky for DevSecOps

Overgang til DevSecOps

Det viktigste ordet i livssyklusen for sikkerhetsutvikling er "prosess". Du mÄ forstÄ dette fÞr du tenker pÄ Ä kjÞpe verktÞy.

Det er ikke nok Ă„ inkorporere verktĂžy i DevOps-prosessen – kommunikasjon og forstĂ„else mellom prosessdeltakere er viktig.

Mennesker er viktigere, ikke verktĂžy.

Ofte begynner planleggingen av en sikker utviklingsprosess med valg og kjÞp av et verktÞy, og ender med forsÞk pÄ Ä integrere verktÞyet i den nÄvÊrende prosessen, som fortsatt er forsÞk. Dette fÞrer til uheldige konsekvenser, fordi alle verktÞy har sine egne egenskaper og begrensninger.

Et vanlig tilfelle er nÄr sikkerhetsavdelingen valgte et godt, kostbart verktÞy med brede muligheter, og kom til utviklerne for Ä integrere det i prosessen. Men det gÄr ikke - prosessen er strukturert pÄ en slik mÄte at begrensningene til det allerede kjÞpte verktÞyet ikke passer inn i det nÄvÊrende paradigmet.

Beskriv fÞrst hvilket resultat du Þnsker og hvordan prosessen vil se ut. Dette vil bidra til Ä forstÄ rollene til verktÞy og sikkerhet i prosessen.

Start med det som allerede er i bruk

FÞr du kjÞper dyre verktÞy, se pÄ hva du allerede har. Hvert selskap har sikkerhetskrav for utvikling, det er kontroller, pentester - hvorfor ikke forvandle alt dette til en form som er forstÄelig og praktisk for alle?

Vanligvis er kravene en papirtalmud som ligger pÄ en hylle. Det var en sak da vi kom til en bedrift for Ä se pÄ prosessene og ba om Ä se sikkerhetskravene til programvaren. Spesialisten som tok seg av dette brukte lang tid pÄ Ä lete etter:

– NĂ„, et sted i notatene var det en sti der dette dokumentet ligger.

Som et resultat mottok vi dokumentet en uke senere.

For krav, sjekker og annet, lag en side pĂ„ f.eks. Confluence - Det er praktisk for alle.

Det er lettere Ă„ formatere det du allerede har og bruke det for Ă„ komme i gang.

Bruk Security Champions

Vanligvis, i et gjennomsnittlig selskap med 100-200 utviklere, er det én sikkerhetsspesialist som utfÞrer flere funksjoner og ikke fysisk har tid til Ä sjekke alt. Selv om han prÞver sitt beste, vil han alene ikke sjekke all koden som utviklingen genererer. For slike tilfeller er det utviklet et konsept - Sikkerhetsmestere.

Security Champions er personer i utviklingsteamet som er interessert i sikkerheten til produktet ditt.

Frykt og avsky for DevSecOps

Security Champion er et inngangspunkt til utviklingsteamet og en sikkerhetsevangelist rullet inn i en.

Vanligvis, nÄr en sikkerhetsspesialist kommer til et utviklingsteam og pÄpeker en feil i koden, fÄr han et overrasket svar:

- Og hvem er du? Jeg ser deg for fÞrste gang. Alt er bra med meg - seniorvennen min ga meg "sÞk" pÄ kodegjennomgangen, vi gÄr videre!

Dette er en typisk situasjon, fordi det er mye mer tillit til seniorer eller rett og slett lagkamerater som utvikleren hele tiden samhandler med pÄ jobb og i kodegjennomgang. Hvis sikkerhetsmesteren i stedet for sikkerhetsoffiseren pÄpeker feilen og konsekvensene, vil hans ord ha stÞrre vekt.

Dessuten kjenner utviklere koden deres bedre enn noen sikkerhetsspesialist. For en person som har minst 5 prosjekter i et statisk analyseverktĂžy, er det vanligvis vanskelig Ă„ huske alle nyansene. Security Champions kjenner produktet sitt: hva som samhandler med hva og hva de skal se pĂ„ fĂžrst – de er mer effektive.

SÄ vurder Ä implementere Security Champions og utvide innflytelsen til sikkerhetsteamet ditt. Dette er ogsÄ nyttig for mesteren selv: faglig utvikling pÄ et nytt felt, utvide hans tekniske horisont, oppgradere tekniske, ledelsesmessige og lederegenskaper, Þke markedsverdien. Dette er et element av sosial ingeniÞrkunst, dine "Þyne" i utviklingsteamet.

Teststadier

Paradigme 20 til 80 sier at 20 % av innsatsen gir 80 % av resultatene. Disse 20 % er applikasjonsanalysepraksis som kan og bĂžr automatiseres. Eksempler pĂ„ slike aktiviteter er statisk analyse - SAST, dynamisk analyse - DAST Đž Ă…pen kildekode-kontroll. Jeg vil fortelle deg mer om aktivitetene, sĂ„ vel som om verktĂžyene, hvilke funksjoner vi vanligvis mĂžter nĂ„r vi introduserer dem i prosessen, og hvordan du gjĂžr det riktig.

Frykt og avsky for DevSecOps

Hovedproblemer med verktĂžy

Jeg vil belyse problemer som er relevante for alle virkemidler og krever oppmerksomhet. Jeg vil analysere dem mer detaljert for ikke Ă„ gjenta dem ytterligere.

Lang analysetid. Hvis det tar 30 minutter fra forpliktelse til utgivelse for alle tester og montering, vil informasjonssikkerhetssjekkene ta en dag. SĂ„ ingen vil bremse prosessen. Ta hensyn til denne funksjonen og trekk konklusjoner.

HĂžyt nivĂ„ Falsk Negativ eller Falsk Positiv. Alle produkter er forskjellige, alle bruker forskjellige rammer og hver sin kodestil. PĂ„ forskjellige kodebaser og teknologier kan verktĂžy vise forskjellige nivĂ„er av falsk negativ og falsk positiv. SĂ„ se pĂ„ hva som er i din selskaper og for din applikasjoner vil vise gode og pĂ„litelige resultater.

Ingen integrasjoner med eksisterende verktÞy. Se pÄ verktÞy nÄr det gjelder integrasjoner med det du allerede bruker. Hvis du for eksempel har Jenkins eller TeamCity, sjekk integreringen av verktÞyene med denne programvaren, og ikke med GitLab CI, som du ikke bruker.

Mangel pÄ eller overdreven kompleksitet av tilpasning. Hvis et verktÞy ikke har et API, hvorfor er det da nÞdvendig? Alt som kan gjÞres i grensesnittet skal vÊre tilgjengelig gjennom API. Ideelt sett bÞr verktÞyet ha muligheten til Ä tilpasse sjekker.

Ingen veikart for produktutvikling. Utviklingen stÄr ikke stille, vi bruker alltid nye rammer og funksjoner, og skriver om gammel kode til nye sprÄk. Vi vil vÊre sikre pÄ at verktÞyet vi kjÞper vil stÞtte nye rammeverk og teknologier. Derfor er det viktig Ä vite at produktet har ekte og riktig Roadmap utvikling.

Prosessegenskaper

I tillegg til funksjonene til verktÞyene, ta hensyn til funksjonene i utviklingsprosessen. For eksempel er det Ä hindre utvikling en vanlig feil. La oss se pÄ hvilke andre funksjoner som bÞr tas i betraktning og hva sikkerhetsteamet bÞr ta hensyn til.

For ikke Ă„ gĂ„ glipp av utvikling og utgivelsesfrister, opprette forskjellige regler og annerledes vise stoppere â€“ kriterier for Ă„ stoppe byggeprosessen i nĂŠrvĂŠr av sĂ„rbarheter – for ulike miljĂžer. For eksempel forstĂ„r vi at den nĂ„vĂŠrende grenen gĂ„r til utviklingsstanden eller UAT, noe som betyr at vi ikke stopper og sier:

«Du har sÄrbarheter her, du kommer ikke lenger!»

PĂ„ dette tidspunktet er det viktig Ă„ fortelle utviklere at det er sikkerhetsproblemer som trenger oppmerksomhet.

TilstedevÊrelsen av sÄrbarheter er ikke et hinder for videre testing: manuell, integrasjon eller manuell. PÄ den annen side mÄ vi pÄ en eller annen mÄte Þke sikkerheten til produktet, og slik at utviklerne ikke forsÞmmer det de finner trygt. Derfor gjÞr vi noen ganger dette: pÄ standen, nÄr den rulles ut til utviklingsmiljÞet, varsler vi ganske enkelt utviklingen:

- Gutter, dere har problemer, vÊr sÄ snill Ä ta hensyn til dem.

PÄ UAT-stadiet viser vi igjen advarsler om sÄrbarheter, og pÄ utgivelsesstadiet sier vi:

- Gutter, vi advarte dere flere ganger, dere gjorde ingenting - vi vil ikke slippe dere ut med dette.

Hvis vi snakker om kode og dynamikk, er det nÞdvendig Ä vise og advare om sÄrbarheter bare for de funksjonene og koden som nettopp ble skrevet i denne funksjonen. Hvis en utvikler flytter en knapp med 3 piksler og vi forteller ham at han har en SQL-injeksjon der og derfor mÄ fikses snarest, er dette feil. Se kun pÄ det som er skrevet nÄ og pÄ endringen som kommer til sÞknaden.

La oss si at vi har en viss funksjonsfeil - mĂ„ten applikasjonen ikke skal fungere pĂ„: penger overfĂžres ikke, nĂ„r du klikker pĂ„ en knapp er det ingen overgang til neste side, eller produktet lastes ikke. Sikkerhetsdefekter - Dette er de samme feilene, men ikke nĂ„r det gjelder applikasjonsdrift, men nĂ„r det gjelder sikkerhet.

Ikke alle problemer med programvarekvalitet er sikkerhetsproblemer. Men alle sikkerhetsproblemer er relatert til programvarekvalitet. Sherif Mansour, Expedia.

Siden alle sÄrbarheter er de samme defektene, bÞr de ligge pÄ samme sted som alle utviklingsfeil. SÄ glem rapporter og skumle PDF-er som ingen leser.

Frykt og avsky for DevSecOps

Da jeg jobbet i et utviklingsselskap, fikk jeg en rapport fra statiske analyseverktÞy. Jeg Äpnet den, ble forferdet, kokte kaffe, bladde i 350 sider, lukket den og fortsatte Ä jobbe. Store rapporter er dÞde rapporter. Vanligvis gÄr de ingen steder, brevene blir slettet, glemt, tapt, eller bedriften sier at den aksepterer risikoen.

Hva Ă„ gjĂžre? Vi konverterer rett og slett de bekreftede defektene vi fant til en form som er praktisk for utvikling, for eksempel legger vi dem i et etterslep i Jira. Vi prioriterer mangler og eliminerer dem i prioritert rekkefĂžlge, sammen med funksjonsfeil og testfeil.

Statisk analyse - SAST

Dette er en kodeanalyse for sĂ„rbarheter., men det er ikke det samme som SonarQube. Vi sjekker ikke bare etter mĂžnstre eller stil. Det benyttes en rekke tilnĂŠrminger i analysen: i henhold til sĂ„rbarhetstreet, iht Dataflyt, ved Ă„ analysere konfigurasjonsfiler. Dette er alt som angĂ„r selve koden.

Fordeler med tilnĂŠrmingen: identifisere sĂ„rbarheter i kode pĂ„ et tidlig stadium av utviklingennĂ„r det ikke finnes stativer eller ferdige verktĂžy ennĂ„, og inkrementell skanning: skanning av en kodedel som har endret seg, og bare funksjonen vi gjĂžr nĂ„, noe som reduserer skannetiden.

Cons â€“ dette er mangelen pĂ„ stĂžtte for de nĂždvendige sprĂ„kene.

NĂždvendige integrasjoner, som bĂžr vĂŠre i verktĂžyene, etter min subjektive mening:

  • IntegreringsverktĂžy: Jenkins, TeamCity og Gitlab CI.
  • UtviklingsmiljĂž: Intellij IDEA, Visual Studio. Det er mer praktisk for en utvikler Ă„ ikke navigere i et uforstĂ„elig grensesnitt som fortsatt mĂ„ huskes, men Ă„ se alle nĂždvendige integrasjoner og sĂ„rbarheter som han har funnet rett pĂ„ arbeidsplassen i sitt eget utviklingsmiljĂž.
  • Kodegjennomgang: SonarQube og manuell gjennomgang.
  • Defektsporere: Jira og Bugzilla.

Bildet viser noen av de beste representantene for statisk analyse.

Frykt og avsky for DevSecOps

Det er ikke verktÞyene som er viktige, men prosessen, sÄ det finnes Open Source-lÞsninger som ogsÄ er gode for Ä teste prosessen.

Frykt og avsky for DevSecOps

SAST Open Source vil ikke finne et stort antall sÄrbarheter eller komplekse DataFlows, men de kan og bÞr brukes nÄr man bygger en prosess. De hjelper til med Ä forstÄ hvordan prosessen skal bygges, hvem som vil svare pÄ feil, hvem som skal rapportere og hvem som skal rapportere. Hvis du vil utfÞre den innledende fasen av Ä bygge sikkerheten til koden din, bruk Open Source-lÞsninger.

Hvordan kan dette integreres hvis du er i begynnelsen av reisen din og ikke har noe: ingen CI, ingen Jenkins, ingen TeamCity? La oss vurdere integrering i prosessen.

Integrasjon pÄ CVS-nivÄ

Hvis du har Bitbucket eller GitLab, kan du integrere pÄ nivÄet System for samtidige versjoner.

Etter arrangement - trekke forespĂžrsel, forplikte. Du skanner koden og byggestatusen viser om sikkerhetskontrollen bestod eller mislyktes.

Tilbakemelding. SelvfÞlgelig er tilbakemelding alltid nÞdvendig. Hvis du bare gjorde sikkerhet ved siden av, la det i en boks og ikke fortalte noen noe om det, og sÄ pÄ slutten av mÄneden dumpet en haug med feil - dette er ikke riktig og ikke bra.

Integrasjon med kodegjennomgangssystemet

En gang fungerte vi som standard anmelder for en teknisk AppSec-bruker i en rekke viktige prosjekter. Avhengig av om det er identifisert feil i den nye koden eller om det ikke er noen feil, setter anmelderen statusen pÄ pull-forespÞrselen til "aksepter" eller "trenger arbeid" - enten er alt OK, eller lenkene til hva som mÄ forbedres mÄ forbedres. For integrasjon med versjonen som skal i produksjon har vi aktivert et sammenslÄingsforbud dersom informasjonssikkerhetstesten ikke blir bestÄtt. Vi inkluderte dette i den manuelle kodegjennomgangen, og andre deltakere i prosessen sÄ sikkerhetsstatusene for denne prosessen.

Integrasjon med SonarQube

Mange har kvalitetsport nÄr det gjelder kodekvalitet. Det er det samme her - du kan lage de samme portene bare for SAST-verktÞy. Det vil vÊre det samme grensesnittet, den samme kvalitetsporten, bare den vil bli kalt sikkerhetsport. Og ogsÄ, hvis du har en prosess som bruker SonarQube, kan du enkelt integrere alt der.

Integrasjon pÄ CI-nivÄ

Alt her er ogsÄ ganske enkelt:

  • PĂ„ nivĂ„ med autotester, enhetstester.
  • Inndeling etter utviklingstrinn: dev, test, prod. Ulike sett med regler eller forskjellige feiltilstander kan vĂŠre inkludert: stopp sammenstillingen, ikke stopp sammenstillingen.
  • Synkron/asynkron lansering. Vi venter pĂ„ slutten av sikkerhetstestene eller ikke. Det vil si at vi bare lanserte dem og gĂ„r videre, og sĂ„ fĂ„r vi status om at alt er bra eller dĂ„rlig.

Det hele er i en perfekt rosa verden. Det er ikke noe slikt i det virkelige liv, men vi streber. Resultatet av Ă„ kjĂžre sikkerhetskontroller bĂžr vĂŠre likt resultatene av enhetstester.

For eksempel tok vi et stort prosjekt og bestemte oss for at nĂ„ skal vi skanne det med SAST - OK. Vi presset dette prosjektet inn i SAST, det ga oss 20 000 sĂ„rbarheter og ved en viljesterk beslutning bestemte vi oss for at alt var bra. 20 000 sĂ„rbarheter er vĂ„r tekniske gjeld. Vi legger gjelden i en boks, vi vil sakte rydde opp og legge til feil til defekte sporere. La oss ansette et firma, gjĂžre alt selv, eller la Security Champions hjelpe oss – og teknisk gjeld vil reduseres.

Og alle nylig oppstÄtte sÄrbarheter i den nye koden mÄ elimineres pÄ samme mÄte som feil i en enhet eller i autotester. Relativt sett startet monteringen, vi kjÞrte den, to tester og to sikkerhetstester mislyktes. OK - vi gikk, sÄ pÄ hva som skjedde, fikset en ting, fikset en annen, kjÞrte den neste gang - alt var bra, ingen nye sÄrbarheter dukket opp, ingen tester mislyktes. Hvis denne oppgaven er dypere og du trenger Ä forstÄ den godt, eller Ä fikse sÄrbarheter pÄvirker store lag av det som ligger under panseret: en feil ble lagt til defektsporeren, blir den prioritert og rettet. Dessverre er ikke verden perfekt og tester feiler noen ganger.

Et eksempel pÄ en sikkerhetsport er en analog av en kvalitetsport, nÄr det gjelder tilstedevÊrelse og antall sÄrbarheter i koden.

Frykt og avsky for DevSecOpsVi integrerer med SonarQube - plugin er installert, alt er veldig praktisk og kult.

Integrasjon med utviklingsmiljĂž

Integreringsalternativer:

  • KjĂžre en skanning fra utviklingsmiljĂžet fĂžr commit.
  • Se resultater.
  • Analyse av resultatene.
  • Synkronisering med serveren.

Slik ser det ut Ă„ motta resultater fra serveren.

Frykt og avsky for DevSecOps

I vĂ„rt utviklingsmiljĂž Intellekt IDEA et ekstra element vises ganske enkelt som informerer deg om at slike sĂ„rbarheter ble oppdaget under skanningen. Du kan umiddelbart redigere koden, se pĂ„ anbefalinger og Flytgraf. Alt dette ligger pĂ„ utviklerens arbeidsplass, noe som er veldig praktisk - det er ikke nĂždvendig Ă„ fĂžlge andre lenker og se pĂ„ noe ekstra.

Open Source

Dette er favorittemnet mitt. Alle bruker Open Source-biblioteker - hvorfor skrive en haug med krykker og sykler nÄr du kan ta et ferdig bibliotek der alt allerede er implementert?

Frykt og avsky for DevSecOps

SelvfÞlgelig er dette sant, men biblioteker er ogsÄ skrevet av mennesker, de inkluderer ogsÄ visse risikoer og det er ogsÄ sÄrbarheter som periodisk, eller konstant, rapporteres. Derfor er det neste trinn i Application Security - dette er analysen av Open Source-komponenter.

Åpen kildekode-analyse - OSA

VerktĂžyet inkluderer tre store trinn.

SĂžker etter sĂ„rbarheter i biblioteker. For eksempel vet verktĂžyet at vi bruker et eller annet bibliotek, og at i CVE eller det er noen sĂ„rbarheter i feilsporere som er relatert til denne versjonen av biblioteket. NĂ„r du prĂžver Ă„ bruke det, vil verktĂžyet gi en advarsel om at biblioteket er sĂ„rbart og rĂ„der deg til Ă„ bruke en annen versjon som ikke har sĂ„rbarheter.

Analyse av lisensrenhet. Dette er ikke spesielt populÊrt her ennÄ, men hvis du jobber i utlandet, sÄ kan du fra tid til annen fÄ skatt der for Ä bruke en Äpen kildekode-komponent som ikke kan brukes eller endres. I henhold til lisensbibliotekets retningslinjer kan vi ikke gjÞre dette. Eller, hvis vi endret den og bruker den, bÞr vi legge ut koden vÄr. SelvfÞlgelig er det ingen som Þnsker Ä publisere koden til produktene sine, men du kan ogsÄ beskytte deg mot dette.

Analyse av komponenter som brukes i et industrielt miljÞ. La oss forestille oss en hypotetisk situasjon at vi endelig har fullfÞrt utviklingen og lansert den siste utgivelsen av mikrotjenesten vÄr. Han bor der fantastisk - en uke, en mÄned, et Är. Vi samler det ikke, vi utfÞrer ikke sikkerhetskontroller, alt ser ut til Ä vÊre i orden. Men plutselig, to uker etter utgivelsen, dukker det opp en kritisk sÄrbarhet i Open Source-komponenten, som vi bruker i denne spesielle konstruksjonen, i det industrielle miljÞet. Hvis vi ikke registrerer hva og hvor vi bruker, vil vi ganske enkelt ikke se denne sÄrbarheten. Noen verktÞy har muligheten til Ä overvÄke sÄrbarheter i biblioteker som i dag brukes i bransjen. Det er veldig nyttig.

funksjoner:

  • Ulike retningslinjer for ulike utviklingsstadier.
  • OvervĂ„king av komponenter i et industrielt miljĂž.
  • Kontroll av biblioteker i organisasjonen.
  • StĂžtte for ulike byggesystemer og sprĂ„k.
  • Analyse av Docker-bilder.

Noen fÄ eksempler pÄ industriledere som er engasjert i Äpen kildekode-analyse.

Frykt og avsky for DevSecOps
Den eneste gratis er denne Avhengighetssjekk fra OWASP. Du kan slÄ den pÄ i de fÞrste stadiene, se hvordan den fungerer og hva den stÞtter. I utgangspunktet er disse alle skyprodukter, eller on-premise, men bak basen sendes de fortsatt til Internett. De sender ikke bibliotekene dine, men hash eller deres egne verdier, som de beregner, og fingeravtrykk til serveren deres for Ä motta informasjon om tilstedevÊrelsen av sÄrbarheter.

Prosessintegrasjon

Perimeterkontroll av biblioteker, som er lastet ned fra eksterne kilder. Vi har eksterne og interne depoter. For eksempel kjÞrer Event Central Nexus, og vi Þnsker Ä sikre at det ikke er noen sÄrbarheter i vÄrt depot med en "kritisk" eller "hÞy" status. Du kan konfigurere proxying ved Ä bruke Nexus Firewall Lifecycle-verktÞyet slik at slike sÄrbarheter blir avskÄret og ikke havner i det interne depotet.

Integrasjon i CI. PÄ samme nivÄ med autotester, enhetstester og inndeling i utviklingstrinn: dev, test, prod. PÄ hvert trinn kan du laste ned hvilke som helst biblioteker, bruke hva som helst, men hvis det er noe vanskelig med den "kritiske" statusen, er det kanskje verdt Ä trekke utviklernes oppmerksomhet til dette pÄ produksjonsstadiet.

Integrasjon med artefakter: Nexus og JFrog.

Integrasjon i utviklingsmiljÞet. VerktÞyene du velger bÞr ha integrasjon med utviklingsmiljÞer. Utvikleren mÄ ha tilgang til skanneresultatene fra sin arbeidsplass, eller muligheten til Ä skanne og sjekke koden selv for sÄrbarheter fÞr han forplikter seg til CVS.

CD-integrasjon. Dette er en kul funksjon som jeg virkelig liker og som jeg allerede har snakket om – overvĂ„king av fremveksten av nye sĂ„rbarheter i et industrielt miljĂž. Det fungerer noe sĂ„nt som dette.

Frykt og avsky for DevSecOps

Vi har Offentlige komponentlager â€” noen verktĂžy utenfor, og vĂ„rt interne depot. Vi vil at den kun skal inneholde pĂ„litelige komponenter. Ved fullmakt av en forespĂžrsel kontrollerer vi at det nedlastede biblioteket ikke har sĂ„rbarheter. Hvis det faller inn under visse retningslinjer som vi setter og nĂždvendigvis koordinerer med utviklingen, laster vi det ikke opp og blir bedt om Ă„ bruke en annen versjon. FĂžlgelig, hvis det er noe virkelig kritisk og dĂ„rlig i biblioteket, vil ikke utvikleren motta biblioteket pĂ„ installasjonsstadiet - la ham bruke en hĂžyere eller lavere versjon.

  • Ved bygging sjekker vi at ingen har sklidd noe dĂ„rlig, at alle komponenter er trygge og at ingen har tatt med noe farlig pĂ„ flash-stasjonen.
  • Vi har bare pĂ„litelige komponenter i depotet.
  • NĂ„r vi distribuerer, sjekker vi nok en gang selve pakken: war, jar, DL eller Docker image for Ă„ sikre at den er i samsvar med policyen.
  • NĂ„r vi gĂ„r inn i bransjen overvĂ„ker vi hva som skjer i industrimiljĂžet: kritiske sĂ„rbarheter vises eller ikke vises.

Dynamisk analyse – DAST

Dynamiske analyseverktÞy er fundamentalt forskjellige fra alt som har blitt sagt fÞr. Dette er en slags etterligning av brukerens arbeid med applikasjonen. Hvis dette er en nettapplikasjon, sender vi forespÞrsler, simulerer arbeidet til klienten, klikker pÄ knappene pÄ forsiden, sender kunstige data fra skjemaet: anfÞrselstegn, parentes, tegn i forskjellige kodinger, for Ä se hvordan applikasjonen fungerer og behandler eksterne data.

Det samme systemet lar deg sjekke malsÄrbarheter i Äpen kildekode. Siden DAST ikke vet hvilken Äpen kildekode vi bruker, kaster den ganske enkelt "ondsinnede" mÞnstre og analyserer serverens svar:

– Ja, det er et deserialiseringsproblem her, men ikke her.

Det er store risikoer ved dette, for gjennomfÞrer du denne sikkerhetstesten pÄ samme benk som testerne jobber med, kan det skje ubehagelige ting.

  • HĂžy belastning pĂ„ applikasjonsservernettverket.
  • Ingen integrasjoner.
  • Evne til Ă„ endre innstillingene for den analyserte applikasjonen.
  • Det er ingen stĂžtte for de nĂždvendige teknologiene.
  • Vanskeligheter med Ă„ sette opp.

Vi hadde en situasjon da vi endelig lanserte AppScan: vi brukte lang tid pÄ Ä prÞve Ä fÄ tilgang til applikasjonen, fikk 3 kontoer og var fornÞyde - vi skal endelig sjekke alt! Vi startet en skanning, og det fÞrste AppScan gjorde var Ä gÄ inn i administrasjonspanelet, stikke hull pÄ alle knappene, endre halvparten av dataene og deretter drepe serveren fullstendig med sin postskjema-forespÞrsler. Utvikling med testing sa:

- Gutter, tuller du?! Vi ga deg regnskap, og du satte opp en stand!

Vurder mulige risikoer. Ideelt sett forbereder du et eget stativ for testing av informasjonssikkerhet, som vil vÊre isolert fra resten av miljÞet i det minste pÄ en eller annen mÄte, og kontroller adminpanelet betinget, helst i manuell modus. Dette er en pentest - de gjenvÊrende innsatsprosentene som vi ikke vurderer nÄ.

Det er verdt Ä vurdere at du kan bruke dette som en analog av lasttesting. PÄ det fÞrste trinnet kan du slÄ pÄ en dynamisk skanner med 10-15 trÄder og se hva som skjer, men vanligvis, som praksis viser, ingenting bra.

Noen fÄ ressurser som vi vanligvis bruker.

Frykt og avsky for DevSecOps

Verdt Ă„ fremheve Burp-suite er en "sveitsisk kniv" for enhver sikkerhetsekspert. Alle bruker det og det er veldig praktisk. En ny demoversjon av enterprise-utgaven er nĂ„ utgitt. Hvis det tidligere bare var et frittstĂ„ende verktĂžy med plugins, lager utviklerne nĂ„ endelig en stor server som det vil vĂŠre mulig Ă„ administrere flere agenter fra. Dette er kult, jeg anbefaler deg Ă„ prĂžve det.

Prosessintegrasjon

Integrasjon skjer ganske bra og enkelt: start skanningen etter vellykket installasjon sĂžknader om stand og skanning etter vellykket integrasjonstesting.

Hvis integrasjonene ikke fungerer eller det er stubber og mock-funksjoner, er det meningslÞst og ubrukelig - uansett hvilket mÞnster vi sender, vil serveren fortsatt svare pÄ samme mÄte.

  • Ideelt sett et eget teststativ.
  • FĂžr du tester, skriv ned pĂ„loggingssekvensen.
  • Testing av administrasjonssystemet er kun manuell.

prosessen

Litt generalisert om prosessen generelt og om arbeidet til hvert verktĂžy spesielt. Alle applikasjoner er forskjellige - en fungerer bedre med dynamisk analyse, en annen med statisk analyse, en tredje med OpenSource-analyse, pentests, eller noe helt annet, for eksempel hendelser med waf.

Hver prosess trenger kontroll.

For Ä forstÄ hvordan en prosess fungerer og hvor den kan forbedres, mÄ du samle inn beregninger fra alt du kan fÄ tak i, inkludert produksjonsmÄlinger, beregninger fra verktÞy og fra defektsporere.

All informasjon er nyttig. Det er nÞdvendig Ä se fra forskjellige vinkler pÄ hvor dette eller det verktÞyet er bedre brukt, hvor prosessen spesifikt synker. Det kan vÊre verdt Ä se pÄ responstider for utvikling for Ä se hvor du kan forbedre prosessen basert pÄ tid. Jo mer data, jo flere seksjoner kan bygges fra toppnivÄ til detaljene i hver prosess.

Frykt og avsky for DevSecOps

Siden alle statiske og dynamiske analysatorer har sine egne APIer, egne lanseringsmetoder, prinsipper, noen har planleggere, andre ikke - vi skriver et verktĂžy AppSec Orchestrator, som lar deg opprette et enkelt inngangspunkt i hele prosessen fra produktet og administrere det fra ett punkt.

Ledere, utviklere og sikkerhetsingeniÞrer har ett inngangspunkt der de kan se hva som kjÞrer, konfigurere og kjÞre en skanning, motta skanneresultater og sende inn krav. Vi prÞver Ä gÄ bort fra papirarbeid, Ä oversette alt til et menneskelig, som brukes av utvikling - sider pÄ Confluence med status og beregninger, defekter i Jira eller i ulike defektsporere, eller integrering i en synkron/asynkron prosess i CI /CD.

NĂžkkelfunksjoner

VerktĂžy er ikke hovedsaken. Tenk fĂžrst gjennom prosessen – implementer deretter verktĂžyene. VerktĂžyene er gode, men dyre, sĂ„ du kan starte med prosessen og bygge kommunikasjon og forstĂ„else mellom utvikling og sikkerhet. Fra et sikkerhetssynspunkt er det ikke nĂždvendig Ă„ "stoppe" alt. Fra et utviklingssynspunkt, hvis det er noe hĂžyt mega superkritisk, sĂ„ mĂ„ det elimineres, og ikke lukke Ăžynene for problemet.

Produktkvalitet - felles mĂ„l bĂ„de sikkerhet og utvikling. Vi gjĂžr Ă©n ting, vi prĂžver Ă„ sikre at alt fungerer som det skal og at det ikke er omdĂžmmerisiko eller Ăžkonomiske tap. Dette er grunnen til at vi fremmer en DevSecOps, SecDevOps-tilnĂŠrming for Ă„ forbedre kommunikasjonen og forbedre kvaliteten pĂ„ produktet.

Start med det du allerede har: krav, arkitektur, delsjekker, opplÊring, retningslinjer. Det er ikke nÞdvendig Ä umiddelbart bruke all praksis pÄ alle prosjekter - bevege seg iterativt. Det er ingen enkelt standard - eksperiment og prÞve forskjellige tilnÊrminger og lÞsninger.

Det er et likhetstegn mellom informasjonssikkerhetsfeil og funksjonsfeil.

Automatiser altsom beveger seg. Det som ikke beveger seg, flytt det og automatiser det. Hvis noe gjÞres for hÄnd, er det ikke en god del av prosessen. Kanskje det er verdt Ä gjennomgÄ det og automatisere det ogsÄ.

Hvis stÞrrelsen pÄ IS-teamet er liten - bruk Security Champions.

Kanskje det jeg snakket om ikke vil passe deg, og du vil finne pĂ„ noe eget - og det er bra. Men velg verktĂžy basert pĂ„ kravene til prosessen din. Ikke se pĂ„ hva samfunnet sier, at dette verktĂžyet er dĂ„rlig og dette er bra. Kanskje vil det motsatte vĂŠre sant for produktet ditt.

Krav til verktĂžy.

  • Lavt nivĂ„ Falsk Positiv.
  • Tilstrekkelig analysetid.
  • Brukervennligheten.
  • Tilgjengelighet av integrasjoner.
  • ForstĂ„ veikart for produktutvikling.
  • Mulighet for Ă„ tilpasse verktĂžy.

Yuris rapport ble kĂ„ret til en av de beste pĂ„ DevOpsConf 2018. For Ă„ bli kjent med enda flere interessante ideer og praktiske case, kom til Skolkovo 27. og 28. mai DevOpsConf innenfor festival RIT++. Enda bedre, hvis du er klar til Ă„ dele opplevelsen din, da sĂžke om for rapporten frem til 21. april.

Kilde: www.habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster