Frykt og hat DevSecOps

Vi hadde 2 kodeanalysatorer, 4 verktÞy for dynamisk testing, egne kreasjoner og 250 skript. Ikke at alt dette var nÞdvendig i den nÄvÊrende prosessen, men siden jeg begynte Ä implementere DevSecOps, mÄ jeg gÄ hele veien.

Frykt og hat DevSecOps

Kilde. Karakterforfattere: Justin Roiland og Dan Harmon.

Hva er SecDevOps? Og DevSecOps? Hva er forskjellene? Applikasjonssikkerhet – hva handler det om? Hvorfor fungerer ikke den klassiske tilnĂŠrmingen lenger? PĂ„ alle disse spĂžrsmĂ„lene har vi svar Juri Shabalin fra Swordfish Security. 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 Ă„ Ăždelegge noe, hvordan man passerer de viktigste testtrinnene for sikkerhet, hvilke verktĂžy som kan brukes, hvordan de skiller seg fra hverandre og hvordan de skal konfigureres for Ă„ unngĂ„ fallgruver.

Spill video

Om taleren: Juri Shabalin – Chief Security Architect i selskapet Swordfish Security. Ansvarlig for implementering av SSDL, for generell integrering av applikasjonsanalyseverktĂžy i et samlet utviklings- og testĂžkosystem. 7 Ă„rs erfaring innen informasjonssikkerhet. Har jobbet i Alfa-Bank, Sberbank og i Positive Technologies, som utvikler programvare og tilbyr tjenester. Taler pĂ„ internasjonale konferanser som ZerONights, PHDays, RISSPA, OWASP.

Applikasjonssikkerhet: hva handler det om?

Applikasjonssikkerhet er et omrĂ„de innen sikkerhet som fokuserer pĂ„ sikkerheten til applikasjoner. Det handler ikke om infrastruktur eller nettverkssikkerhet, men om det vi skriver og det utviklerne jobber med – det gjelder svakheter og sĂ„rbarheter i selve applikasjonen.

Retning SDL eller SDLC — Sikkerhetsutviklingslivssyklus ble utviklet av Microsoft. I diagrammet – den kanoniske modellen for SDLC, hvis hovedoppgave er Ă„ inkludere sikkerhet i hver fase av utviklingen, fra krav til utgivelse og produksjon. Microsoft innsĂ„ at det var for mange feil i produksjon, de ble flere, og noe mĂ„tte gjĂžres, og foreslo denne tilnĂŠrmingen, som har blitt kanonisk.

Frykt og hat DevSecOps

Applikasjonssikkerhet og SSDL er ikke rettet mot Ä oppdage sÄrbarheter, som det ofte antas, men mot Ä forhindre deres oppkomst. Over tid har den kanoniske tilnÊrmingen fra Microsoft blitt forbedret og utviklet, med en dypere detaljinnsikt.

Frykt og hat DevSecOps

Den kanoniske SDLC er sterkt detaljert i forskjellige metodologier - OpenSAMM, BSIMM, OWASP. Metodologiene er forskjellige, men generelt liknande.

Bygge sikkerhet inn modningsmodellen

Jeg liker best BSIMM — Bygge sikkerhet inn modningsmodellen. 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.

Frykt og hat DevSecOps

Hver av de 112 aktivitetene har 3 modenhetsnivÄer: grunnleggende, mellomliggende og avansert. Alle 12 praksiser kan lÊres 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.

Hvorfor DevSecOps

DevOps er en stor felles prosess der man mÄ ta hensyn til sikkerhet.

Opprinnelig DevOps 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Ä produktet ved slutten av utgivelsen. Dette er en klassisk tilnÊrming, der sikkerhetsteamene var adskilt fra utviklingen og ikke deltok i prosessen.

Frykt og hat DevSecOps

Hovedproblemet er nettopp at sikkerheten stÄr adskilt fra utviklingen. Vanligvis er det en slags sikkerhetssirkel med 2-3 store og dyre verktÞy. Hver sjette mÄned kommer kildekoden eller applikasjonen som mÄ sjekkes, og en gang i Äret utfÞres penetrasjonstester. Alt dette fÞrer til at lanseringstidene blir utsatt, og utvikleren fÄr akutt behov for Ä hÄndtere et stort antall sÄrbarheter fra automatiserte verktÞy. Alt dette er umulig Ä sortere og fikse, fordi resultatene fra de siste seks mÄnedene ikke er sortert, og nÄ kommer det en ny bÞlge.

I lÞpet av vÄrt arbeid i selskapet ser vi at sikkerhet i alle felt og industrier innser at det er pÄ tide Ä komme ajour og samarbeide med utviklingen i ett hjul - i Agile. DevSecOps-paradigmet passer utmerket inn i metodikken for smidig utvikling, med implementering, stÞtte og deltakelse i hver utgivelse og iterasjon.

Frykt og hat DevSecOps

Overgangen til DevSecOps

Det viktigste ordet i Security Development Lifecycle er "prosessen"Du mÄ forstÄ dette fÞr du tenker pÄ Ä kjÞpe verktÞy.

Det er ikke nok Ă„ bare inkludere verktĂžyene i DevOps-prosessen — interaksjon og forstĂ„else mellom deltakerne i prosessen er viktig.

Menneskene er viktigere enn verktĂžyene

Planlegging av en sikker utviklingsprosess begynner ofte med valg og kjĂžp av verktĂžy, men ender med forsĂžk pĂ„ Ă„ integrere verktĂžyet i den nĂ„vĂŠrende prosessen, som forblir nettopp det — forsĂžk. Dette fĂžrer til triste konsekvenser, fordi hvert verktĂžy har sine egne funksjoner og begrensninger.

Et vanlig tilfelle er nĂ„r sikkerhetsavdelingen velger et godt, dyrt verktĂžy med mange muligheter, og presenterer det for utviklerne — Ă„ integere det i prosessen. Men det lar seg ikke gjĂžre — prosessen er bygget slik at begrensningene til det allerede kjĂžpte verktĂžyet ikke passer inn i den nĂ„vĂŠrende paradygmen.

FÞrst beskriv hvilket resultat du Þnsker og hvordan prosessen vil se ut. Dette vil hjelpe til med Ä forstÄ rollene til verktÞyet og sikkerhet i prosessen.

Begynn med det som allerede brukes

FĂžr du kjĂžper dyre verktĂžy, se pĂ„ hva du allerede har. Hver bedrift har sikkerhetskrav som stilles til utviklingen, det er sjekker, pentester — hvorfor ikke transformere alt dette til en forstĂ„elig og brukervennlig form?

Som regel er kravene et papirhefte som ligger pÄ hyllen. Det var en gang vi kom til et selskap for Ä se pÄ prosessene og ba om Ä fÄ se sikkerhetskravene til programvaren. Spesialisten som jobbet med dette, lette lenge:

— NĂ„, et sted i notatene var det en sti til dette dokumentet.

Til slutt fikk vi dokumentet etter en uke.

For krav, sjekker og annet, lag en side, for eksempel pÄ Confluence — det er praktisk for alle.

Det er enklere Ă„ omformatere det som allerede finnes og bruke det som utgangspunkt.

Bruk Security Champions

Vanligvis, i et middels stort selskap med 100-200 utviklere, jobber det en sikkerhetsekspert som utfĂžrer flere funksjoner, og har ikke fysisk mulighet til Ă„ sjekke alt. Selv om han gjĂžr sitt beste — kan han ikke sjekke all koden som utviklingen genererer alene. For slike tilfeller er konseptet utviklet — Security Champions.

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

Frykt og hat DevSecOps

Security Champion er inngangspunktet til utviklingsteamet og en sikkerhetsevangelsist i én og samme person.

Som regel, nÄr en sikkerhetsrepresentant kommer inn i utviklingsteamet og pÄpeker en feil i koden, fÄr de et overrasket svar:

— Hvem er du? Jeg ser deg for fĂžrste gang. Alt er i orden for meg — min senior kollega la inn "apply" pĂ„ code review, sĂ„ vi gĂ„r videre!

Dette er en typisk situasjon fordi det er mye stÞrre tillit til seniorer eller bare kolleger i teamet som utvikleren jobber tett med og har code review med. Hvis en Security Champion pÄpeker en feil og konsekvenser i stedet for sikkerhetsrepresentanten, vil deres ord ha mer vekst.

Utviklere kjenner ogsĂ„ koden sin bedre enn noen sikkerhetsrepresentant. For en person som har minst 5 prosjekter i statisk analyseverktĂžy, er det vanligvis vanskelig Ă„ huske alle nyansene. Security Champions kjenner produktet sitt: hva som interagerer med hva og hva man skal se pĂ„ fĂžrst — de er mer effektive.

SÄ vurder Ä implementere Security Champions og utvide sikkerhetsteamets innflytelse. For selve mesteren er dette ogsÄ nyttig: profesjonell utvikling pÄ et nytt omrÄde, utvidelse av teknisk horisont, forbedring av tekniske, ledelsesmessige og lederferdigheter, og Þkning av markedsverdi. Dette er et element av sosial ingeniÞrkunst, dine "Þyne" i utviklingsteamet.

Testtrinn

Paradigmet 20 av 80 sier at 20 % av innsatsen gir 80 % av resultatene. Disse 20 % er praksiser for applikasjonsanalyse som kan og bĂžr automatiseres. Eksempler pĂ„ slike aktiviteter er statisk analyse — SAST, dynamisk analyse — DAST, og kontroll av Open Source. Jeg vil fortelle mer om aktivitetene og hvilke verktĂžy, samt hvilke sĂŠrtrekk vi vanligvis stĂžter pĂ„ nĂ„r vi implementerer dem i prosessen, og hvordan man gjĂžr det riktig.

Frykt og hat DevSecOps

Hovedproblemer med verktĂžyene

Jeg vil fremheve aktuelle problemer som berÞrer alle verktÞyene, som krever oppmerksomhet. Jeg vil gÄ mer i dybden pÄ dem for ikke Ä gjenta meg selv senere.

Lang tid for analyse. 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.

HÞyt nivÄ av False Negative eller False Positive. Alle produkter er forskjellige, alle bruker forskjellige rammeverk og har sin egen stil for koding. PÄ forskjellige kodebaser og teknologier kan verktÞyene vise varierende nivÄ av False Negative og False Positive. SÄ se pÄ hva som gjelder for dere og for deres applikasjoner som vil gi gode og pÄlitelige resultater.

Ingen integrasjoner med eksisterende verktÞy. Se pÄ verktÞyene fra vinkelen av integrasjoner med det dere allerede bruker. For eksempel, hvis dere har Jenkins eller TeamCity, sjekk integrasjonen av verktÞyene med denne programvaren, og ikke med GitLab CI som dere ikke bruker.

Manglende eller overdreven kompleksitet i tilpasning. Hvis verktĂžyet ikke har API, hvorfor trenger man det? Alt som kan gjĂžres i grensesnittet skal vĂŠre tilgjengelig gjennom API. Ideelt sett bĂžr verktĂžyet ha mulighet for tilpasning av sjekker.

Ingen utviklings-roadmap. Utviklingen stÄr ikke stille, vi bruker alltid nye rammeverk og funksjoner, og omskriver gammel kode til nye sprÄk. Vi Þnsker Ä 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 en reell og korrekt roadmap for utvikling.

Prosessens sĂŠregenheter

Utover egenskapene til verktÞyene, ta ogsÄ hensyn til egenskapene ved utviklingsprosessen. For eksempel er det en typisk feil Ä forstyrre utviklingen. La oss se hvilke andre sÊregenheter vi bÞr vurdere og hva sikkerhetsteamet bÞr vÊre oppmerksom pÄ.

For Ă„ unngĂ„ Ă„ forsinke utviklings- og lanseringsfrister, lag ulike regler og forskjellige show stoppers — kriterier for Ă„ stoppe byggeprosessen ved tilstedevĂŠrelse av sĂ„rbarheter — for forskjellige miljĂžer. For eksempel forstĂ„r vi at den nĂ„vĂŠrende grenen gĂ„r til utviklingsmiljĂžet eller UAT, sĂ„ vi stopper ikke og sier:

— Dere har sĂ„rbarheter her, dere kan ikke gĂ„ videre!

PÄ dette stadiet er det viktig Ä informere utviklerne om sikkerhetsproblemer som de bÞr vÊre oppmerksomme pÄ.

Tilgjengeligheten av sÄrbarheter er ikke en hindring for videre testing.: manuell, integrering eller manual. PÄ den annen side trenger vi Ä forbedre sikkerheten til produktet, sÄ utviklerne mÄ vÊre oppmerksomme pÄ hva sikkerhetsanalysene finner. Derfor noen ganger handler vi slik: nÄr vi distribuerer pÄ utviklingsmiljÞet, varsler vi utviklingen:

— Hei, dere har problemer, vĂŠr sĂ„ snill og ta hensyn til dem.

I UAT-fasen viser vi igjen varsler om sÄrbarheter, og i produksjonsfasen sier vi:

— Hei, vi har advart flere ganger, dere har ikke gjort noe - vi kan ikke slippe dere ut med dette.

NÄr det gjelder koden og dynamikken, mÄ vi vise og varsle om sÄrbarheter 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Ä rettes opp umiddelbart - det er feil. Se kun pÄ det som er skrevet nÄ, og pÄ den endringen som kommer inn i applikasjonen.

La oss si at vi har en funksjonell feil - hvordan applikasjonen ikke skal fungere: penger overfĂžres ikke, klikker man pĂ„ knappen, er det ingen overgang til neste side, eller varer lastes ikke opp. Sikkerhetsdefekter — det er ogsĂ„ defekter, men ikke med hensyn til applikasjonens arbeid, men i forhold til sikkerhet.

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

Siden alle sÄrbarheter er slike defekter, bÞr de finnes der hvor alle utviklingsfeil er. SÄ glem rapportene og de skremmende PDF-ene som ingen leser.

Frykt og hat DevSecOps

Da jeg jobbet for et selskap som drev med utvikling, fikk jeg tilsendt en rapport fra statiske analyseverktÞy. Jeg Äpnet den, ble forskrekket, lagde meg kaffe, bladde gjennom 350 sider, lukket den og fortsatte med arbeidet mitt. Store rapporter er dÞde rapporter. De gÄr vanligvis ingen steder, e-poster slettes, glemmes, mistes, eller forretningen sier at de aksepterer risikoer.

Hva gjÞr 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Þlge etter prioritet, pÄ lik linje med funksjonelle feil og testfeil.

Statisk analyse - SAST

Dette er en kodeanalyse for sÄrbarheter, men dette er ikke det samme som SonarQube. Vi sjekker ikke bare ut ifra mÞnstre eller stil. I analysen brukes en rekke tilnÊrminger: ved hjelp av sÄrbarhetstreet, ved DataFlow, ved analyse av konfigurasjonsfiler. Dette er alt som gjelder koden direkte.

Fordeler med tilnÊrmingen: avdekking av sÄrbarheter i koden tidlig i utviklingsprosessen, nÄr det fortsatt ikke finnes miljÞer og verktÞy er klare, og mulighet for inkrementell skanning: skanning av den delen av koden som har blitt endret, og bare av den funksjonaliteten vi jobber med nÄ, noe som reduserer skanningstiden.

Ulemper — er fravĂŠret av stĂžtte for nĂždvendige sprĂ„k.

NÞdvendige integrasjoner, som mÄ vÊre i verktÞyene, etter min subjektive mening:

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

Bildet viser noen av de beste representantene for statisk analyse.

Frykt og hat DevSecOps

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

Frykt og hat DevSecOps

SAST Open Source vil ikke finne et stort antall sÄrbarheter eller komplekse DataFlow, men nÄr prosessen bygges, kan og bÞr de brukes. De hjelper til med Ä forstÄ hvordan prosessen skal bygges, hvem som skal svare pÄ feilene, hvem som skal rapportere og hvem som skal rapportere tilbake. Hvis du Þnsker Ä gjennomfÞre det fÞrste steget i oppbyggingen av sikkerheten til koden din - bruk Open Source-lÞsninger.

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Ä integrasjoner i prosessen.

Integrasjon pÄ CVS-nivÄ

Hvis du har Bitbucket eller GitLab, kan du gjÞre integrasjon pÄ nivÄet Concurrent Versions System.

Ved hendelse — pull request, commit. Du skanner koden og viser i statusen til byggingen om sikkerhetskontrollen har bestĂ„tt eller ikke.

Tilbakemelding. Uten tvil er tilbakemelding alltid nÞdvendig. Hvis du bare har utfÞrt oppgaven pÄ sikkerhetssiden, pakket det inn i en boks og fortalt ingen om det, og deretter pÄ slutten av mÄneden kommer med en haug med feil - det er ikke riktig og ikke bra.

Integrasjon med systemet for kodegjennomgang

En gang hadde vi en teknisk bruker fra AppSec som standardgjennomgjÞrer for viktige prosjekter. Avhengig av om det ble funnet feil i den nye koden eller ei, tildeler gjennomgangeren statusen til pull request som «akseptert» eller «trenger arbeid» - enten alt er OK, eller det er behov for videre arbeid med linker til hva som mÄ forbedres. For integreringen med versjonen som gÄr 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Ä sikkerhetsstatusene for nettopp denne spesifikke prosessen.

Integrasjon med SonarQube

Mange har quality gate for kodekvalitet. Her er det det samme - man kan lage de samme gates bare for SAST-verktÞy. Det vil vÊre det samme grensesnittet, den samme quality gate, men den vil bli kalt security gate. Og pÄ samme mÄte, hvis du har satt opp prosessen med SonarQube, kan du enkelt integrere alt dit.

Integrasjon pÄ CI-nivÄ

Her er det ogsÄ ganske enkelt:

  • PĂ„ samme nivĂ„ som automatiserte tester, enhetstester.
  • Oppdeling etter utviklingsfaser: dev, test, prod. Ulike sett med regler kan aktiveres, eller forskjellige feilkriterier: stoppe byggingen, ikke stoppe byggingen.
  • Synkron/asin.kron oppstart. Vi venter pĂ„ Ă„ fĂ„ vite om sikkerhetstestene er ferdige eller ikke. Det vil si at vi bare startet dem og gĂ„r videre, og deretter kommer statusen til oss om at alt er bra eller dĂ„rlig.

Dette er alt i en ideell verden. I det virkelige liv finnes ikke dette, men vi streber etter det. Resultatet av sikkerhetskontrollene bĂžr vĂŠre likt resultatene fra enhetstestene.

For example, we took on a large project and decided that we would now scan it with SAST — 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 — that’s our technical debt. We'll box up the debt, gradually tackle it, and log bugs in the defect trackers. We’ll hire a company, do everything ourselves, or be assisted by Security Champions — and the technical debt will decrease.

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 — we checked what happened, fixed one issue, fixed the other, ran the tests next time — 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.

An example of a security gate — analogous to a quality gate, based on the presence and number of vulnerabilities in the code.

Frykt og hat DevSecOpsWe integrate with SonarQube — the plugin is installed, everything is very convenient and cool.

Integration with the development environment

Integration capabilities:

  • Running scans from the development environment even before a commit.
  • Viewing results.
  • Analyzing results.
  • Synchronization with the server.

This is what obtaining results from the server looks like.

Frykt og hat DevSecOps

In our development environment Intellij IDEA there simply appears an additional item that informs that vulnerabilities were found during the scan. You can immediately fix the code, check recommendations and Flow Graph. Everything is located at the developer's workstation, which is very convenient — no need to navigate through additional links to check something else.

Open Source

This is my favorite topic. Everyone uses Open Source libraries — why write a bunch of workarounds and wheel reinventions when you can use a ready-made library where everything is already implemented?

Frykt og hat DevSecOps

SelvfĂžlgelig, det er slik, men biblioteker skrives ogsĂ„ av mennesker, og de medfĂžrer ogsĂ„ bestemte risikoer og inneholder ogsĂ„ sĂ„rbarheter som av og til eller stadig rapporteres. Derfor er det neste trinnet i Application Security – analyse av Open Source-komponenter.

Analyse av Open Source – OSA

VerktĂžyet inkluderer tre store faser.

SÞke etter sÄrbarheter i bibliotekene. For eksempel vet verktÞyet at vi bruker et bibliotek, og at i CVE eller i bug-trackere finnes det sÄrbarheter som angÄr denne versjonen av biblioteket. NÄr man prÞver Ä bruke det, vil verktÞyet gi en advarsel om at biblioteket er sÄrbart, og anbefale Ä bruke en annen versjon hvor sÄrbarhetene ikke finnes.

Analyse av lisensrenhet. Dette er ennÄ ikke spesielt populÊrt her, men hvis du jobber med utenlandske prosjekter, kan du noen ganger fÄ problemer for Ä bruke en Open Source-komponent som ikke kan brukes eller modifiseres. I henhold til lisenspolitikken til biblioteket, kan vi ikke gjÞre dette. Hvis vi har modifisert det og bruker det, mÄ vi legge ut koden vÄr. SelvfÞlgelig Þnsker ingen Ä publisere koden til sine produkter, men det finnes mÄter Ä beskytte seg mot dette.

Analyse av komponenter som brukes i industrien. La oss anta en hypotetisk situasjon hvor vi endelig har fullfĂžrt utviklingen og utgitt den siste versjonen av mikrotjenesten vĂ„r. Den lever der fantastisk – en uke, en mĂ„ned, et Ă„r. Vi samler den ikke inn, gjennomfĂžrer ikke sikkerhetssjekker, alt virker bra. Men plutselig, to uker etter utgivelsen, avdekkes en kritisk sĂ„rbarhet i Open Source-komponenten vi bruker nettopp i denne utgitt versjonen, i produksjonsmiljĂžet. Hvis vi ikke registrerer hva og hvor vi bruker, vil vi bare ikke fĂ„ med oss denne sĂ„rbarheten. I enkelte verktĂžy er det muligheter for Ă„ overvĂ„ke sĂ„rbarheter i bibliotekene som nĂ„ brukes i produksjon. Dette er veldig nyttig.

Muligheter:

  • Ulike retningslinjer for forskjellige faser av utviklingen.
  • OvervĂ„king av komponenter i produksjonsmiljĂžet.
  • Kontroll av bibliotekene innenfor organisasjonens rammer.
  • StĂžtte for ulike byggesystemer og sprĂ„k.
  • Analyse av Docker-bilder.

Noen eksempler pÄ ledere innen omrÄdet som jobber med analyse av Open Source.

Frykt og hat DevSecOps
Den eneste gratis av dem er Dependency-Check fra OWASP. Det kan aktiveres i de tidlige fasene for Ä se hvordan det fungerer og hva det stÞtter. 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 Ä fÄ varsler om sÄrbarheter.

Integrasjon i prosessen

Bokholderkontroll i perimetern, som lastes ned fra eksterne kilder. Vi har bÄde eksterne og interne depot. For eksempel, inne i Event Central har vi Nexus, og vi Þnsker at det ikke skal vÊre noen sÄrbarheter med status "kritisk" eller "hÞy" i vÄrt interne depot. Det er mulig Ä konfigurere proxy med verktÞyet Nexus Firewall Lifecycle for Ä stenge slike sÄrbarheter ute fra det interne depot.

Integrasjon i CI. PÄ samme nivÄ 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Êre enige i at det er noe de bÞr vÊre oppmerksomme pÄ fÞr produksjon.

Integrasjon med artefaktlagre: Nexus og JFrog.

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

Integrasjon i CD. Dette er en fantastisk funksjon som jeg liker veldig godt og som jeg allerede har snakket om – overvĂ„king av nye sĂ„rbarheter i produksjonsmiljĂžet. Det fungerer omtrent slik.

Frykt og hat DevSecOps

Vi har Offentlige komponentdepoter — noen verktĂžy utenfor, og vĂ„rt interne lager. Vi vil at det kun skal vĂŠre trusted components der. NĂ„r vi proxier en forespĂžrsel, kontrollerer vi at det nedlastede biblioteket ikke har sĂ„rbarheter. Hvis det faller under spesifikke retningslinjer som vi setter og som nĂždvendigvis mĂ„ godkjennes av utviklingen, laster vi det ikke opp, og det kommer et avslag om Ă„ bruke en annen versjon. Dermed, hvis det er noe virkelig kritisk og dĂ„rlig i biblioteket, vil utvikleren ikke fĂ„ biblioteket pĂ„ installasjonsstadiet—han mĂ„ bruke en hĂžyere eller lavere versjon.

  • Ved bygging sjekker vi at ingen har forsĂžkt Ă„ lure inn noe dĂ„rlig, at alle komponentene er sikre, og at ingen har fĂžrt inn noe farlig pĂ„ en USB-enhet.
  • I lageret vĂ„rt har vi kun trusted components.
  • Ved distribusjon sjekker vi igjen selve pakken: war, jar, DL eller Docker-bilde for Ă„ se at det er i samsvar med retningslinjene.
  • NĂ„r vi gĂ„r ut i produksjon overvĂ„ker vi hva som skjer i det industrielle miljĂžet: dukker det opp kritiske sĂ„rbarheter eller ikke.

Dynamisk analyse – DAST

VerktÞyene for dynamisk analyse skiller seg radikalt fra alt som er sagt fÞr. Dette er en form for simulering av brukerens interaksjon med applikasjonen. Hvis det er en webapplikasjon, sender vi forespÞrslene som imiterer klientens arbeid, trykker pÄ knapper pÄ fronten, sender kunstige data fra skjemaet: anfÞrselstegn, parenteser, tegn i forskjellige koderinger, for Ä se hvordan applikasjonen fungerer og behandler eksterne data.

Det samme systemet lar oss sjekke mal-sÄrbarheter i Open Source. Siden DAST ikke vet hvilken Open Source vi bruker, sender det bare «ondsinnede» mÞnstre og analyserer serverens svar:

— Aha, her er det et deserialiseringsproblem, og her er det ikke.

Det medfĂžrer store risikoer, fordi hvis du gjennomfĂžrer denne sikkerhetstesten pĂ„ den samme plattformen som testerne arbeider med—kan det skje ubehagelige ting.

  • HĂžy belastning pĂ„ nettverksserveren for applikasjonen.
  • Ingen integrasjoner.
  • Mulighet for Ă„ endre innstillingene for den analyserte applikasjonen.
  • Ingen stĂžtte for nĂždvendige teknologier.
  • Vanskeligheter med oppsett.

Vi hadde en situasjon der vi endelig startet AppScan: vi fikk i lang tid tilgang til applikasjonen, fikk tre kontoer og ble glade – endelig skulle vi sjekke alt! Vi startet skanningen, og det fĂžrste AppScan gjorde var Ă„ gĂ„ inn i administrasjonspanelet, trykke pĂ„ alle knapper, endre halvparten av dataene, og sĂ„ drepte den til og med serveren sin. mailform-forespĂžrslene. Utviklingen med testing sa:

– Folkens, er dere seriþse?! Vi ga dere kontoene, og dere la ned testmiljþet!

VĂŠr oppmerksom pĂ„ mulige risikoer. Ideelt sett bĂžr du forberede et eget miljĂž for testing av informasjonssikkerhet som er isolert fra resten av omgivelsene, og det anbefales Ă„ sjekke administrasjonspanelet i manuell modus. Dette er en pentest – de gjenvĂŠrende prosentene av innsatsen som vi ikke vurderer nĂ„.

Det er verdt Ä merke seg at dette kan brukes som en analog til belastningstesting. I den fÞrste fasen kan du aktivere en dynamisk skanner med 10-15 trÄder og se hva som skjer, men som regel, som praksis viser, er resultatene ikke gode.

Noen ressurser som vi vanligvis bruker.

Frykt og hat DevSecOps

Det er verdt Ă„ fremheve Burp Suite – dette er «sveitsisk armĂ©kniv» for enhver sikkerhetsspesialist. Alle bruker det, og det er veldig praktisk. NĂ„ har det kommet en ny demoversjon av enterprise edition. Tidligere var dette bare et stand-alone verktĂžy med plugins, men nĂ„ lager utviklerne endelig en stor server som gjĂžr det mulig Ă„ administrere flere agenter. Dette er flott, jeg anbefaler Ă„ prĂžve det.

Integrasjon i prosessen

Integrasjonen skjer ganske bra og enkelt: start skanningen etter vellykket installasjon av applikasjonen pÄ miljÞet og skanning etter vellykket gjennomfÞring av integrasjonstesting..

Hvis integrasjonene ikke fungerer eller det er dummy-funksjoner og mock-funksjoner, er det meningslþst og nyttelþst – uansett hvilket mþnster vi sender, vil serveren svare likt.

  • Ideelt sett – et eget miljĂž for testing.
  • FĂžr testingen, skriv ned innloggingssekvensen.
  • Testing av administrasjonssystemet – bare manuelt.

Prosessen

Litt generelt om prosessen generelt og om arbeidet til hvert enkelt verktĂžy. Alle applikasjoner er forskjellige – Ă©n fungerer bedre med dynamisk analyse, en annen med statisk, en tredje med OpenSource-analyse, pentester eller noe helt annet, for eksempel hendelser med Waf.

Hver prosess trenger kontroll.

For Ä forstÄ hvordan prosessen fungerer og hvor den kan forbedres, mÄ man samle inn metrikker fra alt man har tilgang til, inkludert produksjonsmetrikker, metrikker fra verktÞy og fra feilsporere.

Alle data er nyttige. Man mÄ se pÄ forskjellige perspektiver for Ä forstÄ hvor et verktÞy er best anvendt, og hvor prosessen spesifikt svikter. Kanskje man bÞr se pÄ utviklernes responstid for Ä finne ut hvor forbedringer kan gjÞres basert pÄ tid. Jo flere data man har, jo flere perspektiver kan man bygge fra overordnede til detaljerte prosessnivÄer.

Frykt og hat DevSecOps

Siden alle statiske og dynamiske analyseverktĂžy har sine egne API-er, mĂ„ter Ă„ kjĂžre pĂ„, prinsipper, noen har planleggere, andre har ikke – vi utvikler et verktĂžy AppSec Orkestrator, som gir en enkelt tilgangspunkt til hele prosessen fra produktet og lar deg styre det fra ett punkt.

For ledere, utviklere og sikkerhetsingeniĂžrer er det ett tilgangspunkt hvor man kan se hva som er igangsatt, konfigurere og starte skanning, fĂ„ resultatene fra skanningen og stille krav. Vi prĂžver Ă„ unngĂ„ papirer og oversette alt til et menneskelig format som er i bruk av utviklere – sider pĂ„ Confluence med status og metrikker, feil i Jira eller forskjellige feilsporere, eller integrere i synkron / asynkron prosess i CI/CD.

Hovedpunkter

VerktĂžyene er ikke det viktigste. FĂžrst mĂ„ man tenke gjennom prosessen – deretter implementere verktĂžy. VerktĂžyene er gode, men dyre, sĂ„ man kan begynne med prosessen og etablere samarbeid og forstĂ„else mellom utvikling og sikkerhet. Fra et sikkerhetssynspunkt – man mĂ„ ikke "stoppe" alt som kommer forbi, fra et utviklingssynspunkt – hvis noe er high mega super kritisk, mĂ„ det utbedres i stedet for Ă„ lukke Ăžynene for problemet.

Produktkvalitet – et felles mĂ„l for bĂ„de sikkerhet og utvikling. Vi gjĂžr det samme, prĂžver Ă„ sikre at alt fungerer riktig og at det ikke er noen omdĂžmmerisikoer eller Ăžkonomiske tap. Derfor fremmer vi tilnĂŠrmingen til DevSecOps, SecDevOps, for Ă„ etablere kommunikasjon og gjĂžre produktet bedre.

Begynn med det som allerede finnes.: krav, arkitektur, delvise kontroller, treninger, retningslinjer. Du trenger ikke Ă„ implementere alle praksiser pĂ„ alle prosjekter med Ă©n gang — gĂ„ iterativt. Det finnes ingen enhetlig standard — eksperimenter og prĂžv ulike tilnĂŠrminger og lĂžsninger.

Mellom sikkerhetsfeil og funksjonalitetsfeil er det likhetstegn.

Automatiser alt, som beveger seg. Alt som ikke beveger seg — beveg det og automatiser det. Hvis noe gjĂžres manuelt, er ikke det en god del av prosessen. Det kan vĂŠre lurt Ă„ revurdere det og ogsĂ„ automatisere.

Hvis stĂžrrelsen pĂ„ sikkerhetsteamet er liten — bruk Security Champions.

Kanskje det jeg har snakket om ikke passer for deg, og du finner pĂ„ noe eget — og det er bra. Men velg verktĂžy basert pĂ„ kravene til din egen prosess. Ikke se pĂ„ hva communityen sier, at dette verktĂžyet er dĂ„rlig, og dette er bra. Kanskje alt viser seg Ă„ vĂŠre motsatt for ditt produkt.

Krav til verktĂžyene.

  • Lavt nivĂ„ av falske positiver.
  • Rimelig analysetid.
  • Brukervennlighet.
  • Tilgjengelighet av integrasjoner.
  • ForstĂ„else av produktets utviklingsroadmap.
  • Mulighet for tilpasning av verktĂžyene.

Yuris presentasjon ble valgt som en av de beste pÄ DevOpsConf 2018. For Ä bli kjent med enda flere interessante ideer og praktiske saker, kom til Skolkovo 27. og 28. mai pÄ DevOpsConf som en del av RIT++ festivalen. Og enda bedre, hvis du er villig til Ä dele din erfaring, sÄ send inn en sÞknad til presentasjonen innen 21. april.

Kilde: habr.com

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