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.

. 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.

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 - 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.

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.

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 - . 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.

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 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.

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 . 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 . DevSecOps-paradigmet passer perfekt med smidig utviklingsmetodikk, implementering, stÞtte og deltakelse i hver utgivelse og iterasjon.

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 - .
Security Champions er personer i utviklingsteamet som er interessert i sikkerheten til produktet ditt.

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
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.

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 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.

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 , 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.

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

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 .
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 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.
Vi 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.

I vÄrt utviklingsmiljÞ 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 . 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?

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 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.

Den eneste gratis er denne 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.

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 -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.

Verdt Ä fremheve 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 .
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.

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 innenfor . Enda bedre, hvis du er klar til Ä dele opplevelsen din, da for rapporten frem til 21. april.
Kilde: www.habr.com
