{"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\/sl\/blog\/administrirovanie\/strah-i-nenavist-devsecops","title":{"rendered":"Strah i mr\u017enja DevSecOps-a","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Imeli smo 2 analizatorja kode, 4 orodja za dinami\u010dno testiranje, svoje pripomo\u010dke in 250 skript. Ne, da bi bilo vse to potrebno v trenutnem procesu, ampak \u010de sem za\u010del uvajati DevSecOps, moram to narediti do konca.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" 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\">Source<\/a><\/noindex>. Avtorja likov: Justin Roiland in Dan Harmon.<\/i><\/p>\n<p>Kaj je SecDevOps? In DevSecOps? Kak\u0161ne so razlike? Varnost aplikacij - o \u010dem govorimo? Zakaj klasi\u010den pristop ne deluje ve\u010d? Na vse te vpra\u0161anja pozna odgovor <b>Juri \u0160abalin<\/b> iz\u00a0<b>Swordfish Security. <\/b>Juri bo podrobno odgovoril na vse in razlo\u017eil te\u017eave prehoda z klasi\u010dnega modela varnosti aplikacij na proces DevSecOps: kako pravilno pristopiti k vklju\u010ditvi procesa varnega razvoja v proces DevOps, ne da bi pri tem kaj uni\u010dili, kako preiti osnovne etape testiranja na varnost, katera orodja se lahko uporabljajo, kako se razlikujejo in kako jih pravilno nastaviti, da se izognemo podvodnim kamenjem.<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=\"Predvajaj 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>O govorniku:<\/b> <b>Juri \u0160abalin - <\/b>glavni arhitekt varnosti v podjetju <b>Swordfish Security<\/b>. Odgovoren za uvajanje SSDL, za splo\u0161no integracijo orodij za analizo aplikacij v enotno ekosistem razvoja in testiranja. 7 let izku\u0161enj na podro\u010dju informacijske varnosti. Delal je v Alfa-Banku, Sberbank in v Positive Technologies, ki razvija programsko opremo in nudi storitve. Govornik mednarodnih konferenc ZerONights, PHDays, RISSPA, OWASP.<\/p>\n<h2>Varnost aplikacij: o \u010dem govorimo?<\/h2>\n<p>\n<b>Varnost aplikacij<\/b>\u00a0je podro\u010dje varnosti, ki je odgovorno za varnost aplikacij. To se ne nana\u0161a na infrastrukturo ali mre\u017eno varnost, ampak natan\u010dno na to, kar pi\u0161emo in nad \u010dimer delajo razvijalci - to so pomanjkljivosti in ranljivosti same aplikacije.<\/p>\n<p>Usmeritev <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/ef\/ef6\/modeling\/designer\/advanced\/edmx\/ssdl-spec\">SDL ali SDLC<\/a><\/noindex>\u00a0\u2014 <b>Cikel razvoja varnosti<\/b>\u00a0je razvila dru\u017eba Microsoft. Na diagramu je kanoni\u010dni model SDLC, katerega glavni cilj je vklju\u010ditev varnosti v vsakem koraku razvoja, od zahtev do izdaje in prehoda v produkcijo. V Microsoftu so spoznali, da je v industriji preve\u010d napak, da jih je vse ve\u010d in da je treba nekaj storiti, ter predlagali ta pristop, ki je postal kanoni\u010den.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/466773b9a5bd355419fa1d6d1ddbca66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVarnost aplikacij in SSDL nista namenjena samo odkrivanju ranljivosti, kot se pogosto misli, temve\u010d prepre\u010devanju njihovega pojava. S \u010dasom je kanoni\u010dni pristop podjetja Microsoft izbolj\u0161an, razvit in v njem je pri\u0161lo do globljega podrobnega poglabljanja.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/58d3e6aadd30594c018940bcb2a8248b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKanonik SDLC je zelo podroben v razli\u010dnih metodologijah \u2013 OpenSAMM, BSIMM, OWASP. Metodologije se razlikujejo, vendar so na splo\u0161no podobne.<\/p>\n<h3>Model zrelosti za vklju\u010devanje varnosti<\/h3>\n<p>\nNajbolj mi je v\u0161e\u010d <b>BSIMM<\/b>\u00a0\u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bsimm.com\/\">Model zrelosti za vklju\u010devanje varnosti<\/a><\/noindex>. Osnova metodologije je razdelitev procesa Application Security na 4 dome: Upravljanje, Obve\u0161\u010danje, SSDL Touchpoints in Uvedba. V vsakem domu je 12 praks, predstavljenih v obliki 112 aktivnosti.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/ae0bbfd0dde335af886282672ed92367.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVsaka od 112 aktivnosti ima <b>3 stopnje zrelosti<\/b>: za\u010detna, srednja in napredna. Vse 12 praks je mogo\u010de raziskovati po razdelkih, izbirati pomembne za vas ter ugotoviti, kako jih uvesti in postopoma dodajati elemente, na primer, stati\u010dno in dinami\u010dno analizo kode ali pregled kode. Obrazlo\u017eite na\u010drt in po njem mirno delate v okviru uvajanja izbranih aktivnosti.<\/p>\n<h2>Zakaj DevSecOps<\/h2>\n<p><\/p>\n<blockquote><p>DevOps je skupen velik proces, v katerem je treba poskrbeti za varnost.<\/p><\/blockquote>\n<p>\nIzvorno <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DevOps\"><b>DevOps<\/b><\/a><\/noindex> predvidevala preverjanja varnosti. V praksi je bilo \u0161tevilo varnostnih ekip veliko manj\u0161e, kot je danes, in niso delovale kot udele\u017eenci procesa, temve\u010d kot nadzorni organ, ki postavlja zahteve in preverja kakovost izdelka na koncu izdaje. To je klasi\u010dni pristop, kjer so se ekipe za varnost nahajale za zidom razvoja in niso sodelovale v procesu.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/1c5958fb123313308bdd92c5471c44da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGlavni problem je prav to, da se IKT lo\u010duje od razvoja. Obi\u010dajno gre za nek kontur IKT, v katerem so 2-3 velika in draga orodja. Enkrat na \u0161est mesecev pride izvorna koda ali aplikacija, ki jo je treba preveriti, nato pa se enkrat na leto izvedejo <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\">pentesti<\/a><\/noindex>. Vse to pripelje do zamud pri izidu izdelkov, medtem ko se na razvijalca zgrne ogromno \u0161tevilo ranljivosti iz avtomatiziranih sredstev. Vsega tega ni mogo\u010de raz\u010distiti in popraviti, ker \u0161e prej\u0161njih \u0161est mesecev niso razjasnili rezultatov, zdaj pa je pri\u0161la nova serija.<\/p>\n<p>V procesu dela na\u0161e podjetja opa\u017eamo, da varnost v vseh sektorjih in industrijah razume, da je \u010das, da se za\u010dnejo prilagajati in se premikati z razvojem v istem kolesu \u2013 v\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 odli\u010dno prilega metodologiji agilnega razvoja, implementaciji, podpori in sodelovanju pri vsaki izdaji in iteraciji.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/cf258bd7efc82ff27787b5029cf2f945.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Prehod na DevSecOps<\/h2>\n<p>\nNajbolj pomembna beseda v Security Development Lifecycle je <b>\"proces\"<\/b>. Morate to razumeti pre nego \u0161to pomislite na kupovinu alata.<\/p>\n<blockquote><p>Samo uklju\u010divanje alata u DevOps proces nije dovoljno - va\u017eno je interakcija i razumevanje me\u0111u u\u010desnicima procesa.<\/p><\/blockquote>\n<p><\/p>\n<h3>Ljudi su va\u017eniji od alata<\/h3>\n<p>\n\u010cesto planiranje procesa sigurnog razvoja po\u010dinje izborom i kupovinom alata, a zavr\u0161ava poku\u0161ajima integracije alata u postoje\u0107i proces, koji ostaju samo poku\u0161aji. To vodi do tu\u017enih posledica, jer svaki alat ima svoje karakteristike i ograni\u010denja.<\/p>\n<p>Uobi\u010dajen slu\u010daj je kada odeljenje za sigurnost izabere dobar, skup alat sa \u0161irokim mogu\u0107nostima, i do\u0111e do programera - da ga integri\u0161u u proces. Ali ne ide - proces je postavljen tako da ograni\u010denja ve\u0107 kupljenog alata ne odgovaraju trenutnoj paradigmi.<\/p>\n<blockquote><p>Prvo opi\u0161ite koji rezultat \u017eelite i kako \u0107e izgledati proces. To \u0107e pomo\u0107i da se razumeju uloge alata i sigurnosti u procesu.<\/p><\/blockquote>\n<p><\/p>\n<h3>Po\u010dnite s onim \u0161to se ve\u0107 koristi<\/h3>\n<p>\nPre kupovine skupih alata, pogledajte \u0161ta ve\u0107 imate. U svakoj kompaniji postoje zahtevi za sigurnost koji se postavljaju pred razvoj, postoje provere, pentesti - za\u0161to ne bi sve to pretvorili u razumljiv i zgodan oblik za sve?<\/p>\n<p>Obi\u010dno su zahtevi - to je papirna hrpa koja le\u017ei na polici. Bio je slu\u010daj kada smo do\u0161li u kompaniju da pogledamo procese i tra\u017eili da poka\u017eu zahteve za sigurnost softvera. Specijalista koji se time bavio dugo je tra\u017eio:<\/p>\n<p><i>- Sada, negde u bele\u0161kama je putanja gde le\u017ei taj dokument.<\/i><\/p>\n<p>Na kraju smo dobili dokument nakon nedelju dana.<\/p>\n<p>Za zahteve, provere i ostalo, napravite stranicu, na primer, na\u00a0<b>Confluence<\/b>\u00a0\u2014 to je svima zgodno.<\/p>\n<blockquote><p>Lak\u0161e je preformatirati ono \u0161to ve\u0107 postoji i koristiti to kao polaznu ta\u010dku.<\/p><\/blockquote>\n<p><\/p>\n<h3>Koristite Security Champions <\/h3>\n<p>\nObi\u010dno, u prose\u010dnoj kompaniji sa 100-200 programera radi jedan stru\u010dnjak za sigurnost, koji obavlja nekoliko funkcija, i fizi\u010dki ne mo\u017ee sve da proveri. \u010cak i ako se trudi koliko mo\u017ee - ne mo\u017ee sam da proveri sav kod koji generi\u0161e razvoj. Za takve slu\u010dajeve razvijen je koncept - <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 so osebak znotraj razvojne ekipe, ki je zainteresiran za varnost va\u0161ega izdelka.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/c67728db4a6e34407da199387eba2bb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSecurity Champion je vstopna to\u010dka v razvojno ekipo in evangelist varnosti v enem.<\/p>\n<p>Obi\u010dajno, ko v razvojno ekipo pride varnostnik in poka\u017ee na napako v kodi, dobi presene\u010den odgovor:<\/p>\n<p><i>- Kdo ste pa vi? Vidim vas prvi\u010d. Pri meni je vse v redu - moj starej\u0161i kolega je na code review odobril, gremo naprej!<\/i><\/p>\n<p>To je tipi\u010dna situacija, saj imajo starej\u0161i ali enostavno kolegi iz ekipe, s katerimi razvijalec nepretrgoma sodeluje pri delu in code review, precej ve\u010d zaupanja. \u010ce namesto varnostnika na napako in posledice poka\u017ee Security Champion, bo njegova beseda imela ve\u010djo te\u017eo.<\/p>\n<p>Prav tako razvijalci bolje poznajo svojo kodo kot kateri koli varnostnik. \u010cloveku, ki ima vsaj 5 projektov v orodju za stati\u010dno analizo, je obi\u010dajno te\u017eko zapomniti vse podrobnosti. Security Champions poznajo svoj izdelek: kaj kjer sodeluje in na kaj se osredoto\u010diti najprej - so u\u010dinkovitej\u0161i.<\/p>\n<p>Zato razmislite o uvedbi Security Champions in raz\u0161iritvi vpliva varnostne ekipe. Za samega prvaka je to prav tako koristno: strokovni razvoj na novem podro\u010dju, \u0161iritev tehni\u010dnega obzorja, izbolj\u0161anje tehni\u010dnih, upravljalskih in vodstvenih sposobnosti, pove\u010danje tr\u017ene vrednosti. To je nekak\u0161na oblika socialne in\u017eeniringa, va\u0161e 'o\u010desi' v razvojni ekip.<\/p>\n<h2>Faze testiranja<\/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 na 80<\/a><\/noindex>\u00a0pravi, da 20% truda prina\u0161a 80% rezultata. Ta 20% so prakse analize aplikacij, ki jih lahko in jih je treba avtomatizirati. Primeri tak\u0161nih aktivnosti so stati\u010dna analiza - <b>SAST<\/b>, dinami\u010dna analiza - <b>DAST,<\/b> in\u00a0<b>nadzor odprtokodnega<\/b>. Povedal vam bom ve\u010d o aktivnostih, ter orodjih, s katerimi se obi\u010dajno sre\u010dujemo pri njihovi uvedbi v proces, in kako to izvesti pravilno.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/db720e0879cdd1ed818461ffb5f927da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Glavne te\u017eave z orodji<\/h3>\n<p>\nOzna\u010dil bom aktualne te\u017eave, ki se pojavljajo pri vseh orodjih in zahtevajo pozornost. Razdelil jih bom podrobneje, da se ne ponavljam.<\/p>\n<p><b>Dolgo trajanje analize. <\/b>\u010ce od commita do proizvodnje mine 30 minut za vse teste in zbiranje, bodo preverjanja informacijske varnosti trajala en dan. Nih\u010de ne bo zaviral procesa. Upo\u0161tevajte to posebnost in delajte sklepe.<\/p>\n<p><b>Visoka raven False Negative ali False Positive. <\/b>Vsi izdelki so razli\u010dni, vsi uporabljajo razli\u010dne ogrodja in svoj slog pisanja kode. Na razli\u010dni kodni osnovi in tehnologijah lahko orodja prika\u017eejo razli\u010dno raven False Negative in False Positive. Zato glejte, kaj to\u010dno v\u00a0<b>va\u0161i<\/b> podjetju in <b>za va\u0161e<\/b> aplikacije bo prikazalo dobre in zanesljive rezultate.<\/p>\n<p><b>Ni integracij z obstoje\u010dimi orodji<\/b>. Oglejte si orodja z vidika integracij, s tistim, kar \u017ee uporabljate. Na primer, \u010de imate Jenkins ali TeamCity - preverite integracijo orodij ravno s tem programom, in ne z GitLab CI, ki ga ne uporabljate.<\/p>\n<p><b>Pomanjkanje ali prekomerna zapletenost prilagoditev. <\/b>\u010ce orodje nima API-ja, zakaj bi ga potrebovali? Vse, kar lahko naredite v vmesniku, bi moralo biti dostopno prek API-ja. Idealno bi imelo orodje mo\u017enost prilagajanja preverjanj.<\/p>\n<p><b>Ni Roadmap razvoja produkta. <\/b>Razvoj ne stoji na mestu, vedno uporabljamo nove ogrodja in funkcije, staro kodo prepisujemo v nove jezike. \u017delimo biti prepri\u010dani, da bo orodje, ki ga kupimo, podpiralo nove ogrodja in tehnologije. Zato je pomembno vedeti, da ima izdelek realen in pravilen <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\">Na\u010drt<\/a><\/noindex> razvoj.<\/p>\n<h3>Posebnosti procesa<\/h3>\n<p>\nPoleg posebnosti orodij upo\u0161tevajte tudi posebnosti razvoja. Na primer, motenje razvoja je tipi\u010dna napaka. Poglejmo, katere druge posebnosti je treba upo\u0161tevati in na kaj mora ekipa za varnost dati pozornost.<\/p>\n<p>Da ne bi zamudili rokov razvoja in izdaje, ustvarite <b>razli\u010dna pravila<\/b> in razli\u010dne <b>show stoppers\u00a0<\/b>\u2014 kriteriji za zaustavitev procesa zbiranja v primeru ranljivosti \u2014 <b>za razli\u010dna okolja.<\/b>Na primer, razumemo, da trenutna veja gre na razvojno stojalo ali UAT, zato ne ustavljamo in ne re\u010demo:<\/p>\n<p><i>\u2014 Imate tukaj ranljivosti, ne boste \u0161li naprej!<\/i><\/p>\n<p>Na tej to\u010dki je pomembno, da razvijalcem poveste, da so prisotne varnostne te\u017eave, na katere je treba opozoriti.<\/p>\n<p><b>Prisotnost ranljivosti ni ovira za nadaljnje testiranje.<\/b>: ro\u010dnega, integracijskega ali manualnega. Po drugi strani pa moramo na nek na\u010din izbolj\u0161ati varnost izdelka, da razvijalci ne pozabijo na to, kar ugotovi varnost. Zato v\u010dasih ravnamo tako: na testnem okolju, ko se izda nova razli\u010dica, preprosto obvestimo razvojno skupino:<\/p>\n<p><i>\u2014 Fantje, imate te\u017eave, prosimo, posvetite jim pozornost.<\/i><\/p>\n<p>V fazi UAT ponovno prikazujemo opozorila o ranljivostih, medtem ko v fazi prehoda na produkcijo povemo:<\/p>\n<p><i>\u2014 Fantje, ve\u010dkrat smo vas opozorili, niste storili ni\u010desar \u2013 s tem vas ne bomo pustili ven.<\/i><\/p>\n<p>\u010ce govorimo o kodi in dinamiki, je treba prikazovati in opozarjati na ranljivosti samo tistih funkcij in kode, ki so bile pravkar napisane v tej funkciji. \u010ce je razvijalec premaknil gumb za 3 piksle in mu povemo, da ima tam SQL injekcijo in da jo mora nujno popraviti \u2013 to ni pravilno. Poglejte le na to, kar je zdaj napisano, in na spremembo, ki prihaja v aplikacijo.<\/p>\n<p>Recimo, da imamo nek funkcionalni defect \u2013 to, kako aplikacija ne bi smela delovati: sredstva se ne prenesejo, ob kliku na gumb ni prehoda na naslednjo stran ali izdelek se ne nalo\u017ei. <b>Varnostni defekti<\/b>\u00a0so enaki defektom, vendar ne v kontekstu delovanja aplikacije, temve\u010d varnosti. <\/p>\n<blockquote><p>Niso vse te\u017eave kvalitete programske opreme te\u017eave z varnostjo. Vendar so vse varnostne te\u017eave povezane s kakovostjo programske opreme. Sherif Mansour, Expedia.<\/p><\/blockquote>\n<p>\nKer so vse ranljivosti enaki defekti, morajo biti na istem mestu kot vsi defekti razvoja. Zato pozabite na poro\u010dila in stra\u0161ne PDF dokumente, ki jih nih\u010de ne bere.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/e54e64658a3882bdc68a48c6ef426746.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKo sem delal v podjetju, ki se ukvarja z razvojem, sem prejel poro\u010dilo iz orodij za stati\u010dno analizo. Odprl sem ga, se \u0161okiral, skuhal kavo, prelistal 350 strani, zaprl in \u0161el naprej delati. <b>Velika poro\u010dila so mrtva poro\u010dila<\/b>. Obi\u010dajno nikamor ne gredo, e-po\u0161ta se izbri\u0161e, pozabi, izgubi ali pa poslovanje pravi, da prevzema tveganja.<\/p>\n<p>Kaj narediti? Potrjeni napaki, ki smo jih odkrili, enostavno pretvorimo v obliko, primerno za razvoj, na primer jih uvrstimo v backlog v Jira. Napake prioritetiziramo in jih odpravljamo po vrstnem redu prednosti, skupaj s funkcionalnimi napakami in napakami testov.<\/p>\n<h2>Statisti\u010dna analiza - SAST<\/h2>\n<p>\n<b>To je analiza kode za prisotnost ranljivosti<\/b>, vendar to ni isto kot SonarQube. Preverjamo ne le po vzorcih ali slogu. Pri analizi se uporablja vrsta pristopov: po drevesu ranljivosti, po\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>, po analizi konfiguracijskih datotek. To je vse, kar se nana\u0161a neposredno na kodo.<\/p>\n<p><b>Prednosti pristopa<\/b>: <b>odkrivanje ranljivosti v kodi v zgodnji fazi razvoja<\/b>, ko \u0161e ni postavljenih okolij in kon\u010dnih orodij, ter<b>\u00a0mo\u017enost inkrementalnega skeniranja<\/b>: skeniranje dela kode, ki se je spremenilo, in samo funkcije, ki jo trenutno razvijamo, kar zmanj\u0161uje \u010das skeniranja.<\/p>\n<p><b>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438<\/b>\u00a0\u2014 to je odsotnost podpore potrebnim jeziku.<\/p>\n<p><b>Potrebne integracije, <\/b>ki bi morale biti v orodjih, po mojem subjektivnem mnenju:<\/p>\n<ul>\n<li>Integracijsko orodje: Jenkins, TeamCity in Gitlab CI.\n<\/li>\n<li>Razvojno okolje: Intellij IDEA, Visual Studio. Razvijalcu je la\u017eje ne iskati v nerazumljivem vmesniku, ki si ga je \u0161e treba zapomniti, ampak na svojem delovnem mestu v svojem razvojnem okolju videti vse potrebne integracije in ranljivosti, ki jih je odkril.\n<\/li>\n<li>Pregled kode: SonarQube in ro\u010dni pregled.\n<\/li>\n<li>Sledenje napakam: Jira in Bugzilla.\n<\/li>\n<\/ul>\n<p>\nNa sliki je nekaj najbolj\u0161ih predstavnikov stati\u010dne analize.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/bab3420874ac090d4d107edb0d2b857b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPomembni niso orodja, ampak proces, zato obstajajo Open Source re\u0161itve, ki so prav tako dobre za preizku\u0161anje procesa.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/4f2c278922c291b15922bc5748f87dc3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSAST Open Source ne bo na\u0161el ogromnega \u0161tevila ranljivosti ali zapletenih DataFlow, vendar jih je pri postavitvi procesa mogo\u010de in treba uporabljati. Pomagajo razumeti, kako bo postavljen proces, kdo bo odgovoren za napake, kdo jih bo poro\u010dal, kdo - poro\u010dal. \u010ce \u017eelite izvesti za\u010detno fazo postavitve varnosti va\u0161e kode - uporabite Open Source re\u0161itve.<\/p>\n<p>Kako to integrirati, \u010de ste na za\u010detku poti in nimate ni\u010desar: niti CI, niti Jenkins, niti TeamCity? Preglejmo integracije v proces.<\/p>\n<h3>Integracija na ravni CVS<\/h3>\n<p>\n\u010ce imate Bitbucket ali GitLab, lahko izvesti integracijo na ravni <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/CVS\">Concurrent Versions System<\/a><\/noindex>.<\/p>\n<p><b>Po dogodku<\/b>\u00a0\u2014 pull request, commit. Skenirate kodo in v statusu builda poka\u017eete, ali je pregled varnosti uspel ali ne.<\/p>\n<p><b>Povratne informacije. <\/b>Seveda, povratne informacije so vedno potrebne. \u010ce ste le izvedli nalogo na podro\u010dju varnosti, vse spakirali v \u0161katlo in nikomur ni\u010d povedali o tem, na koncu meseca pa nato izmeteli kup napak \u2013 to ni prav in ni dobro.<\/p>\n<h3>Integracija s sistemom za pregled kode<\/h3>\n<p>\nNeko\u010d smo v vrsti pomembnih projektov nastavili tehni\u010dnega uporabnika AppSec kot privzetega pregledovalca. Odvisno od tega, ali so bile napake ugotovljene v novem kodu ali ne, pregledovalec na pull requestu nastavi status na 'sprejeto' ali 'potrebuje delo' \u2013 ali je vse v redu, ali pa je potrebno dopolniti in dodati povezave, kaj to\u010dno je potrebno dopolniti. Za integracijo z razli\u010dico, ki gre v produkcijo, smo imeli vklju\u010den prepoved merah, \u010de testiranje varnosti ni bilo opravljeno. To smo vklju\u010devali v ro\u010dni pregled kode, ostali udele\u017eenci v procesu so videli statuse glede varnosti prav za ta specifi\u010den postopek.<\/p>\n<h3>Integracija s SonarQube<\/h3>\n<p>\nMnogi imajo <noindex><a rel=\"nofollow\" href=\"https:\/\/de.wikipedia.org\/wiki\/Quality_Gate\">quality gate<\/a><\/noindex> za kakovost kode. Tudi tukaj velja enako \u2013 mogo\u010de je narediti iste gates samo za orodja SAST. Imeli bomo isti vmesnik, isti quality gate, le da se bo imenoval <b>security gate<\/b>. In tako, \u010de imate nastavljen proces z uporabo SonarQube, lahko vse enostavno integrirate tja.<\/p>\n<h3>Integracija na ravni CI<\/h3>\n<p>\nTudi tukaj je vse kar preprosto:<\/p>\n<ul>\n<li><b>Na istem nivoju kot avtotesti<\/b>, enotni test.\n<\/li>\n<li><b>Razdelitev po fazah razvoja<\/b>: dev, test, prod. Morda vklju\u010duje razli\u010dne sklope pravil ali razli\u010dne pogoje neuspeha: ustavimo gradnjo, ne ustavimo gradnje.\n<\/li>\n<li><b>Sinhrono\/asinhrono izvajanje<\/b>. \u010cakamo na zaklju\u010dek preverjanja testov varnosti ali ne \u010dakamo. To pomeni, da smo jih le zagnali in \u0161li naprej, nato pa nam pride status, da je vse dobro ali slabo.\n<\/li>\n<\/ul>\n<p>\nTo je vse v idealnem ro\u017enatem svetu. V resni\u010dnem \u017eivljenju to ni tako, vendar se trudimo. Rezultat izvajanja varnostnih pregledov bi moral biti podoben rezultatom enotnih testov.<\/p>\n<p>Na primer, vzeli smo velik projekt in se odlo\u010dili, da ga bomo zdaj skenirali s SAST-om \u2014 OK. Ta projekt smo dali v SAST, rezultati pa so pokazali 20.000 ranljivosti, s trdno odlo\u010ditvijo smo sprejeli, da je vse v redu. 20.000 ranljivosti \u2014 to je na\u0161 tehni\u010dni dolg. Dolg bomo dali v \u0161katlo in po\u010dasi ga bomo razre\u0161evali ter odpravljali napake v orodjih za sledenje napakam. Najeli bomo podjetje, naredili bomo vse sami ali pa nam bodo pomagali Security Champions \u2014 in tehni\u010dni dolg se bo zmanj\u0161al.<\/p>\n<p>In vse nove ranljivosti v novem kodu morajo biti odpravljene na enak na\u010din kot napake v enotnih ali avto testih. Pogoja, da se je gradnja zagnala, so se pojavili dva testa in dva testa v zvezi z varnostjo. OK \u2014 smo \u0161li pogledat, kaj se je zgodilo, popravili eno, popravili drugo, naslednji\u010d smo zagnali \u2014 vse je v redu, novih ranljivosti ni, testi niso bili neuspe\u0161ni. \u010ce je ta naloga bolj zapletena in jo je treba dobro razumeti, ali pa popravilo ranljivosti zajema velike dele pod masko: odprli smo napako v orodju za sledenje napakam, ta se prioritizira in odpravi. \u017dal svet ni popoln in testiranja v\u010dasih odpadejo.<\/p>\n<p>Primer security gate \u2014 enakovreden quality gate, glede na prisotnost in \u0161tevilo ranljivosti v kodi.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/eb30d3c7988b28c2cb25e9656871ec96.png\" style=\"display:block;margin: 0 auto;\" \/>Integriramo z SonarQube \u2014 vti\u010dnik se namesti, vse je zelo udobno in super.<\/p>\n<h3>Integracija z razvojnim okoljem<\/h3>\n<p>\n<b>Mo\u017enosti integracije:<\/b><\/p>\n<ul>\n<li>Zagon skeniranja iz razvojnega okolja \u0161e pred commit.\n<\/li>\n<li>Pregled rezultatov.\n<\/li>\n<li>Analiza rezultatov.\n<\/li>\n<li>Sinhronizacija s stre\u017enikom.\n<\/li>\n<\/ul>\n<p>\nTako nekako izgleda pridobivanje rezultatov s stre\u017enika.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/270d4af76fddc0ceebca908c7d3835b8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV na\u0161em razvojnem okolju <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/idea\/\">Intellij IDEA<\/a><\/noindex> preprosto se pojavi dodatna to\u010dka, ki sporo\u010da, da so bile med skeniranjem odkrite tak\u0161ne ranljivosti. Takoj lahko popravite kodo, pregledate priporo\u010dila in\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_graph\">Flow Graph<\/a><\/noindex>. Vse to je na delovnem mestu razvijalca, kar je zelo priro\u010dno \u2014 ni vam treba hoditi na druge povezave in dodatno iskati kaj.<\/p>\n<h2>Open Source<\/h2>\n<p>\nTo je moja najljub\u0161a tema. Vsi uporabljajo Open Source biblioteke \u2014 zakaj pisati kup podpornih kod in koles, ko lahko vzamete \u017ee pripravljeno knji\u017enico, v kateri je vse \u017ee izvedeno?<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/05b9cd5a8b269af2a3f59931a0774778.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSeveda, to dr\u017ei, vendar so knji\u017enice tudi zapisane s strani ljudi, vsebujejo dolo\u010dena tveganja in vsebujejo ranljivosti, o katerih se ob\u010dasno ali stalno poro\u010da. Zato je naslednji korak v varnosti aplikacij analiza komponent odprte kode.<\/p>\n<h3>Analiza odprte kode \u2013 OSA<\/h3>\n<p>\nOrodje vklju\u010duje tri velike faze.<\/p>\n<p><b>Iskanje ranljivosti v knji\u017enicah. <\/b>Na primer, orodje ve, da uporabljamo dolo\u010deno knji\u017enico in da\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Common_Vulnerabilities_and_Exposures\">CVE<\/a><\/noindex> ali v bug trackerjih obstajajo ranljivosti, povezane s to razli\u010dico knji\u017enice. Ko posku\u0161amo uporabiti to knji\u017enico, orodje izda opozorilo, da je knji\u017enica ranljiva in priporo\u010da uporabo druge razli\u010dice, kjer ranljivosti ni.<\/p>\n<p><b>Analiza licen\u010dne \u010distosti. <\/b>Pri nas to \u0161e ni posebej priljubljeno, vendar \u010de delate s tujino, lahko ob\u010dasno dobite kazen za uporabo komponente z odprto kodo, ki je ne smete uporabljati ali spreminjati. V skladu s politiko licenciranja knji\u017enice tega ne smemo po\u010deti. Ali pa, \u010de smo jo spremenili in jo uporabljamo, moramo objaviti svojo kodo. Seveda nih\u010de no\u010de objaviti kode svojih izdelkov, vendar se pred tem lahko za\u0161\u010ditimo.<\/p>\n<p><b>Analiza komponent, ki se uporabljajo v industrijskem okolju. <\/b>Predstavljamo si hipotezo, da smo kon\u010dno kon\u010dali razvoj in izdali na\u0161 zadnji izdelek mikroservisa. Odli\u010dno deluje teden, mesec, leto. Je ne zbiramo, varnostne teste ne izvajamo, vse se zdi v redu. A nenadoma, dve tedni po izdaji, pride do kriti\u010dne ranljivosti v odprtokodni komponenti, ki jo uporabljamo v tej gradnji v proizvodnem okolju. \u010ce ne zapi\u0161emo, kaj in kje uporabljamo, te ranljivosti preprosto ne bomo opazili. Nekatera orodja omogo\u010dajo spremljanje ranljivosti v knji\u017enicah, ki se zdaj uporabljajo v proizvodnji. To je zelo koristno.<\/p>\n<p><b>Mogu\u0107nosti:<\/b><\/p>\n<ul>\n<li>Razli\u010dne politike za razli\u010dne faze razvoja.\n<\/li>\n<li>Spremljanje komponent v industrijskem okolju.\n<\/li>\n<li>Nadzor knji\u017enic v okviru organizacije.\n<\/li>\n<li>Podpora za razli\u010dne sisteme zbiranja in jezike.\n<\/li>\n<li>Analiza Docker slik.\n<\/li>\n<\/ul>\n<p>\nNekaj primerov vodilnih podjetij, ki se ukvarjajo z analizo odprte kode.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/f1b05f86beb4a64f9bf3443963e3603b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEden edini brezpla\u010den med njimi je <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/OWASP_Dependency_Check\">Dependency-Check<\/a><\/noindex> from OWASP. You can enable it in the early stages, see how it works and what it supports. Primarily, it covers all cloud products or on-premise, but their database is still sent online. They send not your libraries, but hashes or their computed values, and fingerprints to their server to get notified about vulnerabilities.<\/p>\n<h3>Integration into the process<\/h3>\n<p>\n<b>Library control within the perimeter<\/b>, which are downloaded from external sources. We have external and internal repositories. For example, within Event Central, there is Nexus, and we want there to be no vulnerabilities with a status of 'critical' or 'high' in our internal repository. Proxying can be configured using the Nexus Firewall Lifecycle tool to ensure such vulnerabilities are filtered out and do not enter the internal repository.<\/p>\n<p><b>Integration into CI<\/b>. At the same level as automated tests, unit tests, and phase separation in development: dev, test, prod. At each stage, any libraries can be downloaded and anything can be used, but if there is something severe with a status of 'critical', it may be worth bringing this to the developers' attention before going live.<\/p>\n<p><b>Integration with artifacts<\/b>: Nexus and JFrog.<\/p>\n<p><b>Integration into the development environment. <\/b>The tools you choose should integrate with development environments. Developers should have access to scanning results from their workstations, or the ability to scan and check the code for vulnerabilities before committing to CVS.<\/p>\n<p><b>Integration into CD. <\/b>This is a cool feature that I really like and have already talked about\u2014monitoring the emergence of new vulnerabilities in the production environment. It works roughly like this.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/605c638df343db5c47ab36b4dc00f41c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWe have <b>Public Component Repositories<\/b>\u00a0\u2014 neki alati vani i na\u0161 unutarnji repozitorij. \u017delimo da u njemu budu samo pouzdane komponente. Kada proksiramo zahtjev, provjeravamo da preuzeta biblioteka nema ranjivosti. Ako spada pod odre\u0111ene politike koje postavljamo i obavezno dogovaramo s razvojem, onda je ne preuzimamo i dolazi obavijest o kori\u0161tenju druge verzije. Tako\u0111er, ako u biblioteci postoji ne\u0161to stvarno kriti\u010dno i lo\u0161e, tada programer i na fazi instalacije ne\u0107e dobiti biblioteku \u2014 neka koristi verziju iznad ili ispod.<\/p>\n<ul>\n<li>Prilikom gradnje provjeravamo da nitko nije podmetnuo ni\u0161ta lo\u0161e, da su svi komponenti sigurni i da nitko nije donio ni\u0161ta opasno na USB-u.\n<\/li>\n<li>U repozitoriju imamo samo pouzdane komponente. \n<\/li>\n<li>Prilikom implementacije jo\u0161 jednom provjeravamo sam paket: war, jar, DL ili Docker sliku da li odgovara politici. \n<\/li>\n<li>Kada izlazimo u produkciju, pratimo \u0161to se doga\u0111a u industrijskom okru\u017eenju: pojavljuju li se ili ne pojavljuju kriti\u010dne ranjivosti.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Dinami\u010dka analiza \u2014 DAST<\/h2>\n<p>\nAlati za dinami\u010dku analizu se drasti\u010dno razlikuju od svega \u0161to je ranije re\u010deno. Ovo je neka simulacija rada korisnika s aplikacijom. Ako je to web aplikacija, \u0161aljemo zahtjeve, imituju\u0107i rad klijenta, klikamo na gumbe na prednjem dijelu, \u0161aljemo umjetne podatke iz obrasca: navodnike, zagrade, simbole u razli\u010ditim kodiranjima, kako bismo vidjeli kako aplikacija radi i obra\u0111uje vanjske podatke.<\/p>\n<p>Ovaj sustav tako\u0111er omogu\u0107ava provjeru standardnih ranjivosti u otvorenom kodu. Budu\u0107i da DAST ne zna koji otvoreni kod koristimo, jednostavno prikazuje \"zlonamjerne\" uzorke i analizira odgovore servera:<\/p>\n<p><i>\u2014 Aha, ovdje postoji problem deserializacije, a ovdje nema.<\/i><\/p>\n<p>U tome postoji veliki rizik, jer ako provodite ovaj test sigurnosti na istom okru\u017eenju s kojim rade testeri \u2014 mogu se dogoditi neugodne stvari.<\/p>\n<ul>\n<li>Visoka optere\u0107enja na mre\u017enom serveru aplikacije.\n<\/li>\n<li>Nema integracija.\n<\/li>\n<li>Mogu\u0107nost promjene postavki analizirane aplikacije.\n<\/li>\n<li>Nema podr\u0161ke za potrebne tehnologije.\n<\/li>\n<li>Slo\u017eenost pode\u0161avanja.\n<\/li>\n<\/ul>\n<p>\nImeli smo situacijo, ko smo kon\u010dno zagnali AppScan: dolgo smo se trudili pridobiti dostop do aplikacije, dobili 3 ra\u010dune in se razveselili - kon\u010dno bomo vse preverili! Zagnali smo skeniranje in prvo, kar je naredil AppScan - se je povzpel v administracijski panel, preizkusil vse gumbe, spremenil polovico podatkov, nato pa je celo ubil stre\u017enik s svojim <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mailform.io\/\">mailform<\/a><\/noindex>-zahtevami. Razvoj s testiranjem je rekel:<\/p>\n<p><i>- Fantje, nor\u010dujete se?! Dali smo vam ra\u010dune, vi pa ste uni\u010dili stalno okolje!<\/i><\/p>\n<p>Upo\u0161tevajte morebitna tveganja. V idealnem primeru pripravite lo\u010deno okolje za testiranje varnosti, ki bo vsaj nekoliko izolirano od drugega okolja, in administracijo preverjajte raje v ro\u010dnem na\u010dinu. To je pentest - tisti preostali odstotki truda, ki jih trenutno ne obravnavamo. <\/p>\n<p>Treba je upo\u0161tevati, da lahko to uporabimo kot alternativo obremenitvenemu testiranju. V prvi fazi lahko aktivirate dinami\u010dni skener v 10-15 tokov in pogledate, kaj se zgodi, vendar obi\u010dajno praksa poka\u017ee, da ne prinese ni\u010d dobrega.<\/p>\n<p>Nekaj virov, ki jih obi\u010dajno uporabljamo.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/45a25dbe2a2d053e6ed16d31b6ac53ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIzpostaviti je treba <noindex><a rel=\"nofollow\" href=\"https:\/\/portswigger.net\/burp\">Burp Suite<\/a><\/noindex>\u00a0- to je '\u0161vicarski no\u017e' za vsakega strokovnjaka za varnost. Vsi ga uporabljajo in je zelo priro\u010den. Sedaj je iz\u0161la nova demo razli\u010dica enterprise edition. \u010ce je prej to bila le samostojna orodja s plugin-i, so zdaj kon\u010dno razvijalci naredili velik stre\u017enik, s katerega bo mogo\u010de upravljati ve\u010d agentov. To je super, priporo\u010dam, da preizkusite.<\/p>\n<h3>Integration into the process<\/h3>\n<p>\nIntegracija poteka dovolj dobro in preprosto: <b>zagon skeniranja po uspe\u0161ni namestitvi <\/b>aplikacije na okolju in\u00a0<b>skeniranje po uspe\u0161no opravljenem integracijskem testiranju<\/b>.<\/p>\n<p>\u010ce integracije ne delujejo ali so tam le nadomestki in mock-funkcije, je to brezsmiselno in brezpredmetno - karkoli vzorec po\u0161ljemo, bo stre\u017enik enako odgovarjal.<\/p>\n<ul>\n<li>Idealno je lo\u010deno okolje za testiranje.\n<\/li>\n<li>Pred za\u010detkom testiranja zapi\u0161ite zaporedje prijave.\n<\/li>\n<li>Testiranje sistema upravljanja - le ro\u010dno.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Postopek<\/h2>\n<p>\nMalo splo\u0161no o procesu na splo\u0161no in o delovanju vsakega orodja posebej. Vse aplikacije so razli\u010dne - pri eni bolje deluje dinami\u010dna analiza, pri drugi stati\u010dna, pri tretji analiza OpenSource, pentesti ali sploh kaj drugega, na primer dogodki z.\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Waf\">Waf<\/a><\/noindex>.<\/p>\n<blockquote><p>Vsak proces potrebuje nadzor.<\/p><\/blockquote>\n<p>\nDa bi razumeli, kako proces deluje in kje ga je mogo\u010de izbolj\u0161ati, je treba zbirati metrike iz vsega, kar je mogo\u010de dose\u010di, vklju\u010dno s proizvodnimi metrikami, metrikami orodij in iz sledilnikov napak.<\/p>\n<p>Vsaki podatki so koristni. Treba je gledati z razli\u010dnih vidikov, kje se bolje uporablja tisto ali drugo orodje, kje proces konkretno ni u\u010dinkovit. Morda bi bilo smiselno pogledati na \u010das odziva razvoja, da bi razumeli, kje izbolj\u0161ati proces na podlagi \u010dasa. Ve\u010d podatkov, ve\u010d vidikov lahko zgradimo od splo\u0161nih do podrobnosti vsakega procesa.<\/p>\n<p><img decoding=\"async\" alt=\"Strah i mr\u017enja DevSecOps-a\" src=\"\/wp-content\/uploads\/2019\/04\/93e079b19c4c8189ce6ca4eaec186eed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKer imajo vsi stati\u010dni in dinami\u010dni analizatorji svoja API, svoje na\u010dine zagonov in na\u010dela, nekateri imajo na\u010drtovalnike, drugi ne \u2013 mi razvijamo orodje <b>AppSec Orkestrator<\/b>, ki omogo\u010da enotno to\u010dko dostopa do celotnega procesa izdelave in upravljanje iz enega mesta.<\/p>\n<p>Za managerje, razvijalce in in\u017eenirje varnosti je ena sama to\u010dka dostopa, iz katere lahko pogledajo, kaj je zagnano, nastavijo in zagnajo skeniranje, dobijo rezultate skeniranja in postavijo zahteve. Trudimo se, da bi se izognili papirjem in vse prevedli v \u010dlove\u0161ki jezik, ki ga uporablja razvoj \u2013 strani na Confluence z statusi in metri\u010dnimi podatki, napake v Jira ali v razli\u010dnih sledilnikih napak, ali pa vgraditev v sinhroni\/asinhroni proces v CI\/CD.<\/p>\n<h2>Klju\u010dna sporo\u010dila<\/h2>\n<p>\n<b>Orodja niso glavna.<\/b> Najprej premislite o procesu \u2013 nato uvedite orodja. Orodja so primerna, a draga, zato lahko za\u010dnete s procesom in nastavite sodelovanje ter razumevanje med razvojem in varnostjo. Z vidika varnosti \u2013 ne bi smeli \"ustavljati\" vsega, kar pride na uho, z vidika razvoja \u2013 \u010de je kaj izjemno kriti\u010dnega, je to treba re\u0161iti, ne pa prezreti.<\/p>\n<p><b>Kakovost izdelka<\/b>\u00a0<b>je skupni cilj<\/b> tako za varnost kot razvoj. Dela uresni\u010dujemo isto, trudimo se, da vse pravilno deluje, ter se izognemo tveganju za sloves in finan\u010dnim izgubam. Prav zato spodbujamo pristop k DevSecOps in SecDevOps, da bi izbolj\u0161ali komunikacijo in naredili izdelek bolj kakovosten.<\/p>\n<p><b>Za\u010dnite s tem, kar \u017ee imate.<\/b>: zahteve, arhitektura, parcialne provjere, obuke, smjernice. Nije potrebno odmah primijeniti sve prakse na sve projekte \u2014 <b>napredujte iterativno<\/b>. Ne postoji jedinstveni standard \u2014 <b>eksperimentirajte<\/b> i isprobavajte razli\u010dite pristupe i rje\u0161enja.<\/p>\n<p><b>Izme\u0111u nedostataka IB i funkcionalnih nedostataka postoji znak jednakosti<\/b>.<\/p>\n<p><b>Automatizirajte sve<\/b>, \u0161to se pomi\u010de. Sve \u0161to se ne pomi\u010de \u2014 pokrenite i automatizirajte. Ako se ne\u0161to radi ru\u010dno, to nije dobar dio procesa. Mo\u017eda bi ga trebalo preispitati i tako\u0111e automatizirati.<\/p>\n<p>Ako je veli\u010dina tima IB mala \u2014 <b>koristite Security Champions<\/b>.<\/p>\n<p>Mo\u017eda to o \u010demu sam govorio ne\u0107e odgovarati vama i smi\u0161ljate ne\u0161to svoje \u2014 i to je dobro. Ali\u00a0<b>birajte alate, uzimaju\u0107i u obzir zahtjeve svog procesa<\/b>. Ne slu\u0161ajte \u0161ta zajednica govori, da je ovaj alat lo\u0161, a taj dobar. Mo\u017eda, na va\u0161em proizvodu, sve \u0107e ispasti obrnuto.<\/p>\n<p><b>Zahtjevi za alate.<\/b><\/p>\n<ul>\n<li>Nizak nivo False Positive.\n<\/li>\n<li>Razuman vrijeme analize.\n<\/li>\n<li>Jednostavnost kori\u0161tenja.\n<\/li>\n<li>Prisutnost integracija.\n<\/li>\n<li>Razumijevanje Roadmap-a razvoja proizvoda.\n<\/li>\n<li>Mogu\u0107nost prilagodbe alata.\n<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p>Izlaganje Jurija izabrano je kao jedno od najboljih na DevOpsConf 2018. Da biste se upoznali s jo\u0161 ve\u0107im brojem zanimljivih ideja i prakti\u010dnih slu\u010dajeva, do\u0111ite 27. i 28. maja u Skolkovo na\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow-rit\/2019\">DevOpsConf<\/a><\/noindex> u okviru <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2019\">festivala RIT++<\/a><\/noindex>. A jo\u0161 bolje, ako ste spremni dijeliti svoje iskustvo, tada <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-rit\">po\u0161aljite prijavu<\/a><\/noindex> za izlaganje do 21. aprila.<\/p><\/blockquote>\n<p>Izvor: <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.4 - 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\/sl\/blog\/administrirovanie\/strah-i-nenavist-devsecops\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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\/sl\/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\udd47Strah i mr\u017enja DevSecOps | ProHoster","description":"Imali smo 2 analizatora koda, 4 alata za dinami\u010dko testiranje, na\u0161e proizvode i 250 skripti.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/strah-i-nenavist-devsecops","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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\/sl\/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\/sl\/wp-json\/wp\/v2\/posts\/31852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=31852"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/31852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/23720"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=31852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=31852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=31852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}