{"id":31852,"date":"2019-10-31T21:43:30","date_gmt":"2019-10-31T18:43:30","guid":{"rendered":"https:\/\/prohoster.info\/blog\/strah-i-nenavist-devsecops\/"},"modified":"2019-10-31T21:43:30","modified_gmt":"2019-10-31T18:43:30","slug":"strah-i-nenavist-devsecops","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/strah-i-nenavist-devsecops","title":{"rendered":"Frica \u0219i ur\u0103 DevSecOps","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Am avut 2 analizatori de cod, 4 instrumente pentru testare dinamic\u0103, propriile crea\u021bii \u0219i 250 de scripturi. Nu c\u0103 ar fi fost toate necesare \u00een procesul actual, dar odat\u0103 ce am \u00eenceput implementarea DevSecOps, trebuie s\u0103 mergem p\u00e2n\u0103 la cap\u0103t.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/bcd78cc4963e397ecbaa18ffd43ce05e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i><noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/user\/narkos\">Sursa<\/a><\/noindex>. Creatorii personajelor: Justin Roiland \u0219i Dan Harmon.<\/i><\/p>\n<p>Ce este SecDevOps? \u0218i DevSecOps? Care sunt diferen\u021bele? Ce \u00eenseamn\u0103 Securitatea Aplica\u021biilor? De ce abordarea clasic\u0103 nu mai func\u021bioneaz\u0103? La toate aceste \u00eentreb\u0103ri \u0219tie r\u0103spunsul <b>Yuri Shabalin<\/b> din\u00a0<b>Swordfish Security. <\/b>Yuri va r\u0103spunde detaliat la tot \u0219i va analiza problemele tranzi\u021biei de la modelul clasic de Securitate a Aplica\u021biilor la procesul DevSecOps: cum s\u0103 abordezi corect integrarea procesului de dezvoltare sigur\u0103 \u00een procesul DevOps f\u0103r\u0103 a strica nimic, cum s\u0103 treci prin etapele principale de testare a securit\u0103\u021bii, ce instrumente pot fi folosite, cu ce se deosebesc \u0219i cum s\u0103 le configurezi corect pentru a evita capcanele.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"sYMWGw5Lyu4\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/sYMWGw5Lyu4\/hqdefault.jpg\" alt=\"Reda\u021bi video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n<b>Despre vorbitor:<\/b> <b>Yuri Shabalin \u2014 <\/b>Chief Security Architect la <b>Swordfish Security<\/b>. Este responsabil pentru implementarea SSDL, pentru integrarea general\u0103 a instrumentelor de analiz\u0103 a aplica\u021biilor \u00eentr-o ecosistem\u0103 unificat\u0103 de dezvoltare \u0219i testare. Are 7 ani de experien\u021b\u0103 \u00een securitate informa\u021bional\u0103. A lucrat la Alfa-Bank, Sberbank \u0219i la Positive Technologies, care dezvolt\u0103 software \u0219i ofer\u0103 servicii. Vorbitor la conferin\u021be interna\u021bionale cum ar fi ZerONights, PHDays, RISSPA, OWASP.<\/p>\n<h2>Securitatea Aplica\u021biilor: ce \u00eenseamn\u0103?<\/h2>\n<p>\n<b>Securitatea Aplica\u021biilor<\/b>\u00a0\u2014 este o ramur\u0103 a securit\u0103\u021bii care se ocup\u0103 cu securitatea aplica\u021biilor. Aceasta nu se refer\u0103 la infrastructur\u0103 sau la securitatea re\u021belei, ci la ceea ce scriem \u0219i la ce lucreaz\u0103 dezvoltatorii \u2014 adic\u0103 la defectele \u0219i vulnerabilit\u0103\u021bile aplica\u021biei \u00een sine.<\/p>\n<p>Direc\u021bia <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/ef\/ef6\/modeling\/designer\/advanced\/edmx\/ssdl-spec\">SDL sau SDLC<\/a><\/noindex>\u00a0\u2014 <b>Ciclul de via\u021b\u0103 al dezvolt\u0103rii securit\u0103\u021bii<\/b>\u00a0\u2014 a fost dezvoltat de Microsoft. \u00cen schema de mai sus se afl\u0103 modelul canonic SDLC, a c\u0103rui sarcin\u0103 principal\u0103 este participarea securit\u0103\u021bii la fiecare etap\u0103 a dezvolt\u0103rii, de la cerin\u021be p\u00e2n\u0103 la lansare \u0219i produc\u021bie. Microsoft a realizat c\u0103 \u00een industrie sunt prea multe bug-uri \u0219i c\u0103 acestea devin mai multe, iar cu asta trebuie f\u0103cut ceva, iar aceast\u0103 abordare a fost propus\u0103 \u0219i de atunci a devenit canonic\u0103.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/466773b9a5bd355419fa1d6d1ddbca66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSecuritatea Aplica\u021biilor \u0219i SSDL sunt orientate nu spre identificarea vulnerabilit\u0103\u021bilor, a\u0219a cum se crede de obicei, ci spre prevenirea apari\u021biei acestora. De-a lungul timpului, abordarea canonic\u0103 de la Microsoft a fost \u00eembun\u0103t\u0103\u021bit\u0103, dezvoltat\u0103, av\u00e2nd o aprofundare mai detaliat\u0103.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/58d3e6aadd30594c018940bcb2a8248b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCiclul de via\u021b\u0103 software (SDLC) este detaliat \u00een diferite metodologii \u2013 OpenSAMM, BSIMM, OWASP. Metodologiile difer\u0103, dar \u00een general, sunt similare.<\/p>\n<h3>Modelul de Maturitate a Securit\u0103\u021bii \u00een Construire<\/h3>\n<p>\nCel mai mult \u00eemi place <b>BSIMM<\/b>\u00a0\u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bsimm.com\/\">Modelul de Maturitate a Securit\u0103\u021bii \u00een Construire<\/a><\/noindex>. Fundamentul metodologiei este \u00eemp\u0103r\u021birea procesului de Securitate a Aplica\u021biilor \u00een 4 domenii: Guvernan\u021b\u0103, Inteligen\u021b\u0103, Puncte de contact SSDL \u0219i Implementare. Fiecare domeniu are 12 practici, prezentate sub form\u0103 de 112 activit\u0103\u021bi.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/ae0bbfd0dde335af886282672ed92367.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFiecare dintre cele 112 activit\u0103\u021bi are <b>3 niveluri de maturitate<\/b>: ini\u021bial, mediu \u0219i avansat. Toate cele 12 practici pot fi studiate pe sec\u021biuni, select\u00e2nd aspectele importante pentru tine, \u00eenv\u0103\u021b\u00e2nd cum s\u0103 le implementezi \u0219i ad\u0103ug\u00e2nd treptat elemente, cum ar fi analiza static\u0103 \u0219i dinamic\u0103 a codului sau revizuirea codului. \u00ce\u021bi elaborezi un plan \u0219i lucrezi lini\u0219tit \u00een cadrul implement\u0103rii activit\u0103\u021bilor selectate.<\/p>\n<h2>De ce DevSecOps<\/h2>\n<p><\/p>\n<blockquote><p>DevOps este un proces mare, complex, \u00een care trebuie s\u0103 ai grij\u0103 de securitate.<\/p><\/blockquote>\n<p>\nIni\u021bial <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DevOps\"><b>DevOps<\/b><\/a><\/noindex> era a prev\u0103zut verific\u0103ri de securitate. \u00cen practic\u0103, num\u0103rul echipelor de securitate era mult mai mic dec\u00e2t acum, iar acestea ac\u021bionau nu ca participan\u021bi \u00een proces, ci ca un organism de control \u0219i supraveghere, care impune cerin\u021be \u0219i verific\u0103 calitatea produsului la finalul rundei de lans\u0103ri. Aceasta este abordarea clasic\u0103, \u00een care echipele de securitate se aflau \u00een spatele unui zid fa\u021b\u0103 de dezvoltare \u0219i nu participau \u00een proces.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/1c5958fb123313308bdd92c5471c44da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrincipala problem\u0103 este tocmai c\u0103 securitatea informa\u021bional\u0103 este separat\u0103 de dezvoltare. De obicei, exist\u0103 un anumit contur de securitate informa\u021bional\u0103, \u00een care se afl\u0103 2-3 instrumente mari \u0219i scumpe. O dat\u0103 la \u0219ase luni se prime\u0219te codul surs\u0103 sau aplica\u021bia care trebuie verificat\u0103, iar o dat\u0103 pe an se efectueaz\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%98%D1%81%D0%BF%D1%8B%D1%82%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%BD%D0%BE%D0%B2%D0%B5%D0%BD%D0%B8%D0%B5\">teste de penetrare<\/a><\/noindex>. Toate acestea duc la \u00eent\u00e2rzieri \u00een livrarea produsului pe pia\u021b\u0103, iar dezvoltatorii se confrunt\u0103 cu un num\u0103r imens de vulnerabilit\u0103\u021bi provenite din instrumente automatizate. Totul este imposibil de analizat \u0219i reparat, deoarece n-au fost analizate rezultatele din ultimele \u0219ase luni, iar acum a ap\u0103rut o nou\u0103 serie.<\/p>\n<p>\u00cen procesul activit\u0103\u021bii noastre, observ\u0103m c\u0103 securitatea \u00een toate domeniile \u0219i industriile \u00een\u021belege c\u0103 este timpul s\u0103 se sincronizeze \u0219i s\u0103 colaboreze cu dezvoltarea \u00eentr-un singur ritm \u2013 \u00een\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%93%D0%B8%D0%B1%D0%BA%D0%B0%D1%8F_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8\"><b>Agile<\/b><\/a><\/noindex>. Paradigma DevSecOps se potrive\u0219te perfect cu metodologia de dezvoltare agil\u0103, cu implementarea, suportul \u0219i participarea \u00een fiecare lansare \u0219i itera\u021bie.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/cf258bd7efc82ff27787b5029cf2f945.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Tranzi\u021bia c\u0103tre DevSecOps<\/h2>\n<p>\nCel mai important cuv\u00e2nt \u00een Ciclul de Via\u021b\u0103 al Dezvolt\u0103rii Securizate este <b>\"proces\"<\/b>Trebuie s\u0103 \u00een\u021belege\u021bi acest lucru \u00eenainte de a lua \u00een considerare achizi\u021bia de instrumente.<\/p>\n<blockquote><p>A include instrumente \u00een procesul DevOps nu este suficient - interac\u021biunea \u0219i \u00een\u021belegerea \u00eentre participan\u021bii la proces sunt importante.<\/p><\/blockquote>\n<p><\/p>\n<h3>Oamenii sunt mai importan\u021bi dec\u00e2t instrumentele.<\/h3>\n<p>\nDe multe ori, planificarea procesului de dezvoltare sigur\u0103 \u00eencepe cu alegerea \u0219i achizi\u021bionarea unui instrument, dar se termin\u0103 cu \u00eencerc\u0103ri de integrare a instrumentului \u00een procesul actual, care r\u0103m\u00e2n doar \u00eencerc\u0103ri. Acest lucru duce la consecin\u021be triste, deoarece fiecare instrument are propriile sale caracteristici \u0219i limit\u0103ri.<\/p>\n<p>Un caz frecvent este atunci c\u00e2nd departamentul de securitate a ales un instrument bun, scump, cu posibilit\u0103\u021bi largi \u0219i s-a dus la dezvoltatori pentru a-l integra \u00een proces. Dar nu func\u021bioneaz\u0103 - procesul este construit astfel \u00eenc\u00e2t limit\u0103rile instrumentului deja achizi\u021bionat nu se aliniaz\u0103 cu paradigma actual\u0103.<\/p>\n<blockquote><p>Mai \u00eent\u00e2i, descrie\u021bi ce rezultat dori\u021bi \u0219i cum va ar\u0103ta procesul. Acest lucru va ajuta la \u00een\u021belegerea rolurilor instrumentului \u0219i securit\u0103\u021bii \u00een proces.<\/p><\/blockquote>\n<p><\/p>\n<h3>\u00cencepe\u021bi cu ceea ce este deja folosit.<\/h3>\n<p>\n\u00cenainte de a achizi\u021biona instrumente scumpe, arunca\u021bi o privire asupra a ceea ce ave\u021bi deja. Fiecare companie are cerin\u021be de securitate care sunt impuse dezvolt\u0103rii, exist\u0103 verific\u0103ri, teste de penetrare - de ce s\u0103 nu transforma\u021bi totul \u00eentr-o form\u0103 clar\u0103 \u0219i convenabil\u0103 pentru to\u021bi?<\/p>\n<p>De obicei, cerin\u021bele sunt un document greu, care st\u0103 pe o poli\u021b\u0103. A fost un caz c\u00e2nd am ajuns \u00eentr-o companie s\u0103 analiz\u0103m procesele \u0219i am cerut s\u0103 ne arate cerin\u021bele de securitate pentru software. Specialistul responsabil cu acest lucru a c\u0103utat mult:<\/p>\n<p><i>\u2014 Acum, undeva \u00een noti\u021be am avut calea unde se afl\u0103 acest document.<\/i><\/p>\n<p>\u00cen cele din urm\u0103, am ob\u021binut documentul dup\u0103 o s\u0103pt\u0103m\u00e2n\u0103.<\/p>\n<p>Pentru cerin\u021be, verific\u0103ri \u0219i altele, crea\u021bi o pagin\u0103, de exemplu, pe\u00a0<b>Confluence<\/b>\u00a0\u2014 este convenabil pentru toat\u0103 lumea.<\/p>\n<blockquote><p>Este mai simplu s\u0103 reformata\u021bi ceea ce exist\u0103 deja \u0219i s\u0103 folosi\u021bi pentru \u00eenceput.<\/p><\/blockquote>\n<p><\/p>\n<h3>Folosi\u021bi Security Champions. <\/h3>\n<p>\n\u00cen general, \u00eentr-o companie medie de 100-200 de dezvoltatori lucreaz\u0103 un specialist \u00een securitate, care \u00eendepline\u0219te mai multe func\u021bii \u0219i nu are timpul fizic s\u0103 verifice totul. Chiar dac\u0103 se str\u0103duie\u0219te din greu - nu poate verifica singur tot codul generat de dezvoltare. Pentru astfel de cazuri a fost dezvoltat conceptul de <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/Security_Champions\"><b>Security Champions.<\/b><\/a><\/noindex>.<\/p>\n<blockquote><p>Security Champions sunt persoane din echipa de dezvoltare care sunt interesate de securitatea produsului dumneavoastr\u0103.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/c67728db4a6e34407da199387eba2bb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSecurity Champion este un punct de contact \u00een echipa de dezvoltare \u0219i un avocat al securit\u0103\u021bii \u00eentr-o singur\u0103 persoan\u0103.<\/p>\n<p>De obicei, c\u00e2nd un specialist \u00een securitate se al\u0103tur\u0103 echipei de dezvoltare \u0219i indic\u0103 o eroare \u00een cod, r\u0103spunsul pe care \u00eel prime\u0219te este de obicei surprins:<\/p>\n<p><i>\u2014 \u0218i cine e\u0219ti tu? Te v\u0103d pentru prima dat\u0103. Eu sunt bine \u2014 mentorul meu mi-a dat \u00abapply\u00bb la code review, continu\u0103m mai departe!<\/i><\/p>\n<p>Aceasta este o situa\u021bie tipic\u0103, deoarece exist\u0103 mult mai mult\u0103 \u00eencredere \u00een colegii mai vechi sau \u00een cei cu care dezvoltatorul interac\u021bioneaz\u0103 constant la locul de munc\u0103 \u0219i \u00een code review. Dac\u0103, \u00een loc de specialistul \u00een securitate, Security Champion atrage aten\u021bia asupra erorii \u0219i a consecin\u021belor, atunci cuv\u00e2ntul s\u0103u va avea mai mult\u0103 greutate.<\/p>\n<p>De asemenea, dezvoltatorii cunosc mai bine codul lor dec\u00e2t orice specialist \u00een securitate. Pentru cineva care are cel pu\u021bin 5 proiecte \u00een instrumentul de analiz\u0103 static\u0103, este de obicei greu s\u0103-\u0219i aminteasc\u0103 toate nuan\u021bele. Security Champions \u0219tiu produsul lor: ce interac\u021bioneaz\u0103 cu ce \u0219i la ce s\u0103 se uite \u00eent\u00e2i \u2014 sunt mai eficien\u021bi.<\/p>\n<p>A\u0219adar, g\u00e2ndi\u021bi-v\u0103 s\u0103 implementa\u021bi Security Champions \u0219i s\u0103 extinde\u021bi influen\u021ba echipei de securitate. Pentru \u00eensu\u0219i campionul, aceasta este de asemenea benefic\u0103: dezvoltare profesional\u0103 \u00eentr-un nou domeniu, extinderea orizontului tehnic, \u00eembun\u0103t\u0103\u021birea abilit\u0103\u021bilor tehnice, de management \u0219i de leadership, cre\u0219terea valorii pe pia\u021b\u0103. Este un element de inginerie social\u0103, \u00abochii\u00bb dumneavoastr\u0103 \u00een echipa de dezvoltare.<\/p>\n<h2>Etapele test\u0103rii<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D0%BA%D0%BE%D0%BD_%D0%9F%D0%B0%D1%80%D0%B5%D1%82%D0%BE\">Paradigma 20 la 80<\/a><\/noindex>\u00a0indic\u0103 faptul c\u0103 20% din eforturi dau 80% din rezultate. Aceste 20% constituie practicile de analiz\u0103 a aplica\u021biilor care pot \u0219i trebuie automatizate. Exemple de astfel de activit\u0103\u021bi sunt analiza static\u0103 \u2014 <b>SAST<\/b>, analiza dinamic\u0103 \u2014 <b>DAST,<\/b> \u0219i\u00a0<b>controlul Open Source<\/b>. Voi vorbi mai \u00een detaliu despre activit\u0103\u021bi, dar \u0219i despre instrumentele cu care ne confrunt\u0103m de obicei \u00een timpul implement\u0103rii acestora \u00een proces \u0219i cum s\u0103 facem acest lucru corect.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/db720e0879cdd1ed818461ffb5f927da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Problemele principale ale instrumentelor<\/h3>\n<p>\nVoi eviden\u021bia problemele relevante pentru toate instrumentele, care necesit\u0103 aten\u021bie. Le voi analiza \u00een detaliu pentru a nu mai repeta mai departe.<\/p>\n<p><b>Timp \u00eendelungat de analiz\u0103. <\/b>Dac\u0103 de la commit la lansarea \u00een produc\u021bie trec 30 de minute pentru toate testele \u0219i compilare, atunci verific\u0103rile de securitate vor dura o zi. Nimeni nu va \u00eencetini procesul din aceast\u0103 cauz\u0103. Lua\u021bi \u00een considerare aceast\u0103 particularitate \u0219i trasa\u021bi concluziile.<\/p>\n<p><b>Un nivel ridicat de False Negative sau False Positive. <\/b>Toate produsele sunt diferite, fiecare folose\u0219te cadre diferite \u0219i propriul stil de scriere a codului. Pe diferite baze de cod \u0219i tehnologii, instrumentele pot ar\u0103ta niveluri diferite de False Negative \u0219i False Positive. A\u0219adar, verifica\u021bi ce anume va ar\u0103ta\u00a0<b>\u00een compania dumneavoastr\u0103 \u0219i pentru<\/b> aplica\u021biile dumneavoastr\u0103 un rezultat bun \u0219i de \u00eencredere. <b>Nu exist\u0103 integrare cu instrumentele existente<\/b> . Privind instrumentele din perspectiva integr\u0103rilor, g\u00e2ndi\u021bi-v\u0103 la cele pe care deja le folosi\u021bi. De exemplu, dac\u0103 ave\u021bi Jenkins sau TeamCity, verifica\u021bi integrarea instrumentelor exact cu acel software, nu cu GitLab CI, pe care nu \u00eel utiliza\u021bi.<\/p>\n<p><b>Lipsa sau complexitatea excesiv\u0103 a personaliz\u0103rii.<\/b>Dac\u0103 instrumentul nu are API, atunci de ce este necesar? Tot ce se poate face \u00een interfa\u021b\u0103 ar trebui s\u0103 fie disponibil \u0219i prin API. Ideal, instrumentul ar trebui s\u0103 permit\u0103 personalizarea verific\u0103rilor.<\/p>\n<p><b>Lipsa unui Roadmap de dezvoltare a produsului. <\/b>Dezvoltarea nu st\u0103 pe loc, \u00eentotdeauna folosim cadre \u0219i func\u021bii noi, rescriem codul vechi \u00een limbaje noi. Vrem s\u0103 fim siguri c\u0103 instrumentul pe care \u00eel cump\u0103r\u0103m va sus\u021bine cadre \u0219i tehnologii noi. De aceea, este important s\u0103 \u0219tim c\u0103 produsul are un<\/p>\n<p><b>plan de dezvoltare real \u0219i bine definit. <\/b>Particularit\u0103\u021bile procesului <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%B4%D0%BE%D1%80%D0%BE%D0%B6%D0%BD%D0%B0%D1%8F_%D0%BA%D0%B0%D1%80%D1%82%D0%B0\">Planul de ac\u021biune<\/a><\/noindex> Pe l\u00e2ng\u0103 particularit\u0103\u021bile instrumentelor, lua\u021bi \u00een considerare \u0219i particularit\u0103\u021bile procesului de dezvoltare. De exemplu, a interveni \u00een dezvoltare este o gre\u0219eal\u0103 tipic\u0103. S\u0103 vedem ce alte particularit\u0103\u021bi ar trebui s\u0103 lu\u0103m \u00een considerare \u0219i la ce ar trebui echipa de securitate s\u0103 fie atent\u0103.<\/p>\n<h3>Pentru a nu \u00eent\u00e2rzia termenele de dezvoltare \u0219i lansare, crea\u021bi<\/h3>\n<p>\nreguli diferite<\/p>\n<p>\u0219i diferite <b>show stoppers<\/b> \u2014 criterii de oprire a procesului de compilare \u00een prezen\u021ba vulnerabilit\u0103\u021bilor \u2014 <b>pentru diferite medii\u00a0<\/b>. De exemplu, \u00een\u021belegem c\u0103 ramura curent\u0103 merge pe un mediu de dezvoltare sau UAT, a\u0219a c\u0103 nu ne oprim \u0219i nu spunem: <b>\u2014 Ave\u021bi aici vulnerabilit\u0103\u021bi, nu ve\u021bi merge mai departe!<\/b>Este important s\u0103 le spunem dezvoltatorilor, \u00een aceast\u0103 etap\u0103, c\u0103 exist\u0103 probleme de securitate la care ar trebui s\u0103 fie aten\u021bi.<\/p>\n<p><i>\u2014 Ave\u021bi vulnerabilit\u0103\u021bi aici, nu ve\u021bi putea merge mai departe!<\/i><\/p>\n<p>\u00cen aceast\u0103 etap\u0103, este important s\u0103 spunem dezvoltatorilor c\u0103 exist\u0103 probleme de securitate la care ar trebui s\u0103 fie aten\u021bi.<\/p>\n<p><b>Prezen\u021ba vulnerabilit\u0103\u021bilor nu reprezint\u0103 un obstacol pentru testarea ulterioar\u0103<\/b>: manual\u0103, integrat\u0103 sau manual\u0103. Pe de alt\u0103 parte, trebuie s\u0103 g\u0103sim o modalitate de a spori securitatea produsului, astfel \u00eenc\u00e2t dezvoltatorii s\u0103 nu ignore ceea ce descoper\u0103 echipa de securitate. A\u0219adar, uneori ac\u021bion\u0103m astfel: pe stand, c\u00e2nd se face transferul c\u0103tre mediu de dezvoltare, doar notific\u0103m echipa de dezvoltare:<\/p>\n<p><i>\u2014 Guys, ave\u021bi probleme, v\u0103 rug\u0103m s\u0103 le acorda\u021bi aten\u021bie.<\/i><\/p>\n<p>\u00cen etapa UAT, din nou prezent\u0103m avertiz\u0103ri cu privire la vulnerabilit\u0103\u021bi, iar \u00een etapa de lansare \u00een produc\u021bie spunem:<\/p>\n<p><i>\u2014 Guys, v-am avertizat de c\u00e2teva ori, nu a\u021bi f\u0103cut nimic \u2014 cu asta nu v\u0103 vom lansa.<\/i><\/p>\n<p>Dac\u0103 vorbim despre cod \u0219i dinamic\u0103, este necesar s\u0103 ar\u0103t\u0103m \u0219i s\u0103 avertiz\u0103m doar cu privire la vulnerabilit\u0103\u021bile func\u021biilor \u0219i codului care au fost scrise recent \u00een aceast\u0103 func\u021bie. Dac\u0103 dezvoltatorul a mutat un buton cu 3 pixeli \u0219i \u00eei spunem c\u0103 are o injec\u021bie SQL \u0219i c\u0103 trebuie s\u0103 corecteze urgent \u2014 este gre\u0219it. Uita\u021bi-v\u0103 doar la ceea ce este scris acum \u0219i la modificarea care vine \u00een aplica\u021bie.<\/p>\n<p>S\u0103 presupunem c\u0103 avem un defect func\u021bional \u2014 adic\u0103 modul \u00een care aplica\u021bia nu ar trebui s\u0103 func\u021bioneze: banii nu se transfer\u0103, nu exist\u0103 navigare c\u0103tre pagina urm\u0103toare atunci c\u00e2nd face\u021bi clic pe buton sau produsul nu se \u00eencarc\u0103. <b>Defectele de securitate<\/b>\u00a0\u2014 sunt defecte la fel ca orice altele, dar nu \u00een privin\u021ba func\u021bion\u0103rii aplica\u021biei, ci a securit\u0103\u021bii. <\/p>\n<blockquote><p>Nu toate problemele de calitate ale software-ului sunt probleme de securitate. Dar toate problemele de securitate sunt legate de calitatea software-ului. Sherif Mansour, Expedia.<\/p><\/blockquote>\n<p>\nDeoarece toate vulnerabilit\u0103\u021bile sunt defecte, ele ar trebui s\u0103 se afle acolo unde se afl\u0103 toate defectele de dezvoltare. A\u0219adar, uita\u021bi de rapoarte \u0219i de PDF-uri \u00eenfrico\u0219\u0103toare pe care nimeni nu le cite\u0219te.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/e54e64658a3882bdc68a48c6ef426746.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC\u00e2nd lucram \u00eentr-o companie de dezvoltare, am primit un raport din instrumentele de analiz\u0103 static\u0103. L-am deschis, am fost devastat, am f\u0103cut o cafea, m-am r\u0103sfoit 350 de pagini, l-am \u00eenchis \u0219i m-am apucat din nou de munc\u0103. <b>Rapoartele mari sunt rapoarte moarte<\/b>. De obicei, nu ajung nic\u0103ieri, e-mailurile sunt \u0219terse, uitate, pierdute sau business-ul spune c\u0103 \u00ee\u0219i asum\u0103 riscurile.<\/p>\n<p>Ce trebuie s\u0103 facem? Defectele confirmate identificate sunt transformate \u00eentr-o form\u0103 \u0443\u0434\u043e\u0431\u043d\u043e\u0439 pentru dezvoltare, de exemplu, adunate \u00een backlog \u00een Jira. Prioritiz\u0103m defectele \u0219i le remedieze \u00een ordinea priorit\u0103\u021bii, la fel ca defectele func\u021bionale \u0219i defectele testelor.<\/p>\n<h2>Analiz\u0103 static\u0103 - SAST<\/h2>\n<p>\n<b>Aceasta este analiza codului pentru identificarea vulnerabilit\u0103\u021bilor<\/b>, dar nu este acela\u0219i lucru cu SonarQube. Verific\u0103m nu doar dup\u0103 modele sau stil. \u00cen analiz\u0103 se aplic\u0103 o serie de abord\u0103ri: pe baza arborelui vulnerabilit\u0103\u021bilor, pe\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85\">DataFlow<\/a><\/noindex>, pe analiza fi\u0219ierelor de configurare. Acestea sunt toate aspectele legate direct de cod.<\/p>\n<p><b>Avantajele abord\u0103rii<\/b>: <b>identificarea vulnerabilit\u0103\u021bilor \u00een cod \u00een etapele timpurii ale dezvolt\u0103rii<\/b>, c\u00e2nd nu exist\u0103 \u00eenc\u0103 standuri \u0219i un instrument gata, \u0219i<b>\u00a0posibilitatea scan\u0103rii incrementale<\/b>: scanarea unei por\u021biuni de cod care a fost modificat\u0103 \u0219i doar a acelei caracteristici pe care o realiz\u0103m acum, ceea ce reduce timpul de scanare.<\/p>\n<p><b>Dezavantaje<\/b>\u00a0\u2014 este lipsa suportului pentru limbajele necesare.<\/p>\n<p><b>Integr\u0103rile necesare, <\/b>care ar trebui s\u0103 fie \u00een instrumente, din punctul meu de vedere subiectiv:<\/p>\n<ul>\n<li>Instrumente de integrare: Jenkins, TeamCity \u0219i Gitlab CI.\n<\/li>\n<li>Mediul de dezvoltare: Intellij IDEA, Visual Studio. Programatorului \u00eei este mai u\u0219or s\u0103 nu se joace \u00een interfa\u021ba confuz\u0103, care trebuie \u00eenc\u0103 memorat\u0103, ci s\u0103 vad\u0103 toate integr\u0103rile necesare \u0219i vulnerabilit\u0103\u021bile identificate direct \u00een locul de munc\u0103, \u00een propriul s\u0103u mediu de dezvoltare.\n<\/li>\n<li>Revizuirea codului: SonarQube \u0219i revizuirea manual\u0103.\n<\/li>\n<li>Tracker-e de defecte: Jira \u0219i Bugzilla.\n<\/li>\n<\/ul>\n<p>\n\u00cen imagine sunt c\u00e2\u021biva dintre cei mai buni reprezentan\u021bi ai analizei statice.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/bab3420874ac090d4d107edb0d2b857b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInstrumentele nu sunt importante, ci procesul, de aceea exist\u0103 solu\u021bii Open Source care sunt la fel de bune pentru testarea procesului.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/4f2c278922c291b15922bc5748f87dc3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSAST Open Source nu va identifica un num\u0103r mare de vulnerabilit\u0103\u021bi sau fluxuri de date complexe, dar pot \u0219i trebuie utilizate \u00een construirea procesului. Ele ajut\u0103 la \u00een\u021belegerea modului \u00een care va fi construit procesul, cine va r\u0103spunde la buguri, cine va raporta, cine - va face raport\u0103ri. Dac\u0103 dori\u021bi s\u0103 desf\u0103\u0219ura\u021bi etapa ini\u021bial\u0103 de construc\u021bie a securit\u0103\u021bii codului dvs. - folosi\u021bi solu\u021bii Open Source.<\/p>\n<p>Cum poate fi integrat acest lucru, dac\u0103 sunte\u021bi la \u00eenceput de drum, nu ave\u021bi nimic: nici CI, nici Jenkins, nici TeamCity? S\u0103 analiz\u0103m integr\u0103rile \u00een proces.<\/p>\n<h3>Integrarea la nivel de CVS<\/h3>\n<p>\nDac\u0103 ave\u021bi Bitbucket sau GitLab, pute\u021bi face integrarea la nivel de <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/CVS\">Sistem de Versiuni Concurrente<\/a><\/noindex>.<\/p>\n<p><b>Pe baz\u0103 de eveniment<\/b>\u00a0\u2014 pull request, commit. Scana\u021bi codul \u0219i \u00een statusul build-ului ar\u0103ta\u021bi dac\u0103 verificarea de securitate a trecut sau nu.<\/p>\n<p><b>Feedback. <\/b>Desigur, feedback-ul este \u00eentotdeauna necesar. Dac\u0103 a\u021bi efectuat pur \u0219i simplu ac\u021biuni pe partea de securitate, le-a\u021bi pus \u00eentr-o cutie \u0219i nu a\u021bi spus nim\u0103nui despre asta, iar apoi, la sf\u00e2r\u0219itul lunii, a\u021bi aruncat o mul\u021bime de bug-uri - nu este corect \u0219i nu este bine.<\/p>\n<h3>Integrarea cu sistemul de revizuire a codului<\/h3>\n<p>\nOdat\u0103, am numit ca revizor implicit utilizatorul tehnic AppSec \u00een cadrul unor proiecte importante. \u00cen func\u021bie de faptul dac\u0103 au fost identificate erori \u00een noul cod sau nu, revizorul pune un status pe pull request ca \u201eacceptat\u201d sau \u201enecesit\u0103 lucru\u201d - fie totul OK, fie trebuie s\u0103 se lucreze la asta, cu leg\u0103turi la ceea ce trebuie s\u0103 fie \u00eembun\u0103t\u0103\u021bit. La integrarea cu versiunea care merge \u00een produc\u021bie, am activat interdic\u021bia de merge dac\u0103 testul de securitate nu a fost trecut. Aceasta a fost inclus\u0103 \u00een revizuirea manual\u0103 a codului, iar ceilal\u021bi participan\u021bi la proces au v\u0103zut statusurile de securitate specifice pentru acest proces anume.<\/p>\n<h3>Integrarea cu SonarQube<\/h3>\n<p>\nMulte persoane au <noindex><a rel=\"nofollow\" href=\"https:\/\/de.wikipedia.org\/wiki\/Quality_Gate\">gates de calitate<\/a><\/noindex> \u00een ceea ce prive\u0219te calitatea codului. Aici este la fel - se pot face acelea\u0219i gates doar pentru instrumentele SAST. Va exista aceea\u0219i interfa\u021b\u0103, acela\u0219i gates de calitate, doar c\u0103 se va numi <b>gates de securitate<\/b>. \u0218i, de asemenea, dac\u0103 ave\u021bi un proces setat folosind SonarQube, pute\u021bi s\u0103 integra\u021bi totul f\u0103r\u0103 probleme.<\/p>\n<h3>Integrarea la nivel de CI<\/h3>\n<p>\nAici totul este destul de simplu:<\/p>\n<ul>\n<li><b>La acela\u0219i nivel cu testele automate<\/b>, testele unit\u0103\u021bii.\n<\/li>\n<li><b>Separarea pe etapele de dezvoltare<\/b>: dev, test, prod. Pot fi incluse diferite seturi de reguli, sau diferite condi\u021bii de e\u0219ec: oprim compilarea, nu oprim compilarea.\n<\/li>\n<li><b>Executare sincron\u0103\/asynchron\u0103<\/b>. A\u0219tept\u0103m finalizarea verific\u0103rii testelor de securitate sau nu a\u0219tept\u0103m. Adic\u0103 le-am pur \u0219i simplu lansat \u0219i mergem mai departe, iar apoi primim statusul c\u0103 totul este bine sau r\u0103u.\n<\/li>\n<\/ul>\n<p>\nToate acestea se afl\u0103 \u00een lumea ideal\u0103. \u00cen via\u021ba real\u0103, nu exist\u0103 a\u0219a ceva, dar ne str\u0103duim. Rezultatul execut\u0103rii verific\u0103rilor de securitate ar trebui s\u0103 fie similar cu rezultatele testelor unit\u0103\u021bii.<\/p>\n<p>De exemplu, am preluat un proiect mare \u0219i am decis c\u0103 acum \u00eel vom scana cu SAST \u2013 OK. Am introdus acest proiect \u00een SAST, a generat 20.000 de vulnerabilit\u0103\u021bi \u0219i, printr-o decizie ferm\u0103, am acceptat c\u0103 totul este bine. 20.000 de vulnerabilit\u0103\u021bi reprezint\u0103 datoria noastr\u0103 tehnic\u0103. O vom pune \u00eentr-o cutie, vom \u00eencepe s\u0103 o abord\u0103m treptat \u0219i vom \u00eenregistra bug-uri \u00een defect trackers. Vom angaja o companie, vom face totul singuri sau ne vor ajuta Security Champions \u2013 \u0219i datoria tehnic\u0103 va sc\u0103dea.<\/p>\n<p>Iar toate vulnerabilit\u0103\u021bile nou ap\u0103rute \u00een codul nou trebuie rezolvate la fel ca erorile din teste unitare sau din autotestare. Pe scurt, construit un build, au rulat teste, au picat dou\u0103 teste \u0219i dou\u0103 teste de securitate. OK \u2013 am mers, am verificat ce s-a \u00eent\u00e2mplat, am corectat una, am corectat cealalt\u0103, data urm\u0103toare am rulat \u2013 totul bine, nu au ap\u0103rut vulnerabilit\u0103\u021bi noi, testele nu au picat. Dac\u0103 aceast\u0103 sarcin\u0103 este mai complex\u0103 \u0219i trebuie s\u0103 ne aprofund\u0103m bine \u00een ea, sau dac\u0103 remedierea vulnerabilit\u0103\u021bilor afecteaz\u0103 mari segmente ale ceea ce se afl\u0103 sub capot\u0103: am \u00eenregistrat un bug \u00een defect tracker, acesta va fi prioritizat \u0219i corectat. Din p\u0103cate, lumea nu este perfect\u0103 iar testele uneori pic\u0103.<\/p>\n<p>Exemplu de security gate \u2013 analog cu quality gate, \u00een ceea ce prive\u0219te prezen\u021ba \u0219i num\u0103rul de vulnerabilit\u0103\u021bi \u00een cod.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/eb30d3c7988b28c2cb25e9656871ec96.png\" style=\"display:block;margin: 0 auto;\" \/>Integr\u0103m cu SonarQube \u2013 pluginul se instaleaz\u0103, totul este foarte convenabil \u0219i grozav.<\/p>\n<h3>Integr\u00e2nd cu mediul de dezvoltare<\/h3>\n<p>\n<b>Posibilit\u0103\u021bi de integrare:<\/b><\/p>\n<ul>\n<li>Lansarea scan\u0103rii din mediul de dezvoltare chiar \u00eenainte de commit.\n<\/li>\n<li>Vizualizarea rezultatelor.\n<\/li>\n<li>Analiza rezultatelor.\n<\/li>\n<li>Sincronizarea cu serverul.\n<\/li>\n<\/ul>\n<p>\nA\u0219a arat\u0103 ob\u021binerea rezultatelor de la server.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/270d4af76fddc0ceebca908c7d3835b8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen mediul nostru de dezvoltare <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/idea\/\">Intellij IDEA<\/a><\/noindex> apare pur \u0219i simplu un punct suplimentar, care informeaz\u0103 c\u0103 \u00een timpul scan\u0103rii au fost descoperite astfel de vulnerabilit\u0103\u021bi. Po\u021bi corecta imediat codul, vizualiza recomand\u0103rile \u0219i\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_graph\">Flow Graph<\/a><\/noindex>. Totul este plasat pe locul de munc\u0103 al dezvoltatorului, ceea ce este foarte convenabil \u2013 nu trebuie s\u0103 navighezi pe alte linkuri \u0219i s\u0103 cau\u021bi ceva suplimentar.<\/p>\n<h2>Open Source<\/h2>\n<p>\nAceasta este tema mea preferat\u0103. Toat\u0103 lumea folose\u0219te biblioteci Open Source \u2013 de ce s\u0103 scriem o mul\u021bime de solu\u021bii improvizate \u0219i biciclete, c\u00e2nd putem lua o bibliotec\u0103 gata f\u0103cut\u0103, \u00een care totul este deja implementat?<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/05b9cd5a8b269af2a3f59931a0774778.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDesigur, a\u0219a este, dar bibliotecile sunt scrise \u0219i de oameni, includ, de asemenea, anumite riscuri \u0219i au vulnerabilit\u0103\u021bi despre care se raporteaz\u0103 periodic sau constant. Prin urmare, urm\u0103torul pas \u00een Securitatea Aplica\u021biilor este analiza componentelor Open Source.<\/p>\n<h3>Analiza Open Source - OSA<\/h3>\n<p>\nInstrumentul include trei etape mari.<\/p>\n<p><b>Identificarea vulnerabilit\u0103\u021bilor \u00een biblioteci. <\/b>De exemplu, instrumentul \u0219tie c\u0103 folosim o anumit\u0103 bibliotec\u0103 \u0219i c\u0103 \u00een\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Common_Vulnerabilities_and_Exposures\">CVE<\/a><\/noindex> sau \u00een bug-tracker exist\u0103 unele vulnerabilit\u0103\u021bi legate de aceast\u0103 versiune a bibliotecii. \u00cen cazul utiliz\u0103rii acesteia, instrumentul va emite o avertizare c\u0103 biblioteca este vulnerabil\u0103 \u0219i va recomanda s\u0103 se utilizeze o alt\u0103 versiune care nu are vulnerabilit\u0103\u021bi.<\/p>\n<p><b>Analiza cur\u0103\u021beniei licen\u021belor. <\/b>Pentru noi, aceasta nu este \u00eenc\u0103 foarte popular\u0103, dar dac\u0103 colabora\u021bi cu persoane din str\u0103in\u0103tate, atunci periodic pute\u021bi primi o aten\u021bionare pentru utilizarea unei componente cu cod surs\u0103 deschis pe care nu o pute\u021bi folosi sau modifica. Conform politicii bibliotecii licen\u021biate, nu putem face acest lucru. Sau, dac\u0103 am modificat-o \u0219i o folosim, trebuie s\u0103 public\u0103m codul nostru. Desigur, nimeni nu dore\u0219te s\u0103 publice codul produselor sale, dar exist\u0103 \u0219i modalit\u0103\u021bi de a v\u0103 proteja de acest lucru.<\/p>\n<p><b>Analiza componentelor utilizate \u00een medii industriale. <\/b>S\u0103 presupunem o situa\u021bie ipotetic\u0103 \u00een care \u00een sf\u00e2r\u0219it am finalizat dezvoltarea \u0219i am lansat ultima versiune a microserviciului nostru. Acesta func\u021bioneaz\u0103 minunat - o s\u0103pt\u0103m\u00e2n\u0103, o lun\u0103, un an. Nu \u00eel mai \u00eembun\u0103t\u0103\u021bim, nu efectu\u0103m verific\u0103ri de securitate, p\u0103rea c\u0103 totul este \u00een regul\u0103. Dar, brusc, la dou\u0103 s\u0103pt\u0103m\u00e2ni dup\u0103 lansare, apare o vulnerabilitate critic\u0103 \u00een componenta Open Source pe care o folosim exact \u00een aceast\u0103 construc\u021bie, \u00een mediu de produc\u021bie. Dac\u0103 nu not\u0103m ce \u0219i unde folosim, atunci aceast\u0103 vulnerabilitate pur \u0219i simplu nu o vom observa. Unele instrumente ofer\u0103 posibilitatea de monitorizare a vulnerabilit\u0103\u021bilor \u00een bibliotecile care sunt folosite \u00een prezent \u00een produc\u021bie. Aceasta este foarte util.<\/p>\n<p><b>Func\u021bionalit\u0103\u021bi:<\/b><\/p>\n<ul>\n<li>Diverse politici pentru diferite etape de dezvoltare.\n<\/li>\n<li>Monitorizarea componentelor \u00een mediul industrial.\n<\/li>\n<li>Controlul bibliotecilor \u00een cadrul organiza\u021biei.\n<\/li>\n<li>Suport pentru diferite sisteme de construire \u0219i limbi.\n<\/li>\n<li>Analiza imaginilor Docker.\n<\/li>\n<\/ul>\n<p>\nC\u00e2teva exemple de lideri din domeniu care se ocup\u0103 cu analiza Open Source.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/f1b05f86beb4a64f9bf3443963e3603b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSingurul gratuit dintre acestea este <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/OWASP_Dependency_Check\">Dependency-Check<\/a><\/noindex> de la OWASP. Poate fi activat \u00een stadiile ini\u021biale pentru a vedea cum func\u021bioneaz\u0103 \u0219i ce suport ofer\u0103. \u00cen principal, se refer\u0103 la toate produsele cloud sau on-premise, dar de\u0219i au propria baz\u0103 de date, tot sunt conectate la internet. Ele nu trimit bibliotecile dumneavoastr\u0103, ci hash-uri sau propriile valori pe care le calculeaz\u0103, \u00eempreun\u0103 cu amprentele, c\u0103tre serverul lor pentru a ob\u021bine notific\u0103ri cu privire la vulnerabilit\u0103\u021bi.<\/p>\n<h3>Integrarea \u00een proces<\/h3>\n<p>\n<b>Controlul bibliotecilor \u00een perimetrul<\/b>, care sunt desc\u0103rcate din surse externe. Avem un depozit extern \u0219i unul intern. De exemplu, \u00een interiorul Event Central avem Nexus, \u0219i dorim ca \u00een depozitul nostru intern s\u0103 nu existe vulnerabilit\u0103\u021bi cu statutul 'critice' sau 'elevate'. Se poate configura un proxy folosind instrumentul Nexus Firewall Lifecycle pentru a bloca astfel de vulnerabilit\u0103\u021bi astfel \u00eenc\u00e2t s\u0103 nu ajung\u0103 \u00een depozitul intern.<\/p>\n<p><b>Integrarea \u00een CI<\/b>. La acela\u0219i nivel cu teste automate, teste unitare \u0219i \u00eemp\u0103r\u021birea pe etape de dezvoltare: dev, test, prod. \u00cen fiecare etap\u0103 se pot desc\u0103rca orice biblioteci, se poate folosi orice, dar dac\u0103 exist\u0103 ceva sever cu statutul 'critic\u0103' - poate ar trebui s\u0103 atrag\u0103 aten\u021bia dezvoltatorilor \u00een etapa de produc\u021bie.<\/p>\n<p><b>Integrarea cu artefacte<\/b>: Nexus \u0219i JFrog.<\/p>\n<p><b>Integrarea \u00een medii de dezvoltare. <\/b>Instrumentele pe care le alege\u021bi trebuie s\u0103 aib\u0103 integrare cu mediile de dezvoltare. Dezvoltatorul ar trebui s\u0103 aib\u0103 acces la rezultatele scan\u0103rii de pe sta\u021bia de lucru sau posibilitatea de a scana el \u00eensu\u0219i \u0219i de a verifica codul pentru vulnerabilit\u0103\u021bi \u00eenainte de a-l comite \u00een CVS.<\/p>\n<p><b>Integrarea \u00een CD. <\/b>Aceasta este o func\u021bie fantastic\u0103 care \u00eemi place foarte mult \u0219i despre care am vorbit deja - monitorizarea apari\u021biei de noi vulnerabilit\u0103\u021bi \u00een mediul industrial. Func\u021bioneaz\u0103 cam a\u0219a.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/605c638df343db5c47ab36b4dc00f41c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAvem <b>Depozite Publice de Componente<\/b>\u00a0\u2014 unele instrumente externe \u0219i depozitul nostru intern. Vrem ca acesta s\u0103 con\u021bin\u0103 doar componente de \u00eencredere. Atunci c\u00e2nd proxy-iz\u0103m o cerere, verific\u0103m c\u0103 biblioteca desc\u0103rcat\u0103 nu are vulnerabilit\u0103\u021bi. Dac\u0103 aceasta se \u00eencadreaz\u0103 \u00een anumite politici stabilite \u0219i obligatoriu aprobate cu echipa de dezvoltare, atunci nu o desc\u0103rc\u0103m \u0219i se trimite un mesaj pentru utilizarea unei alte versiuni. Prin urmare, dac\u0103 biblioteca con\u021bine ceva critic \u0219i d\u0103un\u0103tor, dezvoltatorul nu va primi biblioteca chiar la etapa de instalare \u2014 va trebui s\u0103 foloseasc\u0103 o versiune superioar\u0103 sau inferioar\u0103.<\/p>\n<ul>\n<li>\u00cen timpul build-ului, verific\u0103m c\u0103 nimeni nu a introdus nimic d\u0103un\u0103tor, c\u0103 toate componentele sunt sigure \u0219i c\u0103 nimeni nu a adus pe flash drive nimic periculos.\n<\/li>\n<li>\u00cen depozit avem doar componente de \u00eencredere. \n<\/li>\n<li>La deploy, verific\u0103m din nou pachetul \u00een sine: war, jar, DL sau imagine Docker pentru a ne asigura c\u0103 se conformeaz\u0103 politicii. \n<\/li>\n<li>La ie\u0219irea \u00een produc\u021bie, monitoriz\u0103m ce se \u00eent\u00e2mpl\u0103 \u00een mediul industrial: dac\u0103 apar sau nu vulnerabilit\u0103\u021bi critice.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Analiza dinamic\u0103 \u2014 DAST<\/h2>\n<p>\nInstrumentele de analiz\u0103 dinamic\u0103 sunt radical diferite de tot ce s-a spus p\u00e2n\u0103 acum. Acestea reprezint\u0103 o simulare a interac\u021biunii utilizatorului cu aplica\u021bia. Dac\u0103 este o aplica\u021bie web, trimitem cereri, imit\u00e2nd activitatea clientului, ap\u0103s\u0103m butoanele de pe frontend, trimitem date artificiale din formulare: ghilimele, paranteze, simboluri \u00een diferite codific\u0103ri, pentru a observa cum func\u021bioneaz\u0103 \u0219i cum proceseaz\u0103 aplica\u021bia datele externe.<\/p>\n<p>Acest sistem permite de asemenea verificarea vulnerabilit\u0103\u021bilor comune \u00een Open Source. Deoarece DAST nu \u0219tie ce Open Source folosim, pur \u0219i simplu arunc\u0103 \u201epatternuri r\u0103u inten\u021bionate\u201d \u0219i analizeaz\u0103 r\u0103spunsurile serverului:<\/p>\n<p><i>\u2014 Ah, aici exist\u0103 o problem\u0103 de deserializare, iar aici nu.<\/i><\/p>\n<p>Acest lucru presupune riscuri mari, deoarece dac\u0103 efectua\u021bi acest test de securitate pe acela\u0219i mediu \u00een care lucreaz\u0103 testeri \u2014 pot ap\u0103rea lucruri nepl\u0103cute.<\/p>\n<ul>\n<li>\u00cenc\u0103rcare ridicat\u0103 pe serverul de aplica\u021bii.\n<\/li>\n<li>Nu exist\u0103 integra\u021bii.\n<\/li>\n<li>Posibilitatea de a modifica set\u0103rile aplica\u021biei analizate.\n<\/li>\n<li>Nu exist\u0103 suport pentru tehnologiile necesare.\n<\/li>\n<li>Dificult\u0103\u021bi \u00een configurare.\n<\/li>\n<\/ul>\n<p>\nAm avut o situa\u021bie \u00een care, \u00een sf\u00e2r\u0219it, am lansat AppScan: am ob\u021binut cu greu acces la aplica\u021bie, am primit 3 conturi \u0219i ne-am bucurat \u2014 \u00een sf\u00e2r\u0219it, vom verifica totul! Am \u00eenceput scanarea, iar primul lucru pe care l-a f\u0103cut AppScan \u2014 a intrat \u00een panoul de administrare, a ap\u0103sat toate butoanele, a schimbat jum\u0103tate din date \u0219i apoi, \u00een cele din urm\u0103, a cr\u0103pat serverul. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mailform.io\/\">formular de email<\/a><\/noindex>-solicit\u0103ri. Dezvoltarea cu testarea a spus:<\/p>\n<p><i>\u2014 Oameni buni, face\u021bi mi\u0219to?! V-am dat conturi, iar voi a\u021bi distrus standul!<\/i><\/p>\n<p>Lua\u021bi \u00een considerare riscurile posibile. Ideal ar fi s\u0103 preg\u0103ti\u021bi un stand separat pentru testarea securit\u0103\u021bii, care s\u0103 fie izolat de restul mediului, \u0219i, \u00een mod ideal, s\u0103 verifica\u021bi panoul de administrare preferabil \u00een mod manual. Acesta este un pentest \u2014 ultimele procente de efort pe care acum nu le consider\u0103m. <\/p>\n<p>Ar trebui avut \u00een vedere c\u0103 se poate folosi ca un analog al test\u0103rii de \u00eenc\u0103rcare. \u00cen prima etap\u0103, pute\u021bi activa scanerul dinamic \u00een 10-15 fire \u0219i s\u0103 observa\u021bi ce se \u00eent\u00e2mpl\u0103, dar, de obicei, cum arat\u0103 practica, nu iese nimic bun.<\/p>\n<p>C\u00e2teva resurse pe care le folosim de obicei.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/45a25dbe2a2d053e6ed16d31b6ac53ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAr trebui s\u0103 eviden\u021biem <noindex><a rel=\"nofollow\" href=\"https:\/\/portswigger.net\/burp\">Burp Suite<\/a><\/noindex>\u00a0\u2014 acesta este un \u201ecu\u021bit elve\u021bian\u201d pentru orice specialist \u00een securitate. Toat\u0103 lumea \u00eel folose\u0219te \u0219i este foarte convenabil. A ie\u0219it acum o nou\u0103 versiune demo a edi\u021biei enterprise. Dac\u0103 anterior era doar un utilitar stand-alone cu plugin-uri, acum, \u00een sf\u00e2r\u0219it, dezvoltatorii creeaz\u0103 un server mare, de pe care se vor putea gestiona mai mul\u021bi agen\u021bi. Este grozav, recomand s\u0103 \u00eencerca\u021bi.<\/p>\n<h3>Integrarea \u00een proces<\/h3>\n<p>\nIntegrarea se face destul de bine \u0219i simplu: <b>lansarea scan\u0103rii dup\u0103 instalarea cu succes <\/b>aplica\u021biei pe stand \u0219i\u00a0<b>scanarea dup\u0103 finalizarea cu succes a test\u0103rii de integrare<\/b>.<\/p>\n<p>Dac\u0103 integrarea nu func\u021bioneaz\u0103 sau exist\u0103 stub-uri \u0219i func\u021bii mock, este inutil \u0219i lipsit de valoare \u2014 oric\u00e2t de multe pattern-uri am trimite, serverul va r\u0103spunde tot timpul la fel.<\/p>\n<ul>\n<li>Ideal \u2014 un stand separat pentru testare.\n<\/li>\n<li>\u00cenainte de a \u00eencepe testarea, nota\u021bi secven\u021ba de login.\n<\/li>\n<li>Testarea sistemului de administrare \u2014 doar manual\u0103.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Procesul<\/h2>\n<p>\nPu\u021bin generalizat despre procesul \u00een ansamblu \u0219i despre munca fiec\u0103rui instrument, \u00een special. Toate aplica\u021biile sunt diferite \u2014 unele au un analizator dinamic mai bun, altele static, altele analize OpenSource, penteste sau ceva complet diferit, de exemplu, evenimentele cu\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Waf\">Waf<\/a><\/noindex>.<\/p>\n<blockquote><p>Fiecare proces are nevoie de control.<\/p><\/blockquote>\n<p>\nPentru a \u00een\u021belege cum func\u021bioneaz\u0103 procesul \u0219i unde poate fi \u00eembun\u0103t\u0103\u021bit, este necesar s\u0103 colect\u0103m metrici din tot ce putem atinge, inclusiv metrici de produc\u021bie, metrici din instrumente \u0219i din trackere de defecte.<\/p>\n<p>Orice date sunt utile. Trebuie s\u0103 ne uit\u0103m din diverse unghiuri la unde este cel mai bine aplicat un anumit instrument, unde procesul scade specific. Poate c\u0103 ar trebui s\u0103 analiz\u0103m timpul de r\u0103spuns al dezvolt\u0103rii pentru a \u00een\u021belege unde putem \u00eembun\u0103t\u0103\u021bi procesul pe baza timpului. Cu c\u00e2t avem mai multe date, cu at\u00e2t putem construi mai multe unghiuri, de la cele de nivel \u00eenalt p\u00e2n\u0103 la detaliile fiec\u0103rui proces.<\/p>\n<p><img decoding=\"async\" alt=\"Frica \u0219i ur\u0103 DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/93e079b19c4c8189ce6ca4eaec186eed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPentru c\u0103 to\u021bi analizoarele statice \u0219i dinamice au propriile lor API-uri, propriile moduri de a fi lansate, principii, unii au planificatoare, iar al\u021bii nu, scriem un instrument <b>AppSec Orchestrator<\/b>, care permite crearea unui singur punct de acces pentru \u00eentregul proces cu produsul \u0219i gestionarea lui dintr-un singur loc.<\/p>\n<p>Managerii, dezvoltatorii \u0219i inginerii de securitate au un singur punct de acces, din care pot vedea ce este ini\u021biat, pot configura \u0219i lansa scanarea, ob\u021bine rezultatele scan\u0103rii, prezenta cerin\u021be. \u00cencerc\u0103m s\u0103 ne \u00eendep\u0103rt\u0103m de h\u00e2rtiu\u021be, traduc\u00e2nd totul \u00een format uman, utilizat de dezvoltare - pagini pe Confluence cu statut \u0219i metrici, defecte \u00een Jira sau \u00een diferite trackere de defecte, sau integrarea \u00een procesul sincron sau asincron \u00een CI\/CD.<\/p>\n<h2>Puncte cheie de \u00eenv\u0103\u021bare<\/h2>\n<p>\n<b>Instrumentele nu sunt cele mai importante.<\/b> Mai \u00eent\u00e2i trebuie g\u00e2ndit procesul - apoi implementate instrumentele. Instrumentele sunt bune, dar costisitoare, a\u0219a c\u0103 putem \u00eencepe cu procesul \u0219i s\u0103 configur\u0103m interac\u021biunea \u0219i \u00een\u021belegerea \u00eentre dezvoltare \u0219i securitate. Din punct de vedere al securit\u0103\u021bii - nu trebuie s\u0103 acoperim totul, din perspectiva dezvolt\u0103rii - dac\u0103 exist\u0103 ceva foarte critic, trebuie s\u0103 se rezolve, nu s\u0103 \u00eenchidem ochii la problem\u0103.<\/p>\n<p><b>Calitatea produsului<\/b>\u00a0<b>\u2014 este obiectivul comun<\/b> at\u00e2t pentru securitate c\u00e2t \u0219i pentru dezvoltare. Facem un singur lucru, ne str\u0103duim s\u0103 func\u021bioneze corect \u0219i s\u0103 nu existe riscuri reputa\u021bionale sau pierderi financiare. De aceea promov\u0103m abordarea DevSecOps, SecDevOps, pentru a \u00eembun\u0103t\u0103\u021bi comunicarea \u0219i a face produsul mai bun.<\/p>\n<p><b>\u00cencepe\u021bi cu ceea ce ave\u021bi deja<\/b>: cerin\u021be, arhitectur\u0103, verific\u0103ri par\u021biale, training-uri, linii directoare. Nu este necesar s\u0103 aplica\u021bi imediat toate practicile pe toate proiectele - <b>ac\u021biona\u021bi iterativ<\/b>. Nu exist\u0103 un standard unic - <b>experimentati<\/b> \u0219i \u00eencerca\u021bi diferite abord\u0103ri \u0219i solu\u021bii.<\/p>\n<p><b>\u00centre defectele de securitate \u0219i defectele func\u021bionale exist\u0103 un semn de egalitate<\/b>.<\/p>\n<p><b>Automatiza\u021bi tot<\/b>, ce se mi\u0219c\u0103. Tot ce nu se mi\u0219c\u0103 - mi\u0219ca\u021bi \u0219i automatiza\u021bi. Dac\u0103 ceva se face manual, nu este o bun\u0103 parte a procesului. Ar putea merita s\u0103 analiza\u021bi \u0219i acest aspect \u0219i s\u0103-l automatiza\u021bi.<\/p>\n<p>Dac\u0103 dimensiunea echipei de securitate este mic\u0103 - <b>folosi\u021bi Security Champions<\/b>.<\/p>\n<p>Este posibil ca ceea ce am povestit s\u0103 nu vi se potriveasc\u0103 \u0219i s\u0103 crea\u021bi ceva propriu - \u0219i este bine. Dar\u00a0<b>alege\u021bi uneltele \u00een func\u021bie de cerin\u021bele procesului vostru specific<\/b>. Nu v\u0103 baza\u021bi pe ceea ce spune comunitatea, c\u0103 acest instrument este prost, iar cel\u0103lalt este bun. Este posibil ca, pentru produsul vostru, s\u0103 fie exact invers.<\/p>\n<p><b>Cerin\u021be pentru unelte.<\/b><\/p>\n<ul>\n<li>Un nivel sc\u0103zut de False Positive.\n<\/li>\n<li>Timp de analiz\u0103 adecvat.\n<\/li>\n<li>U\u0219urin\u021ba \u00een utilizare.\n<\/li>\n<li>Existen\u021ba integr\u0103rilor.\n<\/li>\n<li>\u00cen\u021belegerea foii de parcurs a dezvolt\u0103rii produsului.\n<\/li>\n<li>Posibilitatea de personalizare a uneltelor.\n<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p>Prezentarea lui Iuri a fost aleas\u0103 ca una dintre cele mai bune la DevOpsConf 2018. Pentru a descoperi \u0219i mai multe idei interesante \u0219i cazuri practice, veni\u021bi pe 27 \u0219i 28 mai \u00een Skolkovo la\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow-rit\/2019\">DevOpsConf<\/a><\/noindex> \u00een cadrul <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2019\">festivalului RIT++<\/a><\/noindex>. \u0218i ar fi \u0219i mai bine dac\u0103 sunte\u021bi preg\u0103ti\u021bi s\u0103 \u00eemp\u0103rt\u0103\u0219i\u021bi experien\u021ba voastr\u0103, atunci <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-rit\">trimite\u021bi o aplica\u021bie<\/a><\/noindex> pentru prezentare p\u00e2n\u0103 pe 21 aprilie.<\/p><\/blockquote>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/448488\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u00a0\u043d\u0430\u0441 \u0431\u044b\u043b\u043e 2\u00a0\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, 4\u00a0\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u0438\u00a0250\u00a0\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u041d\u0435\u00a0\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u00a0\u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043d\u043e\u00a0\u0440\u0430\u0437 \u043d\u0430\u0447\u0430\u043b \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c DevSecOps, \u0442\u043e \u043d\u0430\u0434\u043e\u00a0\u0438\u0434\u0438 \u0434\u043e\u00a0\u043a\u043e\u043d\u0446\u0430. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a. \u0410\u0432\u0442\u043e\u0440\u044b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439: \u0414\u0436\u0430\u0441\u0442\u0438\u043d \u0420\u043e\u0439\u043b\u0430\u043d\u0434 \u0438\u00a0\u0414\u044d\u043d \u0425\u0430\u0440\u043c\u043e\u043d. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 SecDevOps? \u0410\u00a0DevSecOps? \u0412\u00a0\u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u044f? Application Security\u00a0\u2014 \u043e\u00a0\u0447\u0451\u043c \u044d\u0442\u043e? \u041f\u043e\u0447\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442? \u041d\u0430\u00a0\u0432\u0441\u0435 \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0437\u043d\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442 \u042e\u0440\u0438\u0439 \u0428\u0430\u0431\u0430\u043b\u0438\u043d [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23720,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31852","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0423 \u043d\u0430\u0441 \u0431\u044b\u043b\u043e 2 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, 4 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u0438 250 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/strah-i-nenavist-devsecops\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0442\u0440\u0430\u0445 \u0438 \u043d\u0435\u043d\u0430\u0432\u0438\u0441\u0442\u044c DevSecOps | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423 \u043d\u0430\u0441 \u0431\u044b\u043b\u043e 2 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, 4 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u0438 250 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/strah-i-nenavist-devsecops\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:43:30+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:43:30+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Frica \u0219i ura DevSecOps | ProHoster","description":"Am avut 2 analizatori de cod, 4 unelte pentru testare dinamic\u0103, propriile noastre crea\u021bii \u0219i 250 de scripturi.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/strah-i-nenavist-devsecops","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0442\u0440\u0430\u0445 \u0438 \u043d\u0435\u043d\u0430\u0432\u0438\u0441\u0442\u044c DevSecOps | ProHoster","og:description":"\u0423 \u043d\u0430\u0441 \u0431\u044b\u043b\u043e 2 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, 4 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u0438 250 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/strah-i-nenavist-devsecops","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:43:30+00:00","article:modified_time":"2019-10-31T18:43:30+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31852","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 08:08:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:50:34","updated":"2026-01-21 08:08:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/31852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=31852"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/31852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/23720"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=31852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=31852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=31852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}