Meil oli 2 koodianalĂŒsaatorit, 4 dĂŒnaamilise testimise tööriista, oma loodud tööriistad ja 250 skripti. Ei ole nii, et see kĂ”ik oleks praeguses protsessis vajalik, aga kui DevSecOpsi rakendamine on juba alustatud, siis tuleb minna lĂ”puni.

. Isikute autorid: Justin Roiland ja Dan Harmon.
Mis on SecDevOps? Ja DevSecOps? Millised on erinevused? Rakenduse turvalisus - millest see rÀÀgib? Miks klassikaline lĂ€henemine enam ei toimi? KĂ”igile nendele kĂŒsimustele teab vastust Yuri Shabalin API-s Swordfish Security. Yuri vastab kĂ”igile kĂŒsimustele ja kĂ€sitleb klassikalisest rakenduse turvalisuse mudelist DevSecOpsi protsessile ĂŒlemineku probleeme: kuidas Ă”igesti lĂ€heneda turvalise arendamise protsessi integreerimisele DevOps-i protsessi, et mitte midagi purustada, kuidas lĂ€bida pĂ”hilised turvatestimise etapid, milliseid tööriistu saab kasutada, milles need erinevad ja kuidas neid Ă”igesti seadistada, et vĂ€ltida varjatud probleeme.

Esinejast: Yuri Shabalin - peamine turvaarhitekt ettevĂ”ttes Swordfish Security. Vastutab SSDL-i rakendamise eest, samuti rakenduste analĂŒĂŒsi tööriistade ĂŒldise integreerimise eest arenduse ja testimise ökosĂŒsteemi. 7-aastane kogemus infotehnoloogia valdkonnas. Töötanud Alfa-Bankis, Sberbankis ja Positive Technologies, mis arendab tarkvara ja pakub teenuseid. Esineja rahvusvahelistel konverentsidel ZerONights, PHDays, RISSPA, OWASP.
Rakenduse turvalisus: millest see rÀÀgib?
Rakenduse turvalisus on julgeoleku osa, mis vastutab rakenduste turvalisuse eest. See ei seondu infrastruktuuri vÔi vÔrgu turvalisuse, vaid just sellega, mida me kirjutame ja millega arendajad töötavad - see on rakenduse puudused ja haavatavused.
Suundumus  â Turvalise arenduse elutsĂŒkkel on vĂ€lja töötatud Microsofti poolt. Skeemil - kanoniline mudel SDLC, mille peamine ĂŒlesanne on tagada turvalisuse osalemine arenduse igas etapis, nĂ”uetest kuni vĂ€ljaandmise ja tootmisse viimiseni. Microsoft mĂ”istis, et tööstuses on liiga palju vigu, nende arv kasvab ja midagi tuleb sellega teha, ning pakkus vĂ€lja selle lĂ€henemise, mis sai kanoniliseks.

Rakenduse turvalisus ja SSDL ei keskendu haavatavuste avastamisele, nagu sageli arvatakse, vaid nende tekkimise ennetamisele. Aja jooksul on Microsofti kanonilist lĂ€henemist tĂ€iustatud, arendatud ja see on saanud sĂŒgavamale sisule suunatud lĂ€henemise.

Kanoniline SDLC on detailne mitmes erinevas metodoloogias - OpenSAMM, BSIMM, OWASP. Metodoloogiad erinevad, kuid ĂŒldiselt on nad sarnased.
Turvalisuse integreerimise kĂŒpsusmodell
Mulle meeldib kĂ”ige rohkem BSIMM â . Metodoloogia aluseks on rakenduse turvalisuse protsessi jagamine neljaks valdkonnaks: juhtimine, intel, SSDL puutepunktid ja juurutamine. Igas valdkonnas on 12 praktikat, mis esitatakse 112 tegevusena.

Igal 112 tegevusel on 3 kĂŒpsuse taset: algtaseme, kesktaseme ja arenenud. KĂ”iki 12 praktikat saab uurida ja jagada osadeks, valida teile olulised asjad, mĂ”ista, kuidas neid rakendada ja jĂ€rk-jĂ€rgult lisada elemente, nagu staatiline ja dĂŒnaamiline koodi analĂŒĂŒs vĂ”i koodi ĂŒlevaatus. Koostate plaani ja töötate selle alusel rahulikult valitud tegevuste rakendamisel.
Miks DevSecOps
DevOps on suur ĂŒldine protsess, kus tuleb hoolitseda turvalisuse eest.
Alguses ikutati turvalisuse kontrolli. Praktikas oli turvameeskondade arv palju vÀiksem kui praegu ning nad ei osalenud protsessis, vaid tegutsesid kontrolli- ja jÀrelevalveorganina, kes esitas nÔudeid ja kontrollis toote kvaliteeti vÀljaande lÔpus. See on klassikaline lÀhenemine, kus turvameeskonnad on arendusest eraldi ja ei osale protsessis.

Peamine probleem ongi see, et infosĂŒsteemide turvalisus on eraldi arendusest. Tavaliselt on see mingi turvalisuse kontuur ja seal on 2-3 suurt ja kallist tööriista. Kord kuue kuu jooksul saabub lĂ€htekood vĂ”i rakendus, mida tuleb kontrollida, ja kord aastas viiakse lĂ€bi . See kĂ”ik toob kaasa pikad toote turuletoomise ajad, samuti paisatakse arendajatele tohutu hulk haavatavusi automatiseeritud tööriistadest. KĂ”ike seda on vĂ”imatu mĂ”ista ja parandada, kuna eelmine poolaasta ei ole tulemusi veel analĂŒĂŒsitud, samal ajal kui nĂŒĂŒd on kohale jĂ”udnud uus partii.
Oma ettevĂ”tte töö kĂ€igus nĂ€eme, et turvalisus kĂ”ikides valdkondades ja tööstusharudes mĂ”istab, et on aeg edasi liikuda ja arendamisega ĂŒhes rĂŒtmis töötada - ja . DevSecOps paradigma sobib suurepĂ€raselt paindliku arenduse metodoloogia, rakendamise, toetamise ja iga vĂ€ljaande ja iteratsiooni osalemise juurde.

Ăleminek DevSecOps-ile
KĂ”ige olulisem sĂ”na turvalisuse arenduse elutsĂŒklis on "protsess"Te peate seda mĂ”istma, enne kui mĂ”tlete tööriistade ostmisele.
Lihtsalt tööriistade kaasamine DevOps-protsessi ei piisa - oluline on koostöö ja arusaamine protsessi osaliste vahel.
Olulisemad on inimesed, mitte tööriistad.
Tihti algab ohutu arendamise protsessi planeerimine tööriista valimise ja ostmisega ning lÔpeb katsedintegreerimisega olemasolevasse protsessi, mis jÀÀb sageli katseteks. See toob kaasa kurvad tagajÀrjed, sest igal tööriistal on oma omadused ja piirangud.
Levinud olukord on see, et turvameeskond valib hea, kalli tööriista, millel on laiad vĂ”imalused, ja tulevad arendajate juurde - integreerima protsessi. Aga see ei toimi - protsess on ĂŒles ehitatud nii, et juba ostetud tööriista piirangud ei sobi olemasolevasse paradigmasse.
Alustage tulemuse kirjeldusega, mida soovite, ja kuidas protsess vÀlja nÀeb. See aitab mÔista tööriista ja turvalisuse rolle protsessis.
Alustage sellest, mida juba kasutatakse.
Enne kallite tööriistade ostmist vaadake, mis teil juba olemas on. Igas ettevÔttes on arendusele esitatavad turvanÔuded, on kontrolle, penteste - miks mitte muuta see kÔik arusaadavaks ja kÔigile mugavaks?
Tavaliselt on nÔuded paberil, mis seisab riiulis. Oli juhtum, kui tulime ettevÔttesse, et vaadata protsesse ja palusime nÀidata turvanÔudeid tarkvara suhtes. Spetsialist, kes sellega tegeles, otsis pikka aega:
â Praegu, kuskil mĂ€rkmete seas oli tee, kus see dokument asub.
LÔpuks saime dokumendi nÀdala pÀrast.
NĂ”uete, kontrolle ja muud jaoks looge leht, nĂ€iteks Confluence â see on kĂ”igile mugav.
Lihtsam on olemasolevat ĂŒmber vormistada ja kasutada alustamiseks.
Kasutage Security Champions'i.
Tavaliselt on keskmises ettevĂ”ttes 100-200 arendaja kohta ĂŒks turvaexpert, kes tĂ€idab mitu funktsiooni ja fĂŒĂŒsiliselt ei suuda kĂ”ike kontrollida. Isegi kui ta pingutab, ei saa ta ĂŒksi kontrollida kogu koodi, mida arendamine genereerib. Selliste juhtumite jaoks on vĂ€lja töötatud kontseptsioon - .
Security Champions on isik, kes on arendusmeeskonnas ja kellel on huvi teie toote turvalisuse vastu.

Security Champion on sisene punkt arendusmeeskonda ja turvalisuse evangelist ĂŒhes isikus.
Tavaliselt, kui turvakonsultant tuleb arendusmeeskonda ja osutab vea eest koodis, saab ta ĂŒllatunud vastuse:
â Kes siis olete? NĂ€en teid esmakordselt. Minul on kĂ”ik hĂ€sti â mu vanem kolleeg pani koodikontrolli kĂ€skluse "rakenda", me liigume edasi!
See on tĂŒĂŒpiline olukord, sest vanemaid vĂ”i lihtsalt kolleege, kellega arendaja pidevalt tööalaselt koos suhtleb ja koodikontrollis usaldab, usaldatakse oluliselt rohkem. Kui Security Champion osutab veale ja selle tagajĂ€rgedele, on tema sĂ”nal rohkem kaalu.
Samuti tunnevad arendajad oma koodi paremini kui ĂŒkski turvakonsultant. Inimene, kellel on vĂ€hemalt 5 projekti staatilise analĂŒĂŒsi tööriistas, leiab tavaliselt, et on keeruline meeles pidada kĂ”iki nĂŒansse. Security Champions tunnevad oma toodet: mis millega suhtleb ja millele jĂ€lgida esmakordselt â nad on tĂ”husamad.
Nii et mÔelge Security Champions'i rakendamisele ja turvameeskonna mÔju suurendamisele. Isegi Championile on see kasulik: professionaalne areng uues valdkonnas, tehnilise silmaringi laienemine, tehniliste, juhtimis- ja juhtimisoskuste arendamine, turuvÀÀrtuse tÔus. See on mingi sotsiaalse inseneeria element, teie "silmad" arendusmeeskonnas.
Testimise etapid
Â ĂŒtleb, et 20% pingutustest toob 80% tulemusi. Need 20% on rakenduste analĂŒĂŒsi praktikad, mida saab ja tuleks automatiseerida. Selliste tegevuste nĂ€ideteks on staatiline analĂŒĂŒs â SAST, dĂŒnaamiline analĂŒĂŒs â DAST, ja Open Source'i kontrollimine. RÀÀgin lĂ€hemalt tegevustest ning tööriistadest, millega tavaliselt kokku puutume nende rakendamisel protsessi, ja kuidas seda Ă”igesti teha.

Peamised tööriistade probleemid
Toon vÀlja kÔikide tööriistade jaoks olulised probleemid, mis vajavad tÀhelepanu. Selgitan neid lÀhemalt, et mitte edaspidi korduda.
Pikaajaline analĂŒĂŒs. Kui kommitamisest kuni tootmisse jĂ”udmiseni kulub kĂ”ikide testide ja koostamise jaoks 30 minutit, siis infokaitse kontrolld sobib vĂ”tma terve pĂ€eva. Keegi ei soovi protsessi pidurdada. Arvestage seda iseĂ€rasust ja tehke jĂ€reldusi.
KÔrgem False Negative vÔi False Positive tase. KÔik tooted on erinevad, kÔik kasutavad erinevaid raamistikku ja kodeerimisstiili. Erinevatel koodibaasidel ja tehnoloogiatel vÔivad tööriistad nÀidata erinevat False Negative ja False Positive taset. SeetÔttu vaadake, mis tÀpselt teie ettevÔttes ja teie rakendustes toob hea ja usaldusvÀÀrse tulemuse.
Integratsioonid olemasolevate tööriistadega puuduvad. Vaadake tööriistu integratsioonide seisukohast, milliseid te juba kasutate. NÀiteks, kui teil on Jenkins vÔi TeamCity, kontrollige nende tööriistade integratsiooni just selle tarkvaraga, mitte GitLab CI-ga, mida te ei kasuta.
Kohandamise puudumine vÔi liigse keerukuse olemasolu. Kui tööriistal ei ole API-d, siis miks see vajalik on? KÔik, mis on tehtav liideses, peaks olema kergesti ligipÀÀsetav API kaudu. Ideaalis peaks tööriistal olema vÔimalus kontrolle kohandada.
Toote arendusplaani puudumine. Arendus ei seisa paigal, me kasutame alati uusi raamistikku ja funktsioone, kirjutame vana koodi uute keeltega ĂŒmber. Soovime olla kindlad, et tööriist, mille me ostame, toetab uusi raamistikku ja tehnoloogiaid. SeetĂ”ttu on oluline teada, et tootel on tegelik ja Ă”ige arendustegevus.
Protsessi eripÀrad
Lisaks tööriistadele arvestage ka arendusprotsessi eripĂ€radega. NĂ€iteks arenduse segamine on tĂŒĂŒpiline viga. Vaatame, milliseid teisi eripĂ€rasid tuleks arvesse vĂ”tta ja millele turvameeskond peaks tĂ€helepanu pöörama.
Kuna arenduse ja vĂ€ljalaskmise tĂ€htaegu ei tohiks rikkuda, looge eraldi reeglid ja erinevad show stoppers â kriteeriumid, mis peatavad koostamisprotsessi, kui avastatakse haavatavusi â erinevates keskkondades. NĂ€iteks, me mĂ”istame, et praegune haru lĂ€heb arendajate stendile vĂ”i UAT-le, mistĂ”ttu me ei peata ega ĂŒtle:
â Teil on siin haavatavused, te ei saa edasi minna!
Sel etapil on oluline öelda arendajatele, et on turvaprobleeme, millele tuleks tÀhelepanu pöörata.
Haavat ei ole takistus edasisele testimisele: kÀsitsi, integreeritud vÔi manuaalselt. Teisalt peame kuidagi toote turvalisust parandama ning et arendajad ei ignoreeriks turbe leidmisi. SeetÔttu toimime mÔnikord nii: stendil, kui see vÀlja lastakse arenduskeskkonda, teavitame arendust:
â Poisid, teil on probleeme, palun pöörake neile tĂ€helepanu.
UAT etapis anname taas hoiatustest teada, ja produktsiooni etapis ĂŒtlemme:
â Poisid, oleme mitu korda hoiatatud, te ei teinud midagi â sellega ei lase teid vĂ€lja.
Kui rÀÀkida koodist ja dĂŒnaamikast, siis tuleb nĂ€idata ja hoiatada haavatavustest ainult nende funktsioonide ja koodi osas, mis on just selles funktsioonis kirjutatud. Kui arendaja liigutab nuppu 3 pikslit ning me ĂŒtleme talle, et tal on seal SQL-injektsioon ja seetĂ”ttu peab ta kiirelt parandama â see on vale. Vaadake ainult seda, mis on praegu kirjutatud, ja sellele muudatusele, mis rakendusse tuleb.
Oletame, et meil on mingi funktsionaalne defekt â see, kuidas rakendus ei peaks töötama: raha ei edastata, nuppu klĂ”psates ei toimu ĂŒleminekut jĂ€rgmisele lehele vĂ”i kaupa ei laadita. Turvadefektid â need on samasugused defektid, kuid mitte rakenduse töö kontekstis, vaid turvalisuse osas.
Kauem ei ole kÔik tarkvarakvaliteedi probleemid turbeprobleemid. Kuid kÔik turbeprobleemid on seotud tarkvarakvaliteediga. Sherif Mansour, Expedia.
Kuna kÔik haavatavused on samasugused defektid, peaksid nad olema seal, kus on kÔik arendusvead. SeetÔttu unustage aruanded ja hirmutavad PDF-d, mida keegi ei loe.

Kui töötasin ettevĂ”ttes, mis tegeleb arendamisega, sain aruande staatiliste analĂŒĂŒsivahendite kaudu. Avasin selle, ehmatasin Ă€ra, keetsin kohvi, sirvisin 350 lehte, sulgesin selle ja lĂ€ksin edasi tööle. Suured aruanded on surnud aruanded. Ăldiselt need ei kao kuhugi, kirjad kustutatakse, unustatakse, kaotatakse vĂ”i Ă€ri ĂŒtleb, et vĂ”tab riskid.
Mida teha? Tuvastatud vead, mis leiti, muudame lihtsalt arendamiseks sobivaks nÀiteks, kogudes need backlogs Jira-s. Prioriseerime vead ja lahendame need prioriteedi jÀrjekorras koos funktsionaalsete vigade ja testide vigadega.
Statiline analĂŒĂŒs â SAST
See on koodi analĂŒĂŒs haavatavuste olemasolu osas, kuid see ei ole sama, mis SonarQube. Kontrollime mitte ainult mustrite vĂ”i stiili jĂ€rgi. AnalĂŒĂŒsi kĂ€igus rakendatakse mitmeid lĂ€henemisviise: haavatavuste puu jĂ€rgi, alusel , konfigureerimisfailide analĂŒĂŒsi jĂ€rgi. See on kĂ”ik, mis puudutab otse koodi.
LÀhenemise plussid: haavatavuste tuvastamine koodis arenduse varajases etapis, kui pole veel stende ja valmis tööriista ning vÔimalus inkrementaalseks skaneerimiseks: koodi osa skaneerimine, mis on muutunud, ja ainult seda funktsiooni, mida me praegu teeme, mis vÀhendab skaneerimise aega.
Miinused â vajalikke keelte toe puudumine.
Vajadusel integreerimised, mida peaks olema tööriistades, minu subjektiivne arvamus:
- Integreerimistööriist: Jenkins, TeamCity ja Gitlab CI.
- Arenduskeskkond: Intellij IDEA, Visual Studio. Arendajal on mugavam mitte liialdada arusaamatu liidese juurde, mida tuleb veel mÀletada, vaid nÀha otse oma arenduskeskkonnas kÔiki vajalikke integratsioone ja haavatavusi, mida ta leidis.
- Koodi ĂŒlevaatus: SonarQube ja kĂ€sitsi ĂŒlevaatus.
- Vea jĂ€lgimise sĂŒsteemid: Jira ja Bugzilla.
Pildil on mĂ”ned parimad esindajad statilisest analĂŒĂŒsist.

Olulised ei ole tööriistad, vaid protsess, seetÔttu on olemas avatud lÀhtekoodiga lahendused, mis on samuti head protsessi katsetamiseks.

SAST avatud lĂ€htekoodiga lahendused ei leia suurt hulka haavatavusi vĂ”i keerulisi DataFlow, kuid protsessi ĂŒlesehitamisel saab ja tuleb neid kasutada. Need aitavad mĂ”ista, kuidas protsess ĂŒles ehitatakse, kes vastutab vigade eest, kes need raporteerib ja kes aru annab. Kui soovite teha esimest sammu oma koodi turvalisuse ĂŒlesehitamiseks â kasutage avatud lĂ€htekoodiga lahendusi.
Kuidas seda integreerida, kui olete alguses, teil pole midagi: ei CI, ei Jenkinsit, ei TeamCityt? Vaadakem integratsioone protsessis.
Integratsioon CVS tasemel
Kui teil on Bitbucket vÔi GitLab, siis saab teha integratsiooni tasemel .
SĂŒndmuse pĂ”hjal â pull request, commit. Te skaneerit koodi ja build'i olekus nĂ€itate, kas turvakontroll on lĂ€bitud vĂ”i mitte.
Tagasiside. Ilmselt on tagasiside alati vajalik. Kui te lihtsalt tegite turvapoolel töö Ă€ra, panite selle kasti ja ei rÀÀkinud sellest kellelegi, ning siis kuu lĂ”pus tulite vĂ€lja hulga vigadega â see ei ole Ă”ige ega hea.
Integratsioon koodivaatamise sĂŒsteemiga
Kord mÀÀrasime mitmes olulises projektis vaikimisi ĂŒlevaataja tehnilise kasutaja AppSec. SĂ”ltuvalt sellest, kas uues koodis avastatakse vigu vĂ”i ei, mÀÀrab pull requestâi ĂŒlevaataja staatusena âacceptâ vĂ”i âneed workâ â kas kĂ”ik on OK vĂ”i tuleb midagi tĂ€iendada ja viidet sellele, mida tĂ€pselt tĂ€iendada. Integreerimisel versiooniga, mis lĂ€heb tootmisse, keelasime me merge'i, kui turvatest ei ole lĂ€bitud. Me lĂŒlitasime selle sisse kĂ€sitsi koodivaatamises ja ĂŒlejÀÀnud protsessi osalised nĂ€gid turbe staatuseid just selle konkreetse protsessi jaoks.
Integratsioon SonarQube'iga
Paljusid huvitab koodi kvaliteedi osas. Siin on sama â saab teha samu gates'e ka SAST-ide jaoks. Graafika jÀÀb samaks, sama quality gate, lihtsalt nimeks saab see security gate. Ja sama ka, kui teil on kĂ€ivitatud protsess SonarQube'iga, saab kĂ”ik rahulikult sinna integreerida.
Integreerimine CI tasemel
Siin on kÔik piisavalt lihtne:
- Ăhes tasemes automaatsete testide, unit-testide.
- Arendusetappide eristamine: dev, test, prod. VÔib kaasata erinevaid reegliste komplekte vÔi erinevaid tÔrke tingimusi: peatame kogumise, ei peata kogumist.
- SĂŒnkroonne/AsĂŒnkroonne kĂ€ запŃŃĐș. Ootame turvatestide kontrollimise lĂ”ppu vĂ”i ei oota. Ehk me lihtsalt kĂ€ivitame need ja liigume edasi, ning seejĂ€rel saame staatuse, et kĂ”ik on hĂ€sti vĂ”i halvasti.
See kĂ”ik on ideaalses roosilises maailmas. Reaalses elus seda ei juhtu, aga me pĂŒĂŒame. Turvakontrollide tulemused peaksid olema sarnased unit-testide tulemustele.
NĂ€iteks, me vĂ”tsime suure projekti ja otsustasime, et skaneerime seda SASTâiga â OK. Panime projekti SAST-i, see andis meile 20 000 haavatavust ja me vĂ”tsime jĂ”uliselt vastu otsuse, et kĂ”ik on hĂ€sti. 20 000 haavatavust â see on meie tehniline vĂ”lg. Paneme vĂ”la karpi, hakkame tasapisi koristama ja loome vead defektide jĂ€lgimisse. Kindlasti palkame ettevĂ”tte, teeme kĂ”ik ise vĂ”i aitame Security Champions â ja tehniline vĂ”lg hakkab vĂ€henema.
Ja kĂ”ik uued haavatavused uues koodis peavad olema kĂ”rvaldatud nagu ĂŒldised vead unit vĂ”i automatiseeritud testides. Ătlemiseks, kĂ€ivitus kogu koostamine, jooksime, kukkus kaks testi ja kaks testi turvalisuse osas. OK â lĂ€ksime, vaatasime, mis juhtus, parandasime ĂŒhte, parandasime teist, jĂ€rgmine kord jooksime â kĂ”ik on hĂ€sti, uusi haavatavusi ei ilmunud, testid ei kukkunud lĂ€bi. Kui see ĂŒlesanne on sĂŒgavam ja vajab head arusaamist vĂ”i haavatavuste parandamine hĂ”lmab suuri osi mingist, mis asub kapoti all: loome vea defektide jĂ€lgimisse, see prioriseeritakse ja parandatakse. Kahjuks maailm ei ole ideaalne ja testid mĂ”nikord kukuvad.
TurvavĂ€rava nĂ€ide â sarnane kvaliteedivĂ€ravale, seoses ebaĂ”nnestumiste arvu ja olemasoluga koodis.
Integreerime SonarQube'iga â plugin paigaldatakse, kĂ”ik on vĂ€ga mugav ja lahe.
Integreerimine arenduskeskkonnaga
Integreerimise vÔimalused:
- KĂŒlastage skaneerimist arenduskeskkonnast veel enne commit'i.
- Tulemuste ĂŒlevaade.
- Tulemuste analĂŒĂŒs.
- SĂŒnkroonimine serveriga.
Nii nÀeb vÀlja tulemuste saamine serverilt.

Meie arenduskeskkonnas ilmub lihtsalt lisateenus, mis teatab, et skaneerimise ajal avastati sellised haavatavused. Saame kohe koodi parandada, vaadata soovitusi ja . See kĂ”ik on arendaja töökohas, mis on vĂ€ga mugav â ei ole vaja ringi jalutada ja vaadata midagi lisaks.
Open Source
See on minu lemmikteema. KĂ”ik kasutavad Open Source teeke â miks kirjutada hunnik klotse ja jalgrattaid, kui on vĂ”imalik vĂ”tta valmis teek, kus kĂ”ik on juba realiseeritud?

Jah, see on tĂ”si, kuid raamatukogud on samuti inimeste kirjutatud, need sisaldavad teatud riske ja seal esinevad haavad, millest perioodiliselt vĂ”i pidevalt teatatakse. SeetĂ”ttu on jĂ€rgmine samm rakendusturbe valdkonnas avatud lĂ€htekoodiga komponentide analĂŒĂŒs.
Avatud lĂ€htekoodiga analĂŒĂŒs â OSA
Tööriist sisaldab kolme suurt etappi.
Haavatavuste ĂŒlesleidmine raamatukogudes. NĂ€iteks teab tööriist, et me kasutame mingit raamatukogu ja et vĂ”i veatöötlusplatvormidel on mingeid haavatavusi, mis puudutavad selle versiooni raamatukogu. Kui proovid seda kasutada, annab tööriist hoiatuse, et raamatukogu on haavatav ning soovitab kasutada teist versiooni, kus haavatavused puuduvad.
Litsentsi puhtuse analĂŒĂŒs. KĂŒsimus pole veel eriti populaarne, kuid kui töötate rahvusvaheliselt, vĂ”ib seal aeg-ajalt tulla probleem kasutatava avatud lĂ€htekoodiga komponendiga, mida ei tohi kasutada vĂ”i modifitseerida. Vastavalt raamatukogu litsentsipoliitikale ei tohi me seda teha. Kas kui me oleme seda modifitseerinud ja kasutame, peame oma koodi esitama. Loomulikult ei taha keegi oma toote koodi avalikustada, kuid sellest saab samuti kaitsta.
Komponentide analĂŒĂŒs, mida kasutatakse tööstuslikus keskkonnas. Kujutage ette hĂŒpoteetilist olukorda, kus oleme lĂ”puks arenduse lĂ”petanud ja vĂ€lja lasknud meie mikroteenuse viimase versiooni. See töötab seal suurepĂ€raselt - nĂ€dala, kuu, aasta. Me ei kogu selle kohta teavet, turvataset ei kontrolli, kĂ”ik tundub hĂ€sti. Kuid Ă€kki, kaks nĂ€dalat pĂ€rast vĂ€ljaandmist, ilmub tööstuskeskkonnas haavatavus avatud lĂ€htekoodiga komponendis, mida me just selles versioonis kasutame. Kui me ei dokumenteeri, mida ja kus me kasutame, siis ei nĂ€e me seda haavatavust. MĂ”ned tööriistad vĂ”imaldavad raamatukogude haavatavuste jĂ€lgimist, mis praegu tööstuses on kasutusel. See on vĂ€ga kasulik.
VÔimalused:
- Erinevad poliitikad erinevatele arendusetappidele.
- Komponentide jÀlgimine tööstuslikus keskkonnas.
- Teekide kontroll organisatsiooni raames.
- Erinevate kogumise sĂŒsteemide ja keelte tugi.
- Dockeri picturite analĂŒĂŒs.
MĂ”ned nĂ€ited valdkonna liidritest, kes tegelevad avatud lĂ€htekoodiga analĂŒĂŒsiga.

Ainus neist tasuta on OWASP-i poolt. Seda saab esimestel etappidel sisse lĂŒlitada, et nĂ€ha, kuidas see töötab ja mida see toetab. Peamiselt on need kĂ”ik pilve tooted vĂ”i kohapealsed, kuid nende baasil saadetakse need ikkagi internetti. Need saadavad mitte teie raamatukogusid, vaid rĂ€simĂ€rke vĂ”i oma arvutatud vÀÀrtusi ning sĂ”rmejĂ€lgi oma serverisse, et saada teavet haavatavuste olemasolu kohta.
Integratsioon protsessi
Kontrolli teeki perimeetrisse, mis allalaaditakse vÀlistest allikatest. Meil on vÀline ja sise repos. NÀiteks Event Centralis on Nexus ja me tahame, et meie repos ei oleks haavatavusi, mille staatus on "kriitiline" vÔi "kÔrge". Proximist saab seadistada Nexus Firewall Lifecyle'i tööriistaga nii, et sellised haavatavused blokeeritakse ja ei pÀÀse siserepositorisse.
Integratsioon CI-sse. Samal tasemel koos automaatsete testide, ĂŒksuste testide ja arendusetappide jagamisega: dev, test, prod. Igal etapil saab alla laadida mis tahes raamatukogusid ja kasutada kĂ”ike, kuid kui seal on midagi tĂ”sist, mille staatus on "kriitiline", siis vĂ”ib-olla tasub sellele arendajate tĂ€helepanu juhtida, kui aga projekteerimisetapis.
Integratsioon artefaktide hoidlatega: Nexus ja JFrog.
Integratsioon arenduskeskkonda. Tööriistad, mida valite, peavad olema integreeritavad arenduskeskkondadega. Arendajal peab olema oma töökohtadelt juurdepÀÀs skaneerimise tulemustele vÔi vÔimalus ise skaneerida ja kontrollida koodi haavatavuste olemasolu enne CVS-sse commitimist.
Integratsioon CD-sse. See on lahe funktsioon, mis mulle vĂ€ga meeldib ja millest ma juba rÀÀkinud olen â haavatavuste uute ilmingute jĂ€lgimine tööstuskeskkonnas. See töötab umbes nii.

Meil on Avalikud koostisosade hoidlad â mĂ”ned tööriistad vĂ€ljast ja meie sisemine hoidla. Soovime, et seal oleksid ainult usaldusvÀÀrsed koostisosad. KĂŒsimuste nĂ”udmisel kontrollime, et allalaaditavas teegis ei esineks haavatavusi. Kui see kuulub teatud poliitikate alla, mille me seame ja peame arendusega kokku leppima, siis ei lae me seda alla ja tuleb teade, et tuleb kasutada teist versiooni. Seega, kui teegis on midagi tĂ”eliselt kriitilist ja halba, ei saa arendaja juba installimise etapis seda teeki â las kasutab kas vanemat vĂ”i uuemat versiooni.
- Buildimise ajal kontrollime, et keegi ei oleks sisse suunanud midagi halba, et kÔik koostisosad on ohutud ja keegi ei tooma ohutust midagi USB-mÀlupulgal.
- Meie hoidlas on ainult usaldusvÀÀrsed koostisosad.
- Deployment'i kĂ€igus kontrollime veel kord tĂ€pselt paketti: war, jar, DL vĂ”i Docker-pildid selle ĂŒle, et need vastavad poliitikale.
- TootmisreĆŸiimis jĂ€lgime, mis toimub tööstuskeskkonnas: ilmuvad vĂ”i ei ilmu kriitilised haavatavused.
DĂŒnaamiline analĂŒĂŒs â DAST
DĂŒnaamilise analĂŒĂŒsi tööriistad erinevad radikaalselt kĂ”ikidest eelnevalt öeldud asjadest. See on mingi simulatsioon kasutaja tegevusest rakenduse juures. Kui see on veebirakendus, saadame pĂ€ringud, simuleerides kliendi tööd, vajutame nuppe veebilehe ees, saadame kunstlikke andmeid vormist: jutumĂ€rgid, sulud, sĂŒmbolid erinevates kodeeringutes, et vaadata, kuidas rakendus töötab ja töötleb vĂ€liseid andmeid.
Sama sĂŒsteem vĂ”imaldab kontrollida mallihĂ€ireid avatud lĂ€htekoodis. Kuna DAST ei tea, millist avatud lĂ€htekoodi me kasutame, siis viskab ta lihtsalt "pahalaste" mustrid ja analĂŒĂŒsib serveri vastuseid:
â Aha, siin on deserialiseerimise probleem, aga siin ei ole.
Selles on suured riskid, sest kui teete seda turvatesti samal keskkonnal, millega töötavad testijad â vĂ”ivad juhtuda ebameeldivad asjad.
- Suurekoormus rakenduse serverivÔrgus.
- Pole integratsioone.
- VĂ”imalus muuta analĂŒĂŒsitava rakenduse seadeid.
- Ei toetata vajalikke tehnoloogiaid.
- Seadistamise keerukus.
Meil oli olukord, kui saime lĂ”puks AppScan'i tööle: pidasime kaua ligipÀÀsu taotlema, saime 3 kontot ja olime rÔÔmsad â lĂ”puks saame kĂ”ik Ă€ra kontrollida! KĂ€ivitasime skaneerimise ja esimene asi, mida AppScan tegi, oli administratiivpaneelile sisse logimine, kĂ”ik nupud ĂŒle testa, pool andmeid ĂŒmber muuta ja lĂ”puks tappis serveri. -pĂ€ringutega. Arendamine koos testimisega ĂŒtles:
â Poisid, te teete nalja?! Me andsime teile kontod, aga teie panite pĂŒsti katsekeskkonna!
Arvestage vĂ”imalikke riske. Ideaalis valmistage ette eraldi katsekeskkond, mis on teistest keskkondadest mingil moel isoleeritud ja administratiivpaneeli kontrollimine peaks olema soovitatavalt kĂ€sitsi. See on penetratsioonitest â need viimased protsendid pingutust, mida me praegu ei arvesse vĂ”ta.
Tasub arvestada, et seda saab kasutada ka koormustestimise analoogina. Esimeses etapis on vĂ”imalik aktiveerida dĂŒnaamiline skanner 10-15 voogude jaoks ja vaadata, mis juhtub, kuid tavaliselt, nagu praktika nĂ€itab, pole tulemused head.
MÔned ressursid, mida tavaliselt kasutame.

Tasub vĂ€lja tuua  â see on "Ć veitsi armee nuga" igasugustele turvaekspertidele. KĂ”ik kasutavad seda ja see on vĂ€ga mugav. Praegu on vĂ€lja tulnud uus demo versioon ettevĂ”tte vĂ€ljaandest. Kui varem oli see lihtsalt iseseisev utiliit pluginate kogumiga, siis nĂŒĂŒd teevad arendajad lĂ”puks suurt serverit, millest saab hallata mitmeid agente. See on Ă€ge, soovitan proovida.
Integratsioon protsessi
Integratsioon toimub piisavalt hÀsti ja lihtsalt: skaneerimise kÀivitamine peale eduka rakenduse installatsiooni katse keskkonnale ja skaneerimine pÀrast eduka integreerimise testimise lÀbiviimist.
Kui integratsioonid ei tööta vĂ”i seal on vahepealsed ja mock-funktsioonid, on see mĂ”ttetu ja kasutu â ĂŒkskĂ”ik millise mustriga me ka ei saadaks, server vastab ikkagi ĂŒhtemoodi.
- Ideaalne â eraldiseisev katse keskkond.
- Enne testimise alustamist taotlege sisselogimise jada.
- Administratiiv sĂŒsteemi testimine â ainult manuaalne.
Protsess
Veidi ĂŒldiselt protsessi kohta ja iga tööriista kohta eraldi. KĂ”ik rakendused on erinevad â ĂŒhel töötab dĂŒnaamiline analĂŒĂŒs paremini, teisel staatiline, kolmandal OpenSource analĂŒĂŒs, penetratsioonitestid vĂ”i tegelikult midagi muud, nĂ€iteks sĂŒndmused. .
Iga protsess vajab kontrolli.
Et mĂ”ista, kuidas protsess töötab ja kus seda saab parandada, tuleb koguda mÔÔdikud igalt poolt, kuhu kĂ€si ulatub, sealhulgas tootmisnĂ€itajad, instrumentide mÔÔdikud ja veaparandus sĂŒsteemidest.
Iga andmed on kasulikud. Tuleb vaadata erinevates lĂ”ikes, kus ĂŒks vĂ”i teine tööriist paremini töötab, kus protsess konkreetselt langeb. VĂ”ib-olla tasub vaadata arenduse vastamisaja, et mĂ”ista, kus protsessi ajas parandada. Mida rohkem andmeid, seda rohkem lĂ”ike saab ehitada alates kĂ”rgematest tasemetest kuni iga protsessi ĂŒksikasjadeni.

Kuna kĂ”igil staatilistel ja dĂŒnaamilistel analĂŒsaatoritel on oma API-d, kĂ€ivitamisviisid, pĂ”himĂ”tted, mĂ”nel on ajakavad ja teistel mitte â me kirjutame tööriista AppSec Orkestrator, mis vĂ”imaldab luua ĂŒhtse sisendi kogu protsessi jooksul ja hallata seda ĂŒhest kohast.
Juhtidel, arendajatel ja turbeinseneridel on ĂŒks sisend, kust saab vaadata, mis on kĂ€ivitatud, seada ĂŒles ja alustada skaneerimist, saada skaneerimise tulemusi ja esitada nĂ”udeid. PĂŒĂŒame liikuda paberitelt Ă€ra ja viia kĂ”ik inimkeelde, mida arendus kasutab â lehed Confluence'is staatuste ja mÔÔdikutega, vead Jira's vĂ”i erinevates veaparandus sĂŒsteemides, vĂ”i integreerida sĂŒnkroonsesse/ asĂŒnkroonsesse protsessi CI/CD-s.
Peamised punktid
Tööriistad ei ole peamine. Esmalt mĂ”elge protsess lĂ€bi â seejĂ€rel leidke tööriistu. Tööriistad on head, kuid kallid, seega vĂ”iks alustada protsessist ja seada ĂŒles suhtlemise ja arusaamise arendamise ja turvalisuse vahel. Turbe seisukohalt â ei ole vaja "peatada" kĂ”ike jĂ€rjest, arendus seisukohalt â kui midagi on high mega super kriitiline, siis tuleb see kĂ”rvaldada, mitte silma kinni panna probleemile.
Toote kvaliteet â ĂŒhine eesmĂ€rk nii turvalisuse kui ka arenduse jaoks. Me teeme sama asja, pĂŒĂŒdes, et kĂ”ik töötaks Ă”igesti ja et mitte tekiks maineohtusid ja rahalisi kaotusi. Just seetĂ”ttu propageerime DevSecOps'i, SecDevOps'i lĂ€henemist, et luua suhtlus ja teha toode kvaliteetsemaks.
Alustage sellest, mis juba olemas on: nĂ”udmised, arhitektuur, osalised kontrollid, koolitused, juhised. Ei ole vaja kohe rakendada kĂ”iki praktikaid kĂ”ikidele projektidele â liikuge iteratiivselt. Ăhtset standardit ei ole â katsetage ja proovige erinevaid lĂ€henemisviise ja lahendusi.
IB defektide ja funktsionaalsete defektide vahel on samamoodi.
Automatiseerige kĂ”ik, mis liigub. KĂ”ik, mis ei liigu â liigutage ja automatiseerige. Kui midagi tehakse kĂ€sitsi, ei ole see hea protsess. VĂ”ib-olla tasuks see ĂŒle vaadata ja ka automatiseerida.
Kui IB meeskond on vĂ€ike â kasutage Security Champions.
VĂ”ib-olla ei sobi see, millest ma rÀÀkisin, teile ja te leiutate midagi oma â ja see on hea. Kuid valige tööriistad, lĂ€htuvalt nĂ”udmistest just teie protsessile. Ărge vaadake, mida ĂŒtleb kogukond, et see tööriist on halb ja see hea. VĂ”ib-olla osutub teie tootel kĂ”ik vastupidiseks.
NÔuded tööriistadele.
- Madala vale positiivsete tulemuste tase.
- MĂ”istlik analĂŒĂŒsi aeg.
- Kasutusmugavus.
- Integratsioonide olemasolu.
- Toote arendusteede mÔistmine.
- Tööriistade kohandamise vÔimalus.
JĂŒri ettekannet valiti ĂŒheks parimaks DevOpsConf 2018. ettekandeks. Et tutvuda veel enam huvitavate ideede ja praktiliste nĂ€idetega, tulge 27. ja 28. mail Skolkovo Raames . Ja veel parem, kui olete valmis oma kogemust jagama, siis ettekande jaoks kuni 21. aprillini.
Allikas: habr.com
