RĂ€dsla och hat DevSecOps

Vi hade 2 kodanalysatorer, 4 verktyg för dynamisk testning, egna skapelser och 250 skript. Inte sÄ att allt detta var nödvÀndigt i den nuvarande processen, men eftersom jag började implementera DevSecOps, sÄ mÄste man gÄ hela vÀgen.

RĂ€dsla och hat DevSecOps

KÀlla. KaraktÀrernas skapare: Justin Roiland och Dan Harmon.

Vad Ă€r SecDevOps? Och DevSecOps? Vad Ă€r skillnaderna? ApplikationssĂ€kerhet – vad handlar det om? Varför fungerar den klassiska metoden inte lĂ€ngre? PĂ„ alla dessa frĂ„gor har svaret. Jurij Shabalin frĂ„n Swordfish Security. Jurij kommer grundligt att svara pĂ„ allt och gĂ„ igenom problemen med övergĂ„ngen frĂ„n den klassiska modellen för applikationssĂ€kerhet till DevSecOps-processen: hur man rĂ€tt ska gĂ„ tillvĂ€ga för att integrera processen för sĂ€ker utveckling i DevOps-processen utan att bryta nĂ„got, hur man gĂ„r igenom huvudsakliga faser av sĂ€kerhetstestning, vilka verktyg som kan anvĂ€ndas, hur de skiljer sig och hur man korrekt konfigurerar dem för att undvika fallgropar.

Spela video

Om talaren: Jurij Shabalin – Chief Security Architect pĂ„ Swordfish Security.. Ansvarar för implementeringen av SSDL, för den totala integrationen av programanalysverktyg i ett enhetligt utvecklings- och testekosystem. 7 Ă„rs erfarenhet inom informationssĂ€kerhet. Har arbetat pĂ„ Alfa-Bank, Sberbank och pĂ„ Positive Technologies, som utvecklar programvara och tillhandahĂ„ller tjĂ€nster. Talare vid internationella konferenser som ZerONights, PHDays, RISSPA, OWASP.

ApplikationssÀkerhet: vad handlar det om?

ApplikationssĂ€kerhet – Ă€r ett omrĂ„de inom sĂ€kerhet som ansvarar för sĂ€kerheten hos applikationer. Detta rör sig inte om infrastruktur eller nĂ€tverkssĂ€kerhet, utan just det vi skriver och det utvecklarna arbetar med – det handlar om brister och sĂ„rbarheter i sjĂ€lva applikationen.

Inriktning SDL eller SDLC — Security development lifecycle – utvecklades av Microsoft. PĂ„ schemat – den kanoniska modellen av SDLC, vars huvudsakliga uppgift Ă€r att sĂ€kerhet ska ingĂ„ i varje steg av utvecklingen, frĂ„n krav till release och produktion. Microsoft insĂ„g att det fanns för mĂ„nga buggar i produktion, att de blev fler och att nĂ„got mĂ„ste göras Ă„t det, vilket ledde till detta tillvĂ€gagĂ„ngssĂ€tt som blev kanoniskt.

RĂ€dsla och hat DevSecOps

ApplikationssÀkerhet och SSDL syftar inte till att upptÀcka sÄrbarheter, som man vanligtvis tror, utan till att förhindra att de uppstÄr. Med tiden har den kanoniska metoden frÄn Microsoft förbÀttrats, utvecklats, och det har tillkommit en djupare och mer detaljerad insikt.

RĂ€dsla och hat DevSecOps

Den kanoniska SDLC Ă€r starkt detaljerad i olika metoder – OpenSAMM, BSIMM, OWASP. Metoderna skiljer sig Ă„t, men övergripande liknar de varandra.

Bygg sÀkerhet in i mognadsmodellen

Jag gillar mest BSIMM — Bygg sĂ€kerhet in i mognadsmodellen. Grunden i metoden Ă€r att dela upp processen för applikationssĂ€kerhet i 4 domĂ€ner: Governance, Intelligence, SSDL Touchpoints och Deployment. I varje domĂ€n finns 12 praktiker som presenteras i form av 112 aktiviteter.

RĂ€dsla och hat DevSecOps

Varje av de 112 aktiviteterna har 3 mognadsnivÄer: grundlÀggande, medel och avancerad. Alla 12 praktiker kan studeras avsnitt för avsnitt, vÀlja viktiga för er och förstÄ hur de ska implementeras och gradvis lÀgga till element, till exempel statisk och dynamisk kodanalys eller code review. Ni skriver en plan och arbetar lugnt enligt den i implementeringen av de valda aktiviteterna.

Varför DevSecOps

DevOps Àr en stor helhet dÀr man mÄste ta ansvar för sÀkerheten.

Ursprungligen DevOps antog sÀkerhetskontroller. I praktiken var sÀkerhetsteamen mycket mindre Àn idag, och de fungerade inte som deltagare i processen, utan som en kontroll- och tillsynsorganisation som stÀller krav och kontrollerar kvaliteten pÄ produkten i slutet av release. Detta Àr den klassiska metoden dÀr sÀkerhetsteamen stod bakom en vÀgg frÄn utvecklingen och inte deltog i processen.

RĂ€dsla och hat DevSecOps

Huvudproblemet ligger just i att sÀkerheten Àr separat frÄn utvecklingen. Vanligtvis Àr det en sÀkerhetskontur med 2-3 stora och dyra verktyg. En gÄng var sjÀtte mÄnad kommer kÀllkoden eller applikationen som behöver kontrolleras, och en gÄng om Äret görs pentester. Detta leder till att tidslinjen för produktlansering försenas, och utvecklaren fÄr en enorm mÀngd sÄrbarheter frÄn automatiserade verktyg. Allt detta Àr omöjligt att sortera ut och ÄtgÀrda, eftersom resultaten frÄn tidigare sex mÄnader inte har sorterats, och hÀr kommer en ny bunt.

Under vĂ„rt företags arbete ser vi att sĂ€kerhet inom alla omrĂ„den och industrier förstĂ„r att det Ă€r dags att samarbeta med utvecklingen – i Agile. DevSecOps-paradigmet passar utmĂ€rkt in i metoden för agil utveckling, för implementering, stöd och deltagande i varje release och iteration.

RĂ€dsla och hat DevSecOps

ÖvergĂ„ngen till DevSecOps

Det viktigaste ordet i sÀkerhetsutvecklingslivscykeln Àr "process"Du mÄste förstÄ detta innan du tÀnker pÄ att köpa verktyg.

Att bara inkludera verktyg i DevOps-processen Àr inte tillrÀckligt - det Àr viktigt med samverkan och förstÄelse mellan deltagarna i processen.

MÀnniskor Àr viktigare Àn verktygen.

Ofta börjar planeringen av en sÀker utvecklingsprocess med valet och köpet av verktyg, och slutar med försök att integrera verktyget i den pÄgÄende processen, som ofta förblir just försök. Detta leder till sorgliga konsekvenser, eftersom varje verktyg har sina egna egenskaper och begrÀnsningar.

Ett vanligt fall Àr nÀr sÀkerhetsavdelningen valt ett bra, dyrt verktyg med mÄnga möjligheter och kom till utvecklarna för att integrera det i processen. Men det fungerar inte - processen Àr sÄdan att begrÀnsningarna för det redan inköpta verktyget inte passar in i den nuvarande paradigm.

Börja med att beskriva vilket resultat du vill ha och hur processen ska se ut. Detta hjÀlper till att förstÄ verktygets och sÀkerhetens roller i processen.

Börja med det som redan anvÀnds.

Innan du köper dyra verktyg, ta en titt pÄ vad du redan har. Varje företag har sÀkerhetskrav som stÀlls pÄ utvecklingen, det finns granskningar, pentester - varför inte omvandla allt detta till en begriplig och anvÀndarvÀnlig form?

Vanligtvis Àr kraven en pappershög som ligger pÄ hyllan. Det har funnits fall dÀr vi kommer till ett företag för att titta pÄ processerna och ber om att fÄ se sÀkerhetskraven för mjukvaran. Specialisten som hanterade detta letade lÀnge:

- Nu, nÄgonstans i anteckningarna var det en vÀg till det hÀr dokumentet.

Till slut fick vi dokumentet efter en vecka.

För krav, kontroller och annat, skapa en sida, till exempel pÄ Confluence – det Ă€r praktiskt för alla.

Det Àr enklare att omforma det som redan finns och anvÀnda det som start.

AnvÀnd Security Champions.

Vanligtvis, i ett medelstort företag med 100-200 utvecklare, arbetar en sĂ€kerhetsansvarig som utför flera funktioner och har fysiskt svĂ„rt att kolla allt. Även om han försöker sitt bĂ€sta - ensam kan han inte kontrollera hela koden som utvecklarna genererar. För sĂ„dana fall har konceptet balanserats - Security Champions.

Security Champions Àr en person inom utvecklingsteamet som Àr intresserad av sÀkerheten i din produkt.

RĂ€dsla och hat DevSecOps

Security Champion Àr ingÄngen till utvecklingsteamet och sÀkerhetens evangelist i en och samma person.

Vanligtvis, nÀr en sÀkerhetsexpert kommer till utvecklingsteamet och pÄpekar ett fel i koden, fÄr de ett förvÄnat svar:

— Vem Ă€r du? Jag ser dig för första gĂ„ngen. Jag mĂ„r bra — min seniora kollega gav godkĂ€nt pĂ„ code review, vi gĂ„r vidare!

Detta Àr en typisk situation, eftersom det finns mycket större förtroende för seniorer eller bara kollegor i teamet som utvecklaren stÀndigt interagerar med i sitt arbete och under code review. Om Security Champion istÀllet pÄpekar felet och konsekvenserna kommer deras ord att vÀga tyngre.

Utvecklare kĂ€nner ocksĂ„ till sin kod bĂ€ttre Ă€n nĂ„gon sĂ€kerhetsexpert. För en person som har minst 5 projekt i verktyget för statisk analys Ă€r det vanligtvis svĂ„rt att komma ihĂ„g alla detaljer. Security Champions kĂ€nner sitt produkt: vad som interagerar med vad och vad som bör beaktas först — de Ă€r mer effektiva.

SÄ tÀnk pÄ att implementera Security Champions och utöka sÀkerhetsteamets inflytande. För sjÀlva mÀstaren Àr detta ocksÄ fördelaktigt: professionell utveckling inom ett nytt omrÄde, utvidgning av teknisk kunskap, förbÀttring av tekniska, ledarskaps- och ledarnivÄer, ökad marknadsvÀrde. Det Àr en viss form av social ingenjörskonst, dina "ögon" i utvecklingsteamet.

Testningssteg

Paradigmet 20 av 80 anger att 20% av insatserna ger 80% av resultaten. Dessa 20% Ă€r praxis för analys av applikationer som kan och bör automatiseras. Exempel pĂ„ sĂ„dana aktiviteter Ă€r statisk analys — SAST, dynamisk analys — DAST, och kontroll av Open Source. Jag kommer att berĂ€tta mer om aktiviteterna samt om de verktyg och specifika egenskaper vi vanligtvis stöter pĂ„ nĂ€r vi implementerar dem i processen, och hur man gör det korrekt.

RĂ€dsla och hat DevSecOps

Huvudproblem med verktygen

Jag kommer att lyfta fram aktuella problem för alla verktyg som krÀver uppmÀrksamhet. Jag kommer att gÄ igenom dem mer ingÄende för att undvika upprepning.

LÄngsam analys. Om det tar 30 minuter frÄn commit till produktionslansering för alla tester och byggprocessen, kommer sÀkerhetskontrollerna att ta ett dygn. Ingen kommer att vilja bromsa processen. TÀnk pÄ denna aspekt och dra slutsatser.

Hög nivÄ av False Negative eller False Positive. Alla produkter Àr olika, alla anvÀnder olika ramverk och sin egen kodstil. PÄ olika kodbaser och teknologier kan verktygen visa olika nivÄer av False Negative och False Positive. SÄ se pÄ vad som faktiskt gÀller för ert företag och era applikationer, som kommer att ge bra och tillförlitliga resultat.

Det finns inga integrationer med befintliga verktyg. Titta pĂ„ verktygen ur integrationsperspektiv, baserat pĂ„ det ni redan anvĂ€nder. Till exempel, om ni anvĂ€nder Jenkins eller TeamCity — kontrollera integrationen av verktygen med just denna programvara, och inte med GitLab CI, som ni inte anvĂ€nder.

Avsaknad eller överdriven komplexitet av anpassningar. Om verktyget inte har ett API, varför skulle det dÄ vara nödvÀndigt? Allt som kan göras i grÀnssnittet bör ocksÄ vara tillgÀngligt via API. I en idealisk situation bör verktyget ha möjlighet att anpassa kontroller.

Ingen produktutvecklingsplan. Utvecklingen stÄr inte still, vi anvÀnder alltid nya ramverk och funktioner, och skriver om gammal kod till nya sprÄk. Vi vill vara sÀkra pÄ att verktyget vi köper kommer att stödja nya ramverk och teknologier. DÀrför Àr det viktigt att veta att produkten har en verklig och korrekt Roadmap utvecklingsplan.

Processens sÀrdrag

Förutom verktygens sÀrdrag bör ni ocksÄ ta hÀnsyn till utvecklingsprocessens sÀrdrag. Till exempel, att störa utvecklingen Àr ett typiskt misstag. LÄt oss titta pÄ vilka andra sÀrdrag som bör beaktas och vad sÀkerhetsteamet bör fokusera pÄ.

För att inte försena utvecklings- och lanseringsscheman, skapa olika regler och show stoppers — kriterier som stoppar byggprocessen vid förekomst av sĂ„rbarheter — för olika miljöer. Till exempel, vi förstĂ„r att den aktuella grenen gĂ„r till utvecklingsmiljön eller UAT, vilket betyder att vi inte stoppar eller sĂ€ger:

— HĂ€r finns sĂ„rbarheter, ni kan inte gĂ„ vidare!

I detta skede Àr det viktigt att informera utvecklarna om att det finns sÀkerhetsproblem som de bör uppmÀrksamma.

NĂ€rvaron av sĂ„rbarheter Ă€r inget hinder för fortsatt testning: manuell, integrations- eller manuellt. Å andra sidan behöver vi pĂ„ nĂ„got sĂ€tt öka produktens sĂ€kerhet sĂ„ att utvecklarna inte ignorerar det som sĂ€kerheten upptĂ€cker. DĂ€rför gör vi ibland sĂ„ hĂ€r: vid stand-upen, nĂ€r det lanseras pĂ„ utvecklingsmiljön, informerar vi helt enkelt utvecklingen:

— Grabbar, ni har problem, vĂ€nligen ta en titt pĂ„ dem.

Under UAT-steget visar vi Äterigen varningar om sÄrbarheter, och nÀr vi gÄr live sÀger vi:

— Grabbar, vi har varnat flera gĂ„nger, ni har inte gjort nĂ„got – vi kan inte slĂ€ppa ut er med detta.

Om vi pratar om kod och dynamik, sĂ„ Ă€r det nödvĂ€ndigt att bara visa och varna för sĂ„rbarheterna i de funktioner och koder som just har skrivits i denna funktion. Om utvecklaren flyttade en knapp med 3 pixlar och vi sĂ€ger till honom att han har en SQL-injektion och dĂ€rför mĂ„ste fixa detta omedelbart – det Ă€r fel. Titta bara pĂ„ det som har skrivits nu och pĂ„ den Ă€ndring som kommer till applikationen.

LĂ„t oss sĂ€ga att vi har en viss funktionell defekt – det som applikationen inte ska göra: pengar överförs inte, det blir inget klick pĂ„ knappen som leder till nĂ€sta sida eller varan laddas inte. SĂ€kerhetsdefekter — det Ă€r samma typ av defekter, men inte i termer av applikationens funktion, utan av sĂ€kerhet.

Inte alla problem med mjukvarukvalitet Àr sÀkerhetsproblem. Men alla sÀkerhetsproblem Àr relaterade till mjukvarukvalitet. Sherif Mansour, Expedia.

Eftersom alla sÄrbarheter Àr samma typ av defekter, bör de finnas dÀr dÀr alla utvecklingsdefekter finns. SÄ glöm rapporterna och de skrÀmmande PDF:erna som ingen lÀser.

RĂ€dsla och hat DevSecOps

NÀr jag arbetade pÄ ett företag som sysslade med utveckling fick jag en rapport frÄn verktyg för statisk analys. Jag öppnade den, blev förskrÀckt, gjorde kaffe, blÀddrade igenom 350 sidor, stÀngde den och gick tillbaka till mitt arbete. Stora rapporter Àr döda rapporter. Ofta gÄr de ingenstans, e-postmeddelanden raderas, glöms bort, tappar bort eller sÄ sÀger affÀrssidan att de accepterar riskerna.

Vad ska man göra? De bekrÀftade defekter som har hittats omvandlar vi helt enkelt till en utvecklingsvÀnlig form, till exempel genom att lÀgga dem i backloggen i Jira. Vi prioriterar defekterna och ÄtgÀrdar dem i prioritetsordning tillsammans med funktionella defekter och testdefekter.

Statisk analys - SAST

Detta Àr en analys av koden för att upptÀcka sÄrbarheter., men det Àr inte detsamma som SonarQube. Vi kontrollerar inte bara utifrÄn mönster eller stil. Under analysen tillÀmpas en rad tillvÀgagÄngssÀtt: efter sÄrbarhetsstrukturen, genom DataFlow, genom analys av konfigurationsfiler. Det handlar allt om koden.

Fördelar med tillvÀgagÄngssÀttet: upptÀckte sÄrbarheter i koden i ett tidigt skede av utvecklingen, nÀr det Ànnu inte finns nÄgra miljöer eller fÀrdiga verktyg, och möjligheten till inkrementell skanning: skanning av den del av koden som har Àndrats, och endast den funktion som vi just nu arbetar med, vilket minskar skanningstiden.

Nackdelar — det Ă€r avsaknaden av stöd för nödvĂ€ndiga sprĂ„k.

NödvÀndiga integrationer, som bör finnas i verktygen, enligt min subjektiva Äsikt:

  • Integrationsverktyg: Jenkins, TeamCity och Gitlab CI.
  • Utvecklingsmiljö: Intellij IDEA, Visual Studio. För utvecklaren Ă€r det bekvĂ€mare att inte trĂ€nga sig in i ett oklart grĂ€nssnitt som man mĂ„ste minnas, utan direkt pĂ„ sin arbetsplats i sin egen utvecklingsmiljö se alla nödvĂ€ndiga integrationer och sĂ„rbarheter som han har hittat.
  • Code review: SonarQube och manuell granskning.
  • Defekthanterare: Jira och Bugzilla.

PÄ bilden visas nÄgra av de bÀsta representationerna av statisk analys.

RĂ€dsla och hat DevSecOps

Det Àr inte verktygen som Àr viktiga, utan processen, dÀrför finns det Open Source-lösningar som ocksÄ Àr bra för att testa processen.

RĂ€dsla och hat DevSecOps

SAST Open Source kommer inte att upptÀcka ett stort antal sÄrbarheter eller komplexa DataFlow, men i uppbyggnaden av processen kan de anvÀndas och bör anvÀndas. De hjÀlper till att förstÄ hur processen kommer att byggas, vem som kommer att ansvara för buggar, vem som rapporterar, och vem som ska rapportera. Om du vill genomföra den inledande fasen av att bygga sÀkerheten i din kod - anvÀnd Open Source-lösningar.

Hur kan detta integreras om ni Àr i början av er resa, om ni inte har nÄgot: ingen CI, ingen Jenkins, ingen TeamCity? LÄt oss betrakta integrationer i processen.

Integrering pÄ CVS-nivÄ

Om ni har Bitbucket eller GitLab kan ni göra en integration pÄ Concurrent Versions System.

Vid hĂ€ndelse — pull request, commit. Du skannar koden och i byggstatus visar du om sĂ€kerhetskontrollen passerade eller inte.

Feedback. SjÀlvklart behövs alltid feedback. Om du bara genomförde det pÄ sÀkerhetssidan, lade det i en lÄda och inte berÀttade nÄgot för nÄgon, och sedan i slutet av mÄnaden slÀppte en massa buggar - det Àr inte rÀtt och inte bra.

Integration med kodgranskningssystemet

En gÄng stÀllde vi in en teknisk anvÀndare AppSec som standardgranskare i flera viktiga projekt. Beroende pÄ om det fanns nÄgra fel i den nya koden eller inte, stÀller granskarna status för pull request till "accept" eller "need work" - antingen Àr allt okej, eller sÄ behöver det justeras och lÀnkar till vad som behöver justeras. För den version som gÄr i produktion hade vi inkluderat ett förbud mot merge om testet för informationssÀkerhet inte passerades. Vi inkluderade detta i manuell kodgranskning, och de andra deltagarna i processen sÄg sÀkerhetsstatusarna just för den specifika processen.

Integration med SonarQube

MÄnga har quality gate för kodkvalitet. HÀr Àr detsamma - du kan skapa samma gates bara för SAST-verktyg. Det kommer att vara samma grÀnssnitt, samma quality gate, bara att det kommer att kallas security gate. Och om du har stÀllt in en process med SonarQube kan du lugnt integrera allt dÀr.

Integration pÄ CI-nivÄ

HÀr Àr allt ocksÄ ganska enkelt:

  • PĂ„ samma nivĂ„ som automatiserade tester, enhetstester.
  • Uppdelning efter utvecklingssteg: dev, test, prod. Olika uppsĂ€ttningar regler kan inkluderas, eller olika fail conditions: vi stoppar byggandet, vi stoppar inte byggandet.
  • Synchronous/asynchronous launch. Vi vĂ€ntar pĂ„ att testerna för sĂ€kerhet ska avslutas eller inte. Det vill sĂ€ga vi kör dem bara och gĂ„r vidare, och senare fĂ„r vi status att allt Ă€r bra eller dĂ„ligt.

Detta Àr allt i en perfekt rosa vÀrld. I verkliga livet finns det inte, men vi strÀvar efter det. Resultatet av genomförda sÀkerhetskontroller bör vara jÀmförbart med resultaten frÄn enhetstester.

Till exempel tog vi ett stort projekt och bestĂ€mde att vi nu skulle skanna det med SAST – okej. Vi la in detta projekt i SAST, och det gav oss 20 000 sĂ„rbarheter. Genom en viljeaktighet beslutade vi att allt var okej. 20 000 sĂ„rbarheter Ă€r vĂ„r tekniska skuld. Vi lĂ€gger skulden i en lĂ„da och kommer att ta itu med den gradvis och registrera buggar i defektspĂ„rare. Vi anstĂ€ller ett företag, gör allt sjĂ€lva eller fĂ„r hjĂ€lp av Security Champions – och den tekniska skulden kommer att minska.

Och alla nya sĂ„rbarheter i den nya koden mĂ„ste Ă„tgĂ€rdas lika snabbt som fel i unit- eller automatisk tester. Som sagt, bygget startade, vi körde det, tvĂ„ tester misslyckades och tvĂ„ sĂ€kerhetstester misslyckades. Okej – vi gick dit, sĂ„g vad som hĂ€nde, korrigerade det ena, korrigerade det andra, nĂ€sta gĂ„ng körde vi det – allt var bra, inga nya sĂ„rbarheter dök upp, testerna misslyckades inte. Om denna uppgift Ă€r djupare och behöver undersökas grundligt, eller om Ă„tgĂ€rden av sĂ„rbarheterna pĂ„verkar stora delar av vad som ligger under huven: en bug registrerades i defektspĂ„rare, den prioriteras och Ă„tgĂ€rdas. TyvĂ€rr Ă€r vĂ€rlden inte perfekt och testerna faller ibland.

Exempel pĂ„ sĂ€kerhetsport – analog med kvalitetsport, baserat pĂ„ nĂ€rvaron och mĂ€ngden sĂ„rbarheter i koden.

RĂ€dsla och hat DevSecOpsIntegrera med SonarQube – pluginen installeras, allt Ă€r mycket bekvĂ€mt och bra.

Integration med utvecklingsmiljön

Integrationsmöjligheter:

  • Starta skanning frĂ„n utvecklingsmiljön redan innan commit.
  • Granska resultaten.
  • Analysera resultaten.
  • Synkronisering med servern.

SÄ hÀr ser det ut att hÀmta resultat frÄn servern.

RĂ€dsla och hat DevSecOps

I vĂ„r utvecklingsmiljö Intellij IDEA finns det bara ett extra alternativ som informerar att sĂ„dana sĂ„rbarheter upptĂ€cktes under skanningen. Man kan omedelbart rĂ€tta koden, se rekommendationer och Flödesdiagram. Allt detta finns pĂ„ utvecklarens arbetsplats, vilket Ă€r mycket bekvĂ€mt – man behöver inte gĂ„ igenom andra lĂ€nkar och leta efter nĂ„got extra.

Öppen kĂ€llkod

Det hĂ€r Ă€r mitt favoritĂ€mne. Alla anvĂ€nder Open Source-bibliotek – varför skriva en massa provisoriska lösningar och cyklar nĂ€r man kan ta ett fĂ€rdigt bibliotek dĂ€r allt redan Ă€r implementerat?

RĂ€dsla och hat DevSecOps

SjĂ€lvklart, det Ă€r sĂ„, men bibliotek skrivs ocksĂ„ av mĂ€nniskor, innefattar ocksĂ„ vissa risker och dĂ€r finns ocksĂ„ sĂ„rbarheter som periodiskt eller konstant rapporteras. DĂ€rför finns det ett nĂ€sta steg i Application Security – det Ă€r analysen av Open Source-komponenter.

Analys av Open Source – OSA

Verktyget innehÄller tre stora steg.

Sökning efter sÄrbarheter i biblioteken. Till exempel, verktyget vet att vi anvÀnder ett visst bibliotek och att det CVE eller i bug trackers finns sÄrbarheter som Àr relaterade till den hÀr versionen av biblioteket. Vid försök att anvÀnda det kommer verktyget att ge en varning om att biblioteket Àr sÄrbart och rekommenderar att anvÀnda en annan version dÀr sÄrbarheter inte finns.

Analys av licensrenhet. Det Àr fortfarande inte sÀrskilt populÀrt hÀr, men om du arbetar internationellt kan du periodiskt fÄ problem för att anvÀnda en komponent med öppen kÀllkod som inte fÄr anvÀndas eller modifieras. Enligt licenspolicyn för biblioteket fÄr vi inte göra detta. Eller om vi har modifierat den och anvÀnder den, mÄste vi lÀgga ut vÄr kod. Naturligtvis vill ingen lÀgga ut koden för sina produkter, men det finns ocksÄ sÀtt att skydda sig mot detta.

Analys av komponenter som anvĂ€nds i industriell miljö. LĂ„t oss förestĂ€lla oss en hypotetisk situation dĂ€r vi Ă€ntligen har avslutat utvecklingen och slĂ€ppt den sista versionen av vĂ„r mikrotjĂ€nst. Den fungerar utmĂ€rkt – en vecka, en mĂ„nad, ett Ă„r. Vi samlar inte in den, vi gör inga sĂ€kerhetskontroller, allt verkar bra. Men plötsligt, tvĂ„ veckor efter slĂ€ppet, kommer en kritisk sĂ„rbarhet fram i en Open Source-komponent som vi anvĂ€nder just i den hĂ€r versionen, i produktionsmiljö. Om vi inte registrerar vad och var vi anvĂ€nder, kommer vi helt enkelt inte att se den hĂ€r sĂ„rbarheten. Vissa verktyg har möjlighet att övervaka sĂ„rbarheter i bibliotek som för nĂ€rvarande anvĂ€nds i produktion. Det Ă€r mycket anvĂ€ndbart.

Möjligheter:

  • Olika policys för olika faser av utveckling.
  • Övervakning av komponenter i industriell miljö.
  • Kontroll av bibliotek inom organisationens kontur.
  • Stöd för olika byggsystem och sprĂ„k.
  • Analys av Docker-bilder.

NÄgra exempel pÄ ledande aktörer inom omrÄdet som sysslar med Open Source-analys.

RĂ€dsla och hat DevSecOps
Den enda gratis av dem Àr Dependency-Check frÄn OWASP. Det kan inkluderas tidigt för att se hur det fungerar och vad det stöder. I huvudsak handlar det om alla molnprodukter eller on-premise, men de skickas fortfarande till internet i samband med sin databas. De skickar inte dina bibliotek, utan hashvÀrden eller sina egna berÀknade vÀrden, och fingeravtryck till sina servrar för att fÄ information om sÄrbarheter.

Integration i processen

Kontroll av bibliotek i perimeter, som laddas ner frÄn externa kÀllor. Vi har externa och interna förrÄd. Till exempel, inom Event Central finns Nexus, och vi vill att vÄrt interna förrÄd inte ska innehÄlla sÄrbarheter med status 'kritisk' eller 'hög'. Det gÄr att stÀlla in proxy med hjÀlp av verktyget Nexus Firewall Lifecycle sÄ att sÄdana sÄrbarheter blockeras och inte nÄr det interna förrÄdet.

Integration i CI. PÄ samma nivÄ som automatiserade tester, enhetstester och uppdelning efter utvecklingssteg: dev, test, prod. I varje steg kan man ladda ner vilket bibliotek som helst och anvÀnda vad som helst, men om det finns nÄgot med status 'kritisk' kanske man bör uppmÀrksamma utvecklarna pÄ detta i samband med lansering.

Integration med artefaktlagringar: Nexus och JFrog.

Integration i utvecklingsmiljön. Verktyg som du vÀljer mÄste ha integration med utvecklingsmiljöer. Utvecklaren ska ha tillgÄng till resultaten frÄn skanningarna frÄn sin arbetsstation, eller ha möjlighet att sjÀlv skanna och kontrollera koden för sÄrbarheter innan man commitar i CVS.

Integration i CD. Det hĂ€r Ă€r en fantastisk funktion som jag verkligen gillar och som jag redan har berĂ€ttat om – övervakning av nya sĂ„rbarheter i produktionsmiljöer. Det fungerar ungefĂ€r sĂ„ hĂ€r.

RĂ€dsla och hat DevSecOps

Vi har Offentliga komponentförrĂ„d — vissa verktyg utanför och vĂ„r interna databas. Vi vill att det endast ska finnas trusted components i den. Vid proxyförfrĂ„gningar verifierar vi att det nedladdade biblioteket inte har nĂ„gra sĂ„rbarheter. Om det faller under vissa policyer som vi faststĂ€ller och godkĂ€nner med utvecklingen, laddar vi inte ner det, och det kommer en avvisning att anvĂ€nda en annan version. Om biblioteksinnehĂ„llet Ă€r verkligt kritiskt och dĂ„ligt, fĂ„r utvecklaren inte biblioteket ens under installationssteget — det fĂ„r anvĂ€nda en högre eller lĂ€gre version.

  • Vid bygget kontrollerar vi att ingen har introducerat nĂ„got dĂ„ligt, att alla komponenter Ă€r sĂ€kra och att ingen har fört in nĂ„got farligt via USB.
  • I vĂ„rt arkiv har vi endast trusted components.
  • Vid deployment kontrollerar vi Ă„terigen sjĂ€lva paketet: war, jar, DL eller Docker-image sĂ„ att det överensstĂ€mmer med policyn.
  • NĂ€r vi gĂ„r i produktion övervakar vi det som hĂ€nder i den industriella miljön: om kritiska sĂ„rbarheter dyker upp eller inte.

Dynamisk analys — DAST

Verktyg för dynamisk analys skiljer sig markant frÄn allt som sagts tidigare. Det Àr en simulering av anvÀndarens interaktion med applikationen. Om det Àr en webbapplikation, skickar vi förfrÄgningar som imiterar klientens arbete, trycker pÄ knappar pÄ frontend, skickar artificiella data frÄn formulÀr: citationstecken, parenteser, symboler i olika kodningar, för att se hur applikationen fungerar och behandlar externa data.

Detta system gör det ocksÄ möjligt att kontrollera mönstervÀrdiga sÄrbarheter i Open Source. Eftersom DAST inte vet vilken Open Source vi anvÀnder, skickar den helt enkelt "skadliga" mönster och analyserar svaren frÄn servern:

— Aha, hĂ€r finns ett deserialiseringsproblem, men hĂ€r finns det inte.

Det medför stora risker, eftersom om du genomför detta sĂ€kerhetstest pĂ„ samma plattform som anvĂ€nds av testarna — kan obehagliga saker hĂ€nda.

  • Hög belastning pĂ„ applikationsservern.
  • Inga integrationer.
  • Möjlighet att Ă€ndra instĂ€llningarna för den analyserade applikationen.
  • Ingen support för nödvĂ€ndiga teknologier.
  • SvĂ„righetsgrad i konfigurationen.

Vi hade en situation nÀr vi Àntligen körde AppScan: vi kÀmpade lÀnge för att fÄ tillgÄng till applikationen, fick tre konton och var glada - nu kan vi Àntligen kontrollera allt! Vi startade skanningen, och det första AppScan gjorde - det gick in i administratörspanelen, klickade pÄ alla knappar, Àndrade hÀlften av datan, och sedan dödade det servern helt. mailform-förfrÄgningar. Utveckling med testning sa:

— Grabbar, ni skĂ€mtar?! Vi gav er konton, och ni la ner standen!

TÀnk pÄ möjliga risker. I idealfallet förbered ett separat stand för testning av informationssÀkerhet, som bör vara isolerat frÄn den övriga miljön pÄ nÄgot sÀtt, och det Àr önskvÀrt att kontrollera adminpanelen manuellt. Det hÀr Àr en pentest - de ÄterstÄende procenten av insatserna som vi inte beaktar just nu.

Det Àr vÀrt att notera att detta kan anvÀndas som ett alternativ till belastningstestning. I det första steget kan en dynamisk skanner sÀttas i 10-15 trÄdar och se vad som hÀnder, men i praktiken visar det sig vanligtvis att det inte blir nÄgot bra.

NÄgra resurser som vi vanligtvis anvÀnder.

RĂ€dsla och hat DevSecOps

Det Ă€r vĂ€rt att framhĂ€va Burp Suite — detta Ă€r en "schweizisk armĂ©kniv" för varje sĂ€kerhetsspecialist. Den anvĂ€nds av alla och Ă€r mycket anvĂ€ndarvĂ€nlig. En ny demoversion av enterprise edition har just slĂ€ppts. Tidigare var det bara en fristĂ„ende programvara med plugins, men nu gör utvecklarna Ă€ntligen en stor server frĂ„n vilken man kan hantera flera agenter. Det Ă€r fantastiskt, jag rekommenderar att prova.

Integration i processen

Integrationen fungerar ganska bra och enkelt: start av skanning efter en lyckad installation av applikationen pÄ standen och skanning efter en framgÄngsrik genomförd integrationstestning.

Om integrationerna inte fungerar eller det finns dummy-funktioner, Àr det meningslöst och vÀrdelöst - oavsett vilket mönster vi skickar sÄ kommer servern fortfarande att svara samma.

  • Idealiskt - ett separat stand för testning.
  • Innan testningen börjar, skriv ner inloggningssekvensen.
  • Testning av administrativt system - bara manuellt.

Process

Lite översiktligt om processen i allmÀnhet och om varje verktygs arbete, speciellt. Alla applikationer Àr olika - den ena fungerar bÀttre med dynamisk analys, den andra med statisk, den tredje med OpenSource-analys, pentest eller nÄgot helt annat, till exempel hÀndelser med Waf.

Varje process behöver kontroll.

För att förstÄ hur processen fungerar och var den kan förbÀttras, mÄste man samla metrik frÄn allt som gÄr att nÄ, inklusive produktionsmetrik, metrik frÄn verktyg och frÄn defektspÄrare.

All data Àr anvÀndbar. Man mÄste titta ur olika vinklar pÄ var ett verktyg tillÀmpas bÀst, var processen specifikt faller. Kanske bör man titta pÄ utvecklingens svarstid för att förstÄ var man kan förbÀttra processen baserat pÄ tid. Ju mer data, desto fler perspektiv kan byggas frÄn övergripande till detaljer i varje process.

RĂ€dsla och hat DevSecOps

Eftersom alla statiska och dynamiska analyzers har sina egna API:er, sina egna sĂ€tt att starta, principer, nĂ„gra har schemalĂ€ggare, andra har det inte – skriver vi ett verktyg AppSec Orkestrator, som möjliggör en enhetlig ingĂ„ngspunkt till hela processen med produkten och hantera den frĂ„n en punkt.

För chefer, utvecklare och sĂ€kerhetsingenjörer finns en ingĂ„ngspunkt dĂ€r man kan se vad som körs, konfigurera och starta skanning, fĂ„ resultat av skanning, stĂ€lla krav. Vi försöker gĂ„ bort frĂ„n papper och översĂ€tta allt till ett mĂ€nskligt sĂ€tt som utvecklingen anvĂ€nder – sidor i Confluence med status och metrik, defekter i Jira eller i olika defektspĂ„rare, eller integrera i en synkron/asin kprocess i CI/CD.

Nyckelinsikter

Verktyg Ă€r inte huvudsaken. Först planera processen – sedan implementera verktyg. Verktyg Ă€r bra men dyra, sĂ„ man kan börja med processen och etablera samverkan och förstĂ„else mellan utveckling och sĂ€kerhet. Ur sĂ€kerhetssynpunkt – det Ă€r inte nödvĂ€ndigt att stoppa allt som kommer, Ur utvecklingssynpunkt – om det finns nĂ„got som Ă€r högmega superkritisk, mĂ„ste det Ă„tgĂ€rdas snarare Ă€n att blunda för problemet.

Produktkvalitet – ett gemensamt mĂ„l bĂ„de för sĂ€kerhet och utveckling. Vi gör en gemensam sak, strĂ€var efter att allt fungerar korrekt och att det inte finns reputationsrisker eller ekonomiska förluster. DĂ€rför föresprĂ„kar vi tillvĂ€gagĂ„ngssĂ€ttet DevSecOps, SecDevOps för att förbĂ€ttra kommunikationen och göra produkten mer kvalitativ.

Börja med det som redan finns: krav, arkitektur, partiella kontroller, trĂ€ningar, riktlinjer. AnvĂ€nd inte alla metoder pĂ„ en gĂ„ng för alla projekt — gĂ„ vidare iterativt. Det finns ingen enhetlig standard — experimentera och prova olika tillvĂ€gagĂ„ngssĂ€tt och lösningar.

Det finns en likhet mellan sÀkerhetsdefekter och funktionella defekter.

Automatisera allt, som rör sig. Allt som inte rör sig — försök att fĂ„ det att röra sig och automatisera det. Om nĂ„got görs manuellt Ă€r det inte en bra del av processen. Det kanske Ă€r vĂ€rt att omvĂ€rdera det och automatisera det ocksĂ„.

Om storleken pĂ„ sĂ€kerhetsteamet Ă€r liten — anvĂ€nd Security Champions..

Kanske Ă€r det jag har pratat om inte lĂ€mpligt för er och ni hittar pĂ„ nĂ„got eget — och det Ă€r okej. Men vĂ€lj verktyg baserat pĂ„ kraven för just er process. Titta inte pĂ„ vad communityn sĂ€ger om att det hĂ€r verktyget Ă€r dĂ„ligt, och att det hĂ€r Ă€r bra. Kanske visar det sig att det Ă€r tvĂ€rtom för just er produkt.

Verktygskrav.

  • LĂ„g nivĂ„ av False Positive.
  • Rimlig analys tid.
  • AnvĂ€ndarvĂ€nlighet.
  • Finns integrationer.
  • FörstĂ„else för produktens utvecklingsplan.
  • Möjlighet till anpassning av verktyg.

Yuris föredrag valdes som ett av de bÀsta pÄ DevOpsConf 2018. För att upptÀcka fler intressanta idéer och praktiska fall, kom den 27 och 28 maj till Skolkovo pÄ DevOpsConf i samband med festivalen RIT++. Och Ànnu bÀttre, om ni Àr villiga att dela med er av er erfarenhet, dÄ skicka in en ansökan för föredraget senast den 21 april.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster