Meil oli 2 koodi analĂŒsaatorit, 4 dĂŒnaamilise testimise tööriista, omatehtud lahendusi ja 250 skripti. Ei, et see kĂ”ik oleks praeguses protsessis hĂ€davajalik, kuid kui alustasin DevSecOps'i juurutamist, tuleb minna lĂ”puni.

Isiksuste autorid: Justin Roiland ja Dan Harmon.
Mis on SecDevOps? Ja DevSecOps? Milles need erinevad? Mis on rakenduste turvalisus? Miks traditsiooniline lĂ€henemine enam ei toimi? KĂ”igile nendele kĂŒsimustele oskab vastata Juri Ć abalin kohast Swordfish Security. Juri vastab kĂ”igile kĂŒsimustele ja analĂŒĂŒsib probleeme, mis tulenevad ĂŒleminekust traditsioonilisest rakenduste turvalisuse mudelist DevSecOps'i protsessile: kuidas Ă”igesti lĂ€heneda turvalise arendamise protsessi integreerimisele DevOps'i protsessis ja kuidas mitte midagi katki teha, millised on peamised turvatestimise etapid, milliseid tööriistu kasutada, kuidas need erinevad ja kuidas neid Ă”igesti seadistada, et vĂ€ltida takistusi.

Ettekandjast: Juri Ć abalin - Chief Security Architect ettevĂ”ttes Swordfish Security. Vastutab SSDL rakendamise eest, samuti rakenduste analĂŒĂŒsitööriistade integreerimise eest ĂŒhte arenduse ja testimise ökosĂŒsteemi. 7 aastat kogemust infotehnoloogia valdkonnas. Olen töötanud Alfa-Pank, Sberbank ja Positive Technologiesis, mis arendab tarkvara ja pakub teenuseid. Esineja rahvusvahelistel konferentsidel ZerONights, PHDays, RISSPA, OWASP.
Rakenduste turvalisus: millest see rÀÀgib?
Rakenduste turvalisus on turvalisuse haru, mis vastutab rakenduste turvalisuse eest. See ei puuduta infrastruktuuri vĂ”i vĂ”rgu turvalisust, vaid seda, mida me kirjutame ja mille kallal arendajad töötavad â need on rakenduse vead ja haavatavused.
Valdkond  â Turvalisuse arenduse elutsĂŒkkel on Microsofti loodud. Skeemil on toodud kanoniline SDLC mudel, mille peamine eesmĂ€rk on tagada turvalisus igas arenduse etapis, alates nĂ”uetest kuni vĂ€ljaandmise ja tootmisse jĂ”udmiseni. Microsoft mĂ”istis, et tööstuses on liiga palju vigu, need muutuvad jĂ€rjest enamaks ja sellega tuleb midagi ette vĂ”tta, ning pakkus vĂ€lja selle lĂ€henemise, mis sai kanoniliseks.

Rakenduse turvalisus ja SSDL ei ole suunatud haavatavuste tuvastamisele, nagu sageli arvatakse, vaid nende ennetamisele. Aja jooksul on Microsofti kanoniline lĂ€henemine paranenud ja arenenud, pakkudes sĂŒgavat detailset sukeldumist.

Kanoniline SDLC on erinevates meetodites, nagu OpenSAMM, BSIMM, OWASP, tugevalt detailsustatud. Meetodid erinevad, kuid ĂŒldiselt on nad sarnased.
Security Maturity Model
Mulle meeldib see kĂ”ige rohkem BSIMM â . Meetodoloogia alus on rakenduse turvalisuse protsessi jagamine neljaks valdkonnaks: juhtimine, teave, SSDL kontaktpunktid ja juurutamine. Igas valdkonnas on 12 praktikat, mis on esitatud 112 tegevusena.

Igal 112 tegevusel on 3 kĂŒpsuse taset: algtaseme, kesktaseme ja edasijĂ”udnud. KĂ”iki 12 praktikat saab uurida osade kaupa, valida teile olulisi asju ning mĂ”ista, kuidas neid rakendada ja jĂ€rk-jĂ€rgult lisada elemente, nĂ€iteks staatilist ja dĂŒnaamilist koodi analĂŒĂŒsi vĂ”i koodi ĂŒlevaatust. Koostate plaani ja töötate selle alusel rahulikult valitud tegevuste juurutamise raames.
Miks DevSecOps
DevOps on suur ĂŒldine protsess, kus tuleb hoolitseda turvalisuse eest.
Alguses eeldati turvakontrolle. Praktikas olid turvameeskonnad palju vÀiksemad kui praegu ning nad ei osalenud protsessis, vaid tegutsesid kontrolli- ja jÀrelevalveorganina, mis seadis nÔudeid ja kontrollis toote kvaliteeti vÀljaandmise lÔpus. See on klassikaline lÀhenemine, mille puhul turvameeskonnad olid arendustegevusest eraldatud ja ei osalenud protsessis.

Peamine probleem ongi see, et infoturbe lahendused on arendusest eraldatud. Tavaliselt on tegemist mingi infoturbe raami ja selles 2â3 suure ja kalliga tööriistaga. Kord aastas saadakse lĂ€htekood vĂ”i rakendus, mida tuleb kontrollida, ja kord aastas tehakse . See toob kaasa selle, et turule jĂ”udmise tĂ€htajad lĂŒkatakse edasi ning arendajatele langeb suur hulk haavatavusi automaatsete tööriistade kaudu. KĂ”ike seda on vĂ”imatu analĂŒĂŒsida ja parandada, kuna isegi eelmistel kuudel ei ole tulemusi ĂŒle vaadatud, kuid nĂŒĂŒd on juba uus partii.
Meie ettevĂ”tte töös nĂ€eme, et turvalisus kĂ”igis valdkondades ja tööstustes mĂ”istab, et on aeg end ĂŒles kÀÀrida ja arendada koos arendusega ĂŒhes rĂŒtmis â selles . DevSecOps'i paradigma sobitub suurepĂ€raselt paindliku arenduse metoodikaga, sealhulgas rakendamise, toe ja osalusega igas vĂ€ljaandes ja iteratsioonis.

Ăleminek DevSecOps'ile
Turvalise arenduse elutsĂŒkli kĂ”ige olulisem sĂ”na on âprotsessâ. Te peate seda mĂ”istma, enne kui mĂ”tlema hakata tööriistade ostmisele.
Lihtsalt tööriistade lisamine DevOpsi protsessile ei ole piisav â oluline on suhtlemine ja arusaam protsessi osaliste vahel.
Inimesed on olulisemad kui tööriistad
Sageli algab turvalise arenduse protsessi planeerimine tööriista valimise ja ostmisega, kuid lÔppeb katsetega integreerida tööriista olemasolevasse protsessi, mis jÀetakse katseteks. See toob kaasa kurvad tagajÀrjed, kuna kÔigil tööriistadel on omad eripÀrad ja piirangud.
Levinud olukord, kus turvaosakond valis hea, kallima tööriista, millel on laiad vĂ”imalused, ja tuli arendajate juurde â et seda protsessi integreerida. Aga ei suuda â protsess on ĂŒles ehitatud nii, et juba ostetud tööriista piirangud ei sobi praegusesse paradigma.
Alustage kirjeldamisest, millist tulemust soovite ja kuidas protsess vÀlja nÀeb. See aitab mÔista tööriista ja turvalisuse rolle protsessis.
Alustage juba olemasolust
Enne kallite tööriistade ostmist vaadake, mida teil juba on. Igal ettevĂ”ttel on arendusele esitatavad turvanĂ”uded, on kontrolle, penteste â miks mitte kĂ”ik see tĂ”lkida arusaadavasse ja kĂ”igile mugavasse vormi?
Tavaliselt on nĂ”uded paberil oleva tomes, mis seisab riiulis. Olime kunagi olukorras, kus tulime ettevĂ”ttesse protsesside vaatamiseks ja kĂŒsisime turvanĂ”uete dokumendi nĂ€itamist. Spetsialist, kes sellega tegeles, otsis kaua:
â Noh, kuskil mĂ€rkmetes oli rada, kuhu see dokument oli pandud.
LÔppkokkuvÔttes saime dokumendi alles nÀdala pÀrast.
NĂ”uete, kontrollide ja muu jaoks looge nĂ€iteks leht, mis asub Confluence â see on kĂ”igile mugav.
Lihtsam on ĂŒmber vormindada seda, mis juba olemas on, ja kasutada seda alustamiseks.
Kasutage Security Champions
Tavaliselt töötab keskmises ettevĂ”ttes 100â200 arendaja kohta ĂŒks turbeekspert, kes tĂ€idab mitmeid ĂŒlesandeid ja fĂŒĂŒsiliselt ei suuda kĂ”ike kontrollida. Isegi kui ta pĂŒĂŒab oma parima, ei suuda ta ĂŒksi kontrollida kĂ”iki koode, mida arendus genereerib. Selliste juhtude tarvis on vĂ€lja töötatud kontseptsioon â .
Security Champions on inimene arendustiimis, kellel on huvi teie toote turvalisuse vastu.

Security Champion on sissepÀÀs arendustiimi ning turvalisuse evangelist ĂŒhes isikus.
Tavaliselt, kui turbeekspert tuleb arendustiimi ja osutab veale koodis, saab ta ĂŒllatava vastuse:
â Kes teie olete? Ma nĂ€en teid esmakordselt. Mul on kĂ”ik hĂ€sti â minu vanem koleeg pani code review's 'apply', me lĂ€heme edasi!
See on tĂŒĂŒpiline olukord, sest usaldus vanemate vĂ”i lihtsalt meeskonnakaaslaste vastu, kellega arendaja pidevalt tööalaselt suhtleb ja kes osalevad koodi ĂŒlevaatuses, on palju suurem. Kui veateate ja tagajĂ€rgede eest vastutab turvamees, siis tema sĂ”na kaalub rohkem.
Arendajad tunnevad oma koodi paremini kui ĂŒkski turvamees. Inimesele, kellel on vĂ€hemalt 5 projekti staatilisest analĂŒĂŒsist, on tavaliselt keeruline meeles pidada kĂ”iki nĂŒansse. Turvameistrid tunnevad oma toodet: mida miski mĂ”jutab ja millele esmalt tĂ€helepanu pöörata â nad on tĂ”husamad.
Seega mÔelge turvameistrite rakendamisele ja turvameeskonna mÔju suurendamisele. Isegi turvameister saab sellest kasu: professionaalne areng uues valdkonnas, tehnilise silmaringi laiendamine, tehniliste, juhtimis- ja liidrioskuste arendamine, turuvÀÀrtuse tÔstmine. See on teatud element sotsiaalsest inseneriteadusest, teie 'silmad' arendusmeeskonnas.
Testimise etapid
Â ĂŒtleb, et 20% pingutustest toob 80% tulemustest. Need 20% on rakenduste analĂŒĂŒsi praktikad, mida saab ja tuleb automatiseerida. Selliste tegevuste nĂ€ideteks on staatiline analĂŒĂŒs â SAST, dĂŒnaamiline analĂŒĂŒs â DAST, ja Open Source kontroll. RÀÀgin lĂ€hemalt tegevustest ning tööriistadest, millega me tavaliselt silmitsi seisame, kui need protsessi rakendame, ja kuidas seda Ă”igesti teha.

Tööriistade pÔhiprobleemid
TÔstan esile kÔiki tööriistu mÔjutavad probleemid, mis vajavad tÀhelepanu. Uurin neid pÔhjalikumalt, et hiljem mitte korduda.
Pikaajaline analĂŒĂŒs. Kui kommitamisest tootmisse minekuks kulub 30 minutit kĂ”igile testidele ja kogumisele, siis infoturbe kontrollid vĂ”tavad terve pĂ€eva. Nii ei saa protsessi pidurdada. Arvestage seda omadust ja tehke jĂ€reldusi.
Korke vale negatiivne vÔi vale positiivne mÀÀr. KÔik tooted on erinevad, kÔik kasutavad erinevaid raamistikke ja oma koodikirjutamise stiili. Erinevad koodibasid ja tehnoloogiad vÔivad nÀidata erinevat vale negatiivsete ja vale positiivsete mÀÀrasid. Seega vaadake, mis tÀpselt on teie ettevÔttes ja teie rakendused nÀitavad head ja usaldusvÀÀrset tulemust.
Ei ole integratsioone olemasolevate tööriistadega.. Vaadake tööriistu integratsioonide vaatenurgast, mida juba kasutate. NÀiteks, kui teil on Jenkins vÔi TeamCity, kontrollige tööriistade integratsiooni just selle tarkvaraga, mitte GitLab CI-ga, mida te ei kasuta.
Kohandamise puudumine vĂ”i ĂŒleliigne keerukus. Kui tööriistal ei ole API-d, siis miks ta vajalik on? KĂ”ik, mida saab teha liideses, peaks olema saadaval ka API kaudu. Ideaalis peaks tööriistal olema kohandamisvĂ”ime kontrollide jaoks.
Toote arenduse Roadmap'i puudumine. Arendus ei seisa paigal, me kasutame alati uusi raamistikke ja funktsioone, kirjutame vana koodi uutele keeltele ĂŒmber. Soovime olla kindlad, et tööriist, mille ostame, toetab uusi raamistikke ja tehnoloogiaid. SeetĂ”ttu on oluline teada, et tootest on olemas tĂ”eline ja korrektne arendamiseks.
Protsessi iseÀrasused
Lisaks tööriistade omadustele tuleb arvesse vĂ”tta ka arendusprotsessi eripĂ€ra. NĂ€iteks arendamise segamine on tĂŒĂŒpiline viga. Vaadakem, milliseid muid omadusi tuleb arvesse vĂ”tta ja millele turvameeskond peaks tĂ€helepanu pöörama.
Et mitte rikkuda arendus- ja vĂ€ljalasketĂ€htaegu, looge erinevad reeglid ja erinevad show stoppers â kriteeriumid, mis peatavad ehitamisprotsessi, kui avastatakse haavatavusi â erinevates keskkondades. NĂ€iteks mĂ”istame, et praegune haru suundub arendajate stendi vĂ”i UAT-i, seega ei peata me ega ĂŒtle:
â Teil on siin haavatavusi, te ei tohi edasi liikuda!
Sellel etapil on oluline öelda arendajatele, et esinevad turvaprobleemid, millele tuleks tÀhelepanu pöörata.
Haavatavuste olemasolu ei ole takistus edasiseks testimiseks: kÀsitsi, integreerimis- vÔi manuaalselt. Teiselt poolt peame leidma viisi, kuidas toote turvalisust parandada, et arendajad ei ignoreeriks turvameeskonna leidmisi. SeetÔttu kÀitume mÔnikord nii: stendil, kui see viiakse arenduskeskkonda, lihtsalt teavitame arendust:
â Pois, teil on probleeme, palun pöörake neile tĂ€helepanu.
UAT etapis nĂ€itame taas haavatavuste hoiatusi, ja kui jĂ”uame tootmisse, ĂŒtleme:
â Pois, oleme mitu korda hoiatanud, te ei teinud midagi â sellega teid ei lasta vĂ€lja.
Kui rÀÀkida koodist ja dĂŒnaamikast, tuleb nĂ€idata ja hoiatada ainult nende funktsioonide ja koodi eest, mis on just selles funktsioonis kirjutatud. Kui arendaja tĂ”ukab nuppu 3 pikslit ja me ĂŒtleme talle, et tal on SQL-i sĂŒstimisprobleem ja seega peab kiiresti parandama â see pole Ă”ige. Vaadake ainult seda, mis on praegu kirjutatud, ja nende muudatuste ĂŒle, mis rakendusse tulevad.
Oletame, et meil on mingisugune funktsionaalne defekt â see on see, kuidas rakendus ei tohiks töötada: raha ei kantud ĂŒle, nupule klĂ”psamisel ei toimu ĂŒleminekut jĂ€rgmisele lehele vĂ”i kaup ei laadita. Turvavead â need on samasugused defektid, kuid mitte rakenduse töö raames, vaid turvalisuse osas.
Kuid kÔik tarkvara kvaliteediprobleemid ei ole turvaprobleemid. Aga kÔik turvaprobleemid on seotud tarkvara kvaliteediga. Sherif Mansour, Expedia.
Kuna kÔik haavatavused on samuti defektid, peavad nad olema seal, kus on kÔik arendusdefektid. Seega unustage aruanded ja hirmutavad PDF-dokumendid, mida keegi ei loe.

Kui ma töötasin ettevĂ”ttes, mis tegeles arendusega, sain ma aruande staatilisest analĂŒĂŒsist. Avasin selle, ĆĄokeerisin, keetsin kohvi, sirvisin 350 lehte, sulgesin selle ja lĂ€ksin edasi töötama. Suured aruanded on surnud aruanded. Tavaliselt ei lĂ€he need kuhugi, kirjad kustutatakse, unustatakse, kaotatakse vĂ”i Ă€ri ĂŒtleb, et nad vĂ”tavad riske.
Mida teha? Kinnitatud defektid, mis leiti, muudetakse lihtsalt arendusele mugavaks vormiks, nÀiteks kogutakse backlog'i Jira-s. Defektid prioriseeritakse ja kÔrvaldatakse prioriteedi jÀrjekorras koos funktsionaalsete defektide ja testide defektidega.
Statsionaarne analĂŒĂŒs - SAST
See on koodi analĂŒĂŒs haavatavuste tuvastamiseks, kuid see ei ole sama mis SonarQube. Me ei kontrolli mitte ainult mustrite vĂ”i stiili jĂ€rgi. AnalĂŒĂŒsis rakendatakse mitmeid lĂ€henemisviise: haavatavuste puu, , konfiguratsioonifailide analĂŒĂŒsimine. See kĂ”ik puudutab otseselt koodi.
Meetodi eelised: haavatavuste tuvastamine koodi varases arendusetapis, kui veel ei ole stende ega valmis tööriistu, ja vÔimalus inkrementaalseks skaneerimiseks: skaneerimine koodijupist, mis on muutunud, ja ainult selle funktsiooni puhul, mille kallal me praegu töötame, mis vÀhendab skaneerimise aega.
Miinused â on vajalikud keelte toetuse puudumine.
Vajalikud integratsioonid, mis peaksid olema tööriistades, minu subjektiivse arvamuse kohaselt:
- Integratsioonitööriist: Jenkins, TeamCity ja Gitlab CI.
- Arenduskeskkond: Intellij IDEA, Visual Studio. Arendajal on mugavam mitte navigeerida arusaamatusse liidesesse, mida tuleb veel meeles pidada, vaid nÀha oma töö kohas kÔiki vajalikke integratsioone ja leitud haavatavusi.
- Koodikontroll: SonarQube ja kĂ€sitsi ĂŒlevaatus.
- Defektide jÀlgijad: Jira ja Bugzilla.
Pildil on mĂ”ned parimad esindajad staatilisest analĂŒĂŒsist.

Oluline on mitte tööriistad, vaid protsess, seega on olemas avatud lÀhtekoodiga lahendused, mis sobivad protsessi katsetamiseks.

SAST avatud allikas ei tuvastada tohutul hulgal haavatavusi ega keerulisi andmevooge, kuid nende kasutamine protsessi ĂŒlesehitamisel on vajalik. Need aitavad mĂ”ista, kuidas protsess kujundatakse, kes vastutab vigade eest, kes raportit koostab, ja kes aru annab. Kui soovite alustada oma koodi turvaprotsessi rajamist, kasutage avatud allika lahendusi.
Kuidas seda integreerida, kui olete teel alguses, ja teil pole midagi: ei CI, ei Jenkins, ei TeamCity? Vaatame integraatioone protsessis.
Integratsioon CVS-i tasemel
Kui teil on Bitbucket vÔi GitLab, siis saate teha integratsiooni tasemel .
SĂŒndmuse pĂ”hjal â pull request, commit. Te skaneerite koodi ja build'i staatuse juures nĂ€itate, kas turvaskaneerimine on lĂ€bitud vĂ”i mitte.
Tagasiside. Ilmselgelt on tagasiside alati vajalik. Kui lihtsalt teostate turvapoolel ĂŒlesande, panete selle kĂ”ik karpi ja ei rÀÀgi sellest kellelegi ning kuu lĂ”pus viskate vĂ€lja hulga vigu â see ei ole Ă”ige ja ei ole hea.
Integraatsioon koodivaatamise sĂŒsteemiga
Kord, kui me seadsime oluliste projektide vahel AppSec tehnilise kasutaja vaikerevisionÀÀriks. Olenemata sellest, kas uues koodis on vigu vĂ”i mitte, mÀÀrab pull requestâiga revisjonifond staatuse 'accept' vĂ”i 'need work' â kas kĂ”ik on OK vĂ”i tuleb midagi tĂ€iendada koos linkidega, mida tĂ€pselt parandada. Integreerimisel versiooniga, mis lĂ€heb tootmisse, oli meil mergeâi keelamine, kui turvatest ei olnud lĂ€bitud. Seda rakendati kĂ€sitsi koodivaatamisel ja teised protsessi osalejad nĂ€gid staatuseid, mis olid seotud turvaprotsessiga.
Integreerimine SonarQube'iga
Paljusid huvitab koodi kvaliteedi osas. Siin on asi sama â saame luua samad gates ainult SAST tööriistade jaoks. Oleme sama liidesega, sama quality gateâiga, lihtsalt selle nimi on security gate. Ja samuti, kui teil on SonarQubeâi kasutamise protsess seadistatud, saate kĂ”ik sinna rahulikult integreerida.
Integreerimine CI tasemel
Siin on kĂ”ik ka ĂŒsna lihtne:
- Ăhel tasemel automatiseeritud testimisega, unit-testidega.
- Arendusprotsessi etappide jagamine: dev, test, prod. VÔib kasutada erinevaid reeglite kogumeid vÔi erinevaid failitingimusi: peatame kogumise, ei peata kogumist.
- SĂŒnkroonne/AsĂŒnkroonne kĂ€ivitamine. Ootame testide turvajuhtimise lĂ”puleviimist vĂ”i ei oota. See tĂ€hendab, et me lihtsalt kĂ€ivitasime need ja liigume edasi, seejĂ€rel saame statuseni, et kĂ”ik on hĂ€sti vĂ”i halvasti.
See kĂ”ik on ideaalses roosas maailmas. Reaalses elus nii ei ole, aga me pĂŒĂŒame. Turvaskanneerimise tulemuseks peab olema sarnane tulemusele, mis saame ĂŒheĂŒksuste testidest.
NĂ€iteks vĂ”tsime suure projekti ja otsustasime, et nĂŒĂŒd hakkame selle SASTâiga skanneerima â OK. Panime selle projekti SAST-i, see andis meile 20 000 haavatavust ja me vĂ”tsime seejĂ€rel otsuse, et kĂ”ik on hĂ€sti. 20 000 haavatavust on meie tehniline vĂ”lg. Paneme vĂ”la karpi, hakkame aeglaselt lahendama ja registreerime vead veatöötlejatesse. Palgake ettevĂ”te, teeme kĂ”ik ise vĂ”i aitavad meid Security Champions â ja tehniline vĂ”lg hakkab vĂ€henema.
Kuid kĂ”ik uued haavatavused uues koodis peavad olema kĂ”rvaldatud samamoodi nagu vead ĂŒhik- vĂ”i automaatkatsetes. Ătleme nii, et koostamine kĂ€ivitus, testiti, kaks testi kukkus ja kaks testi seonduvalt turvalisusele. OK - lĂ€ksime vaatasime, mis juhtus, parandasime ĂŒht, parandasime teist, jĂ€rgmine kord testisime - kĂ”ik on hĂ€sti, uusi haavatavusi ei ilmunud ja testid ei kukkunud lĂ€bi. Kui see ĂŒlesanne on sĂŒgavam ja on vaja sellega head ĂŒlevaadet saada, vĂ”i kui haavatavuste parandused mĂ”jutavad suuri osi, mis on kapoti all: avame vea defekti jĂ€lgijasse, see prioriseeritakse ja parandatakse. Kahjuks ei ole maailm ideaalne ja testid kukuvad vahel lĂ€bi.
NÀide turvavÀravast - analoog kvaliteedivÀravale, kus on olemas ja palju haavatavusi koodis.
Integreerime SonarQube'iga - plugina paigaldamine on vÀga mugav ja Àge.
Integratsioon arenduskeskkonnaga
Integreerimise vÔimalused:
- Skaneerimise kĂ€ivitamine arenduskeskkonnas juba enne pĂŒhendamist.
- Tulemuste vaatamine.
- Tulemuste analĂŒĂŒs.
- SĂŒnkroniseerimine serveriga.
Nii nÀeb serverist tulemuste saamine vÀlja.

Meie arenduskeskkonnas ilmub ilmub tĂ€iendav punkt, mis teatab, et skaneerimise ajal leiti selliseid haavatavusi. Koodiga saab kohe parandada, vaadata soovitusi ja . KĂ”ik see on paigutatud arendaja töökohale, mis on vĂ€ga mugav â ei pea liikuma teistele linkidele ja vaatama midagi lisaks.
Avatud lÀhtekood
See on minu lemmikteema. KĂ”ik kasutavad Open Source raamatukogusid â miks kirjutada tohutult toetusi ja jalgrattaid, kui saab vĂ”tta valmis raamatukogu, kus kĂ”ik on juba rakendatud?

Muidugi, see on nii, kuid raamatukogud kirjutavad ka inimesed, sisaldavad endas teatud riske ja seal on ka haavatavused, millest perioodiliselt vĂ”i pidevalt teavitatakse. SeetĂ”ttu on jĂ€rgmine samm rakenduse turvalisuses â avatud lĂ€htekoodiga komponentide analĂŒĂŒs.
Avatud lĂ€htekoodiga analĂŒĂŒs â OSA
Tööriist sisaldab kolme suurt etappi.
Haavatavuste leidmine raamatukogudes. NÀiteks teab tööriist, et me kasutame mingit raamatukogu, ja et vÔi on bug-trackerites haavatavusi, mis seonduvad selle versiooni raamatukoguga. Katse seda kasutada toob esile hoiatuse, et raamatukogu on haavatav, ning soovitab kasutada teist versiooni, kus haavatavusi pole.
Litsentsipuhastuse analĂŒĂŒs. Meil ei ole see veel eriti populaarne, kuid kui te töötate vĂ€lismaal, vĂ”ib seal aeg-ajalt olla tagajĂ€rgi avatud lĂ€htekoodiga komponentide kasutamise eest, mida ei saa kasutada vĂ”i muuta. Vastavalt raamatukogu litsentsipoliitikale ei saa me seda teha. Kui me seda muutsime ja kasutame, peame oma koodi jagama. Loomulikult ei taha keegi oma toodete koodi jagada, kuid ka sellest on vĂ”imalik end kaitsta.
Komponentide analĂŒĂŒs, mida kasutatakse tööstuslikus keskkonnas. Kujutame ette hĂŒpoteetilist olukorda, kus oleme lĂ”puks lĂ”petanud oma mikroteenuse arendamise ja vĂ€lja andnud viimase versiooni tootmisse. See elab seal suurepĂ€raselt â nĂ€dala, kuu, aasta. Me ei kogu seda, turvakontrolle ei tehta, kĂ”ik nĂ€ib hea. Kuid Ă€kki, kaks nĂ€dalat pĂ€rast vĂ€ljalaskmist, ilmub kriitiline haavatavus avatud lĂ€htekoodiga komponendis, mida me kasutame just selles versioonis tootmiskeskkonnas. Kui me ei registreeri, mida ja kus me kasutame, siis me seda haavatavust lihtsalt ei nĂ€e. MĂ”nes tööriistades on vĂ”imalus jĂ€lgida haavatavusi raamatukogudes, mis on praegu tootmises kasutusel. See on vĂ€ga kasulik.
VÔimalused:
- Erinevad poliitikad erinevate arendusetappide jaoks.
- Komponentide jÀlgimine tootmiskeskkonnas.
- Raamatukogude kontroll organisatsiooni piirides.
- Erinevate ehitussĂŒsteemide ja keelte toetamine.
- Docker-piltide analĂŒĂŒs.
MĂ”ned nĂ€ited valdkonna liidritest, kes tegelevad avatud lĂ€htekoodi analĂŒĂŒsiga.

Ainuke tasuta neist on OWASP-ist. Seda saab esialgu sisselĂŒlitada, et nĂ€ha, kuidas see töötab ja mida see toetab. Peamiselt on need kĂ”ik pilveteenused vĂ”i kohapeal, kuid nende andmebaasidega saadetakse ikkagi andmeid internetti. Nad ei saada teie raamatukogusid, vaid hash'e vĂ”i omi vÀÀrtusi, mida nad arvutavad, ning sĂ”rmejĂ€lgi enda serverisse, et saada teavet haavatavuste olemasolu kohta.
Integreerimine protsessi
Teekide kontroll perimeetris, mis on alla laaditud vÀlisest allikast. Meil on vÀline ja sisemine repositoorium. NÀiteks Event Centralis on Nexus ja me soovime, et meie sisemises repositooriumis ei oleks kÔrge vÔi kriitilise staatusega haavatavusi. Saame konfigureerida edastusprotsessi, kasutades tööriista Nexus Firewall Lifecycle, nii, et sellised haavatavused kÔrvaldatakse ja ei jÔua sisemisse repositooriumisse.
Integreerimine CI. Ăhtses tasemes automaattestide, ĂŒhiktestide ja arendusetappide jagamisega: dev, test, prod. Igal etapil on vĂ”imalik alla laadida erinevaid raamatukogusid, kasutada kĂ”ike, kuid kui seal on midagi kriitilist, tasub sellele arendajate tĂ€helepanu pöörata etapi ajal, mil tullakse turule.
Integreerimine artefaktide haldustesse: Nexus ja JFrog.
Integreerimine arenduskeskkonda. Valitud tööriistadel peab olema integreerimine arenduskeskkondadega. Arendajal peab olema oma töökohtadel juurdepÀÀs skaneerimistulemustele vÔi vÔimalus ise oma koodi haavatavuste osas enne CVS-i komiteerimist skaneerida ja kontrollida.
Integreerimine CD-sse. See on lahe funktsioon, mis mulle tĂ”eliselt meeldib ja millest olen juba rÀÀkinud â uute haavatavuste jĂ€lgimine tootmiskeskkonnas. See töötab umbes nii.

Meil on Avalikud komponendi hoidlad â mĂ”ningad tööriistad vĂ€ljast ja meie sisemine repos. Soovime, et seal oleksid ainult trusted components. Kliendi pĂ€ringu proxĂŒĂŒmisel kontrollime, et allalaaditaval teegil ei oleks haavatavusi. Kui see vastab teatud poliitikatele, mille me seame ja mille osas me kindlasti arutame arendusega, siis me ei tĂ”mba seda ja tuleb tagasiside teise versiooni kasutamiseks. Seega, kui teegis on midagi tĂ”eliselt kriitilist ja halba, siis arendaja ei saa teegi isegi installimise ajal - las kasutab kĂ”rgemat vĂ”i madalamat versiooni.
- Buildâimise ajal kontrollime, et keegi ei oleks sisse toonud midagi halba, et kĂ”ik komponendid on ohutud ja keegi ei tooks mĂ€lupulgaga midagi ohtlikku.
- Meie repos on ainult trusted components.
- Deploimisel kontrollime veel kord just paketti: war, jar, DL vÔi Docker-image selle osas, et see vastab poliitikale.
- Tootmisse minekul jÀlgime, mis toimub tööstuskeskkonnas: kas ilmnevad vÔi ei ilmne kriitilised haavatavused.
DĂŒnaamiline analĂŒĂŒs - DAST
DĂŒnaamilise analĂŒĂŒsi tööriistad erinevad kardinaalselt kĂ”ikidest eelnevalt öeldud asjadest. See on teatud tĂŒĂŒpi kasutaja töö simuleerimine rakendusega. Kui see on veebirakendus, saadame pĂ€ringuid, imiteerides kliendi tegevust, klikkides nuppudel, edastades vormidest kunstlikke andmeid: tsitaate, sulge, sĂŒmboleid erinevates kodeeringutes, et nĂ€ha, kuidas rakendus töötab ja kuidas see vĂ€listatud andmeid töötleb.
Sama sĂŒsteem vĂ”imaldab kontrollida mallivigu avatud lĂ€htekoodides. Kuna DAST ei tea, millist avatud lĂ€htekoodi me kasutame, lihtsalt viskab see "kahjulikke" mustreid ja analĂŒĂŒsib serveri vastuseid:
â Aha, siin on deserialiseerimise probleem, aga siin ei ole.
Selles peituvad suured riskid, kuna kui teete selle turvatesti samal keskkonnas, mille kallal töötavad testijad, vÔivad juhtuda ebameeldivad asjad.
- Rakenduse serveri kÔrge koormus.
- Puuduvad integratsioonid.
- VĂ”imalus muuta analĂŒĂŒsitava rakenduse seadeid.
- Puudub vajalik tehnoloogiate tugi.
- Konfigureerimise keerukus.
Meil oli olukord, kus me lĂ”puks kĂ€ivitasime AppScan'i: ligipÀÀsu rakendusele oli keeruline saada, saime 3 kontot ja olime rÔÔmsad â lĂ”puks saame kĂ”ik ĂŒle vaadata! KĂ€ivitasime skanneerimise, ja esimene, mida AppScan tegi â lĂ€ks admin-paneeli, klikkis kĂ”igil nuppudel, muutis poole andmetest ja siis tappis serveri oma -pĂ€ringutega. Arendus koos testimisega ĂŒtlesid:
â Poisid, teete nalja?! Me andsime teile kontod, aga teie hĂ€vitasite keskkonna!
Arvestage vĂ”imalikke riske. Ideaalis valmistage testimiseks eraldi keskkond, mis oleks vĂ€hemalt osaliselt eraldatud ĂŒlejÀÀnud keskkonnast, ja soovitatav on administraatori paneeli kontrollimine kĂ€sitsi. See on pentest â need viimased protsendid pingutust, mida me praegu ei kaalu.
Tasub arvestada, et seda saab kasutada koormustestimise analoogina. Esimeses etapis vĂ”ib aktiveerida dĂŒnaamilise skaneerija 10-15 voogudega ja vaadata, mis juhtub, kuid tavaliselt, nagu praktika nĂ€itab, ei toimu midagi head.
MÔned ressursid, mida tavaliselt kasutame.

Tasub vĂ€lja tuua  â on "Ć veitsi nuga" iga turbeprofessionaali jaoks. Seda kasutavad kĂ”ik ja see on vĂ€ga mugav. Hiljuti ilmus uus demoversioon enterprise edition. Kui varem oli see lihtsalt stand-alone utiliit pluginatega, siis nĂŒĂŒd töötavad arendajad lĂ”puks vĂ€lja suure serveri, mida saab kasutada mitme agendi haldamiseks. See on suurepĂ€rane, soovitan proovida.
Integreerimine protsessi
Integreerimine toimub piisavalt hÀsti ja lihtsalt: skaneerimise kÀivitamine pÀrast edukat installimist rakendustes ja skaneerimine pÀrast edukat integratsiooni testimist.
Kui integratsioonid ei tööta vĂ”i seal on vaid pistikprogrammid ja mock-funktsioonid, siis pole sellest lihtsalt kasu â olenemata sellest, mis mustri me saadame, vastab server ikkagi ĂŒhtemoodi.
- Ideaalne oleks eraldi testimise keskkond.
- Enne testimise algust mĂ€rkige ĂŒles logimise jĂ€rjestus.
- SĂŒsteemi haldamise testimine â ainult kĂ€sitsi.
Protsess
Ăldiselt protsessi ja iga tööriista, sealhulgas, Tööriistad on erinevad â ĂŒhel töötab dĂŒnaamiline analĂŒĂŒs paremini, teisel staatiline, kolmandal OpenSource analĂŒĂŒs, pentestimine vĂ”i hoopis midagi muud, nĂ€iteks sĂŒndmused. .
Iga protsess vajab kontrolli.
Protsessi toimimise mÔistmiseks ja selle parendamiseks tuleb koguda mÔÔdikuid kÔigest, mis kÀeulatuses on, sealhulgas tootmisnÀitajaid, tööriistade mÔÔdikuid ja defektijÀlgijatest.
Iga andmed on kasulikud. Tuleb vaadata eri aspektidest, kus konkreetset tööriista paremini rakendatakse, kus protsess konkreetselt kipub lagunema. VÔib-olla tasub vaadata arenduse reageerimise aega, et mÔista, kus protsessi ajas parandada. Mida rohkem andmeid, seda rohkem aspekte saab luua alates kÔrgetasemelistest detailideni iga protsessi kohta.

Kuna kĂ”igil staatilistel ja dĂŒnaamilistel analĂŒsaatoritel on oma API-d, kĂ€ivitamise viisid ja pĂ”himĂ”tted; ĂŒhel on graafikud, teisel ei ole â me kirjutame tööriista. AppSec Orkestrator, mis vĂ”imaldab luua ĂŒhtse sisenemise punkti kogu protsessi jaoks ja hallata seda ĂŒhest kohast.
Projektijuhtidel, arendajatel ja turbeinseneridel on ĂŒks sisenemise punkt, kust saab vaadata, mis on kĂ€imas, seadistada ja alustada skannimist, saada skannimise tulemusi ja esitada nĂ”udeid. PĂŒĂŒame vĂ€ltida pabereid, muutes kĂ”ik inimkeelde, mida arendus kasutab - lehed Confluences staatuste ja mÔÔdikute, defektid Jira-s vĂ”i erinevates defekti jĂ€lgimise tööriistades, vĂ”i integreerida sĂŒnkroonsesse/aasĂŒnkroonsesse protsess CI/CD-s.
Peamised jÀreldused
Tööriistad ei ole peamine. Esmalt tuleks lÀbi mÔelda protsess - siis rakendada tööriistu. Tööriistad on head, kuid kallid, seega vÔib alustada protsessist ja seadistada koostöö ja arusaamise arenduse ja turva vahel. Turbe seisukohalt - ei pea 'kinni panema' kÔike jÀrjest, arenduse seisukohalt - kui midagi on kÔrge mega super kriitiline, siis tuleb see kÔrvaldada, mitte probleemile silma kinni pigistada.
Toote kvaliteet on ĂŒhine eesmĂ€rk nii puhul, nii arenduse osas. Me teeme ĂŒhte asja, pĂŒĂŒdes, et kĂ”ik toimiks Ă”igesti ning et ei tekiks mainekaotusi vĂ”i rahalisi kaotusi. Just seetĂ”ttu propageerime DevSecOpsi ja SecDevOpsi lĂ€henemist, et luua suhtlus ja parandada toote kvaliteeti.
Alustage olemasolevast: nĂ”uded, arhitektuur, osalised kontrollid, koolitused, juhendmaterjalid. Ei ole vaja kohe rakendada kĂ”iki praktikaid kĂ”ikidel projektidel â liikuge jĂ€rk-jĂ€rgult. Ăhtegi standardit ei ole â katsetage proovige erinevaid lĂ€henemisviise ja lahendusi.
Infoturbe defektide ja funktsionaalsete defektide vahel on vÔrdusmÀrk.
Automatiseerige kĂ”ik, mis liigub. KĂ”ik, mis ei liigu â liigutage ja automatiseerige. Kui midagi tehakse kĂ€sitsi, siis ei ole see protsessi hea osa. VĂ”ib-olla tasub seda ĂŒle vaadata ja samuti automatiseerida.
Kui infoturbe meeskonna suurus on vĂ€ike â kasutage Security Champions.
VĂ”ib-olla ei sobi see, millest olen rÀÀkinud, teile ja leiutate midagi enda jaoks â ja see on hea. Kuid valige tööriistad, lĂ€htudes oma protsessi nĂ”udmistest. Ăra lase end petta kogukonna arvamustest, et see tööriist on halb ja teine hea. Just teie tootel vĂ”ib kĂ”ik olla vastupidi.
Tööriistade nÔuded.
- Madala vÀÀrpositiivsete tulemuste tase.
- MĂ”istlik analĂŒĂŒsiaeg.
- Kasutusmugavus.
- Integratsioonide olemasolu.
- Toote arendusteed mÔistmine.
- Tööriistade kohandamise vÔimalus.
JĂŒri ettekannet valiti ĂŒheks parimaks DevOpsConf 2018-l. Et tutvuda veelgi huvitavate ideede ja praktiliste juhtumitega, tulge 27. ja 28. mail Skolkovo raames . Ja veel parem, kui olete valmis jagama oma kogemusi, siis ettekande jaoks kuni 21. aprillini.
Allikas: habr.com
