{"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\/cs\/blog\/administrirovanie\/strah-i-nenavist-devsecops","title":{"rendered":"Strach a nen\u00e1vist DevSecOps","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>M\u011bli jsme 2 analyz\u00e1tory k\u00f3du, 4 n\u00e1stroje pro dynamick\u00e9 testov\u00e1n\u00ed, sv\u00e9 vlastn\u00ed projekty a 250 skript\u016f. Nen\u00ed to, \u017ee by to v\u0161echno bylo pot\u0159ebn\u00e9 v sou\u010dasn\u00e9m procesu, ale kdy\u017e jsme za\u010dali zav\u00e1d\u011bt DevSecOps, je t\u0159eba to dot\u00e1hnout do konce.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist 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\">Zdroj<\/a><\/noindex>. Auto\u0159i postav: Justin Roiland a Dan Harmon.<\/i><\/p>\n<p>Co je to SecDevOps? A DevSecOps? Jak\u00e9 jsou rozd\u00edly? Bezpe\u010dnost aplikac\u00ed \u2013 co to je? Pro\u010d klasick\u00fd p\u0159\u00edstup u\u017e nefunguje? Na v\u0161echny tyto ot\u00e1zky zn\u00e1 odpov\u011b\u010f <b>Jurij \u0160abalin<\/b> z\u00a0<b>Swordfish Security. <\/b>Jurij podrobn\u011b odpov\u00ed na v\u0161e a probere probl\u00e9my p\u0159echodu od klasick\u00e9ho modelu bezpe\u010dnosti aplikac\u00ed k procesu DevSecOps: jak spr\u00e1vn\u011b vbudovat proces bezpe\u010dn\u00e9ho v\u00fdvoje do procesu DevOps a nic p\u0159i tom neporu\u0161it, jak proj\u00edt hlavn\u00edmi etapami testov\u00e1n\u00ed na bezpe\u010dnost, jak\u00e9 n\u00e1stroje lze pou\u017e\u00edt, \u010d\u00edm se li\u0161\u00ed a jak je spr\u00e1vn\u011b nastavit, aby se zabr\u00e1nilo p\u0159ek\u00e1\u017ek\u00e1m.<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=\"P\u0159ehr\u00e1t 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 speakerovi:<\/b> <b>Jurij \u0160abalin \u2013 <\/b>Chief Security Architect ve spole\u010dnosti <b>Swordfish Security<\/b>. Odpov\u00edd\u00e1 za zaveden\u00ed SSDL, za celkovou integraci n\u00e1stroj\u016f pro anal\u00fdzu aplikac\u00ed do jedin\u00e9 ekosyst\u00e9mu v\u00fdvoje a testov\u00e1n\u00ed. 7 let zku\u0161enost\u00ed v oblasti informa\u010dn\u00ed bezpe\u010dnosti. Pracoval v Alfa-Banku, Sberbank a v Positive Technologies, kter\u00e1 vyv\u00edj\u00ed software a poskytuje slu\u017eby. Speaker na mezin\u00e1rodn\u00edch konferenc\u00edch ZerONights, PHDays, RISSPA, OWASP.<\/p>\n<h2>Bezpe\u010dnost aplikac\u00ed: co to je?<\/h2>\n<p>\n<b>Bezpe\u010dnost aplikac\u00ed<\/b>\u00a0\u2013 to je oblast bezpe\u010dnosti, kter\u00e1 se zam\u011b\u0159uje na bezpe\u010dnost aplikac\u00ed. To se net\u00fdk\u00e1 infrastruktury nebo s\u00ed\u0165ov\u00e9 bezpe\u010dnosti, ale toho, co p\u00ed\u0161eme a na \u010dem pracuj\u00ed v\u00fdvoj\u00e1\u0159i \u2013 to jsou nedostatky a zranitelnosti samotn\u00e9 aplikace.<\/p>\n<p>Oblast <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/ef\/ef6\/modeling\/designer\/advanced\/edmx\/ssdl-spec\">SDL nebo SDLC<\/a><\/noindex>\u00a0\u2014 <b>Security development lifecycle<\/b>\u00a0\u2013 vyvinula spole\u010dnost Microsoft. Na sch\u00e9matu je kanonick\u00fd model SDLC, jeho\u017e hlavn\u00edm \u00fakolem je \u00fa\u010dast bezpe\u010dnosti v ka\u017ed\u00e9 f\u00e1zi v\u00fdvoje, od po\u017eadavk\u016f a\u017e po uvoln\u011bn\u00ed do produkce. V Microsoftu si uv\u011bdomili, \u017ee v produktech je p\u0159\u00edli\u0161 mnoho chyb, \u017ee jich st\u00e1le p\u0159ib\u00fdv\u00e1 a je t\u0159eba s t\u00edm n\u011bco d\u011blat, a navrhli tento p\u0159\u00edstup, kter\u00fd se stal kanonick\u00fdm.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/466773b9a5bd355419fa1d6d1ddbca66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBezpe\u010dnost aplikac\u00ed a SSDL nesm\u011b\u0159uj\u00ed k odhalov\u00e1n\u00ed zranitelnost\u00ed, jak se \u010dasto myln\u011b p\u0159edpokl\u00e1d\u00e1, ale k prevenci jejich vzniku. \u010casem byl kanonick\u00fd p\u0159\u00edstup od Microsoftu vylep\u0161en a rozvinut, do\u0161lo k hlub\u0161\u00edmu detailn\u00edmu vniknut\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/58d3e6aadd30594c018940bcb2a8248b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKanonick\u00fd SDLC je podrobn\u011b rozpracov\u00e1n v r\u016fzn\u00fdch metodologi\u00edch \u2013 OpenSAMM, BSIMM, OWASP. Metodologie se li\u0161\u00ed, ale celkov\u011b si jsou podobn\u00e9.<\/p>\n<h3>Model zralosti vybudov\u00e1n\u00ed zabezpe\u010den\u00ed<\/h3>\n<p>\nNejv\u00edce mi vyhovuje <b>BSIMM<\/b>\u00a0\u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bsimm.com\/\">Model zralosti vybudov\u00e1n\u00ed zabezpe\u010den\u00ed<\/a><\/noindex>. Z\u00e1kladem metodologie je rozd\u011blen\u00ed procesu aplikovan\u00e9 bezpe\u010dnosti do 4 dom\u00e9n: Governance, Intelligence, SSDL Touchpoints a Deployment. V ka\u017ed\u00e9 dom\u00e9n\u011b je 12 praktik, kter\u00e9 jsou prezentov\u00e1ny jako 112 aktivit.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/ae0bbfd0dde335af886282672ed92367.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKa\u017ed\u00e1 z 112 aktivit m\u00e1 <b>3 \u00farovn\u011b zralosti<\/b>: z\u00e1kladn\u00ed, st\u0159edn\u00ed a pokro\u010dil\u00e1. V\u0161echny 12 praktik lze studovat podle sekc\u00ed, vyb\u00edrat si d\u016fle\u017eit\u00e9 v\u011bci pro v\u00e1s, zkoumat, jak je implementovat a postupn\u011b p\u0159id\u00e1vat prvky, nap\u0159\u00edklad statickou a dynamickou anal\u00fdzu k\u00f3du nebo code review. Napl\u00e1nujete si pl\u00e1n a podle n\u011bj klidn\u011b pracujete v r\u00e1mci implementace vybran\u00fdch aktivit.<\/p>\n<h2>Pro\u010d DevSecOps<\/h2>\n<p><\/p>\n<blockquote><p>DevOps je komplexn\u00ed proces, ve kter\u00e9m je t\u0159eba db\u00e1t na bezpe\u010dnost.<\/p><\/blockquote>\n<p>\nP\u016fvodn\u011b <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DevOps\"><b>DevOps<\/b><\/a><\/noindex> p\u0159edpokl\u00e1dal kontroly na bezpe\u010dnost. V praxi byla po\u010detn\u00ed s\u00edla bezpe\u010dnostn\u00edch t\u00fdm\u016f mnohem men\u0161\u00ed, ne\u017e je dnes, a fungovali jako kontroln\u00ed a dozorov\u00fd org\u00e1n, kter\u00fd klade po\u017eadavky a kontroluje kvalitu produktu na konci vyd\u00e1n\u00ed. To je klasick\u00fd p\u0159\u00edstup, kde byly bezpe\u010dnostn\u00ed t\u00fdmy odd\u011bleny od v\u00fdvoje a neparticipovaly na procesu.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/1c5958fb123313308bdd92c5471c44da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHlavn\u00edm probl\u00e9mem je, \u017ee kybernetick\u00e1 bezpe\u010dnost je odd\u011blen\u00e1 od v\u00fdvoje. Obvykle je to n\u011bjak\u00fd obrys kybernetick\u00e9 bezpe\u010dnosti a v n\u011bm 2-3 velk\u00e9 a drah\u00e9 n\u00e1stroje. Jednou za p\u016fl roku doraz\u00ed zdrojov\u00fd k\u00f3d nebo aplikace, kterou je t\u0159eba zkontrolovat, a jednou ro\u010dn\u011b prob\u00edhaj\u00ed <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\">penetra\u010dn\u00ed testy<\/a><\/noindex>. To v\u0161echno vede k tomu, \u017ee term\u00edny uveden\u00ed do produkce se prodlu\u017euj\u00ed a na v\u00fdvoj\u00e1\u0159e se hromad\u00ed obrovsk\u00e9 mno\u017estv\u00ed zranitelnost\u00ed z automatizovan\u00fdch prost\u0159edk\u016f. To v\u0161e je nemo\u017en\u00e9 rozebrat a opravit, proto\u017ee je\u0161t\u011b za p\u0159edchoz\u00edch \u0161est m\u011bs\u00edc\u016f nebyly zpracov\u00e1ny v\u00fdsledky, a nyn\u00ed je tu nov\u00e1 v\u00e1rka.<\/p>\n<p>V procesu pr\u00e1ce na\u0161\u00ed spole\u010dnosti vid\u00edme, \u017ee bezpe\u010dnost ve v\u0161ech oborech a odv\u011btv\u00edch si uv\u011bdomuje, \u017ee je \u010das se zlep\u0161ovat a spolupracovat s v\u00fdvojem jako jeden celek \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 skv\u011ble zapad\u00e1 do metodologie agiln\u00edho v\u00fdvoje, b\u011bhem implementace, podpory a \u00fa\u010dasti v ka\u017ed\u00e9m vyd\u00e1n\u00ed a iteraci.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/cf258bd7efc82ff27787b5029cf2f945.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>P\u0159echod na DevSecOps<\/h2>\n<p>\nNejd\u016fle\u017eit\u011bj\u0161\u00ed slovo v Security Development Lifecycle je <b>\"proces\"<\/b>Mus\u00edte to pochopit, ne\u017e za\u010dnete uva\u017eovat o koupi n\u00e1stroj\u016f.<\/p>\n<blockquote><p>Pouh\u00e9 za\u0159azen\u00ed n\u00e1stroj\u016f do procesu DevOps nesta\u010d\u00ed - d\u016fle\u017eit\u00e9 je zapojen\u00ed a pochopen\u00ed mezi \u00fa\u010dastn\u00edky procesu.<\/p><\/blockquote>\n<p><\/p>\n<h3>D\u016fle\u017eit\u011bj\u0161\u00ed jsou lid\u00e9, nikoli n\u00e1stroje.<\/h3>\n<p>\n\u010casto pl\u00e1nov\u00e1n\u00ed procesu bezpe\u010dn\u00e9ho v\u00fdvoje za\u010d\u00edn\u00e1 v\u00fdb\u011brem a koup\u00ed n\u00e1stroje a kon\u010d\u00ed pokusy o integraci n\u00e1stroje do st\u00e1vaj\u00edc\u00edho procesu, kter\u00e9 z\u016fst\u00e1vaj\u00ed jen pokusy. To vede k smutn\u00fdm n\u00e1sledk\u016fm, proto\u017ee ka\u017ed\u00fd n\u00e1stroj m\u00e1 sv\u00e9 specifick\u00e9 vlastnosti a omezen\u00ed.<\/p>\n<p>B\u011b\u017en\u00fd p\u0159\u00edpad je, kdy\u017e bezpe\u010dnostn\u00ed odd\u011blen\u00ed vybere dobr\u00fd, drah\u00fd n\u00e1stroj s \u0161irok\u00fdmi mo\u017enostmi a p\u0159ich\u00e1z\u00ed k v\u00fdvoj\u00e1\u0159\u016fm, aby ho za\u010dlenili do procesu. Ale nefunguje to - proces je nastaven tak, \u017ee omezen\u00ed ji\u017e zakoupen\u00e9ho n\u00e1stroje neodpov\u00edd\u00e1 aktu\u00e1ln\u00ed paradigm\u011b.<\/p>\n<blockquote><p>Nejprve popi\u0161te, jak\u00fd v\u00fdsledek chcete a jak bude proces vypadat. To pom\u016f\u017ee pochopit roli n\u00e1stroje a bezpe\u010dnosti v procesu.<\/p><\/blockquote>\n<p><\/p>\n<h3>Za\u010dn\u011bte s t\u00edm, co ji\u017e pou\u017e\u00edv\u00e1te.<\/h3>\n<p>\nP\u0159ed koup\u00ed drah\u00fdch n\u00e1stroj\u016f se pod\u00edvejte na to, co ji\u017e m\u00e1te. V ka\u017ed\u00e9 spole\u010dnosti existuj\u00ed po\u017eadavky na bezpe\u010dnost, kter\u00e9 se vztahuj\u00ed na v\u00fdvoj, jsou tu audity, penetra\u010dn\u00ed testy - pro\u010d to cel\u00e9 nep\u0159etavit do srozumiteln\u00e9ho a u\u017eivatelsky p\u0159\u00edv\u011btiv\u00e9ho form\u00e1tu?<\/p>\n<p>Obvykle jsou po\u017eadavky jen pap\u00edrov\u00fd svazek, kter\u00fd le\u017e\u00ed na polici. Byla situace, kdy jsme p\u0159i\u0161li do spole\u010dnosti, abychom prozkoumali procesy, a po\u017e\u00e1dali jsme o uk\u00e1z\u00e1n\u00ed po\u017eadavk\u016f na bezpe\u010dnost software. Odborn\u00edk, kter\u00fd to m\u011bl na starosti, dlouho hledal:<\/p>\n<p><i>\u2014 Moment, n\u011bkde v pozn\u00e1mk\u00e1ch byl odkaz, kde le\u017e\u00ed tento dokument.<\/i><\/p>\n<p>Nakonec jsme dokument dostali po t\u00fddnu.<\/p>\n<p>Pro po\u017eadavky, audity a dal\u0161\u00ed v\u011bci vytvo\u0159te str\u00e1nku, nap\u0159\u00edklad na\u00a0<b>Confluence<\/b>\u00a0\u2014 je to pohodln\u00e9 pro v\u0161echny.<\/p>\n<blockquote><p>Je snaz\u0161\u00ed p\u0159eform\u00e1tovat to, co u\u017e existuje, a pou\u017e\u00edt to jako z\u00e1klad.<\/p><\/blockquote>\n<p><\/p>\n<h3>Vyu\u017eijte Security Champions. <\/h3>\n<p>\nObvykle v pr\u016fm\u011brn\u00e9 firm\u011b s 100-200 v\u00fdvoj\u00e1\u0159i pracuje jeden bezpe\u010dnostn\u00ed specialista, kter\u00fd vykon\u00e1v\u00e1 n\u011bkolik funkc\u00ed a fyzicky nest\u00edh\u00e1 v\u0161e kontrolovat. I kdy\u017e se sna\u017e\u00ed ze v\u0161ech sil, s\u00e1m nezvl\u00e1dne zkontrolovat cel\u00fd k\u00f3d, kter\u00fd v\u00fdvoj generuje. Pro takov\u00e9 p\u0159\u00edpady byl vyvinut 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 jsou lid\u00e9 uvnit\u0159 t\u00fdmu v\u00fdvoje, kte\u0159\u00ed maj\u00ed z\u00e1jem o bezpe\u010dnost va\u0161eho produktu.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/c67728db4a6e34407da199387eba2bb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSecurity Champion je vstupn\u00ed bod do t\u00fdmu v\u00fdvoje a evangelista bezpe\u010dnosti v jedn\u00e9 osob\u011b.<\/p>\n<p>Obvykle, kdy\u017e do t\u00fdmu v\u00fdvoje p\u0159ijde bezpe\u010dnostn\u00ed expert a upozorn\u00ed na chybu v k\u00f3du, dostane p\u0159ekvapenou odpov\u011b\u010f:<\/p>\n<p><i>\u2014 A vy kdo? Vid\u00edm v\u00e1s poprv\u00e9. U m\u011b je v\u0161e v po\u0159\u00e1dku \u2014 m\u016fj star\u0161\u00ed kolega na code review dal \u201eapply\u201c, pokra\u010dujeme d\u00e1l!<\/i><\/p>\n<p>To je typick\u00e1 situace, proto\u017ee ke star\u0161\u00edm nebo prost\u011b koleg\u016fm z t\u00fdmu, se kter\u00fdmi v\u00fdvoj\u00e1\u0159 pravideln\u011b spolupracuje v r\u00e1mci pr\u00e1ce a code review, je mnohem v\u011bt\u0161\u00ed d\u016fv\u011bra. Pokud m\u00edsto bezpe\u010dnostn\u00edho experta na chybu a jej\u00ed d\u016fsledky upozorn\u00ed Security Champion, jeho slovo bude m\u00edt v\u011bt\u0161\u00ed v\u00e1hu.<\/p>\n<p>Tak\u00e9 v\u00fdvoj\u00e1\u0159i l\u00e9pe znaj\u00ed sv\u016fj k\u00f3d ne\u017e jak\u00fdkoli bezpe\u010dnostn\u00ed expert. Pro \u010dlov\u011bka, kter\u00fd m\u00e1 minim\u00e1ln\u011b 5 projekt\u016f v n\u00e1stroji pro statickou anal\u00fdzu, je obvykle obt\u00ed\u017en\u00e9 pamatovat si v\u0161echny nuansy. Security Champions znaj\u00ed sv\u016fj produkt: co s \u010d\u00edm interaguje a na co se d\u00edvat jako prvn\u00ed \u2014 jsou efektivn\u011bj\u0161\u00ed.<\/p>\n<p>Tak\u017ee se zamyslete nad t\u00edm, abyste zavedli Security Champions a roz\u0161\u00ed\u0159ili vliv t\u00fdmu bezpe\u010dnosti. Pro samotn\u00e9ho \u0161ampiona je to tak\u00e9 u\u017eite\u010dn\u00e9: profesion\u00e1ln\u00ed rozvoj v nov\u00e9 oblasti, roz\u0161\u00ed\u0159en\u00ed technick\u00e9ho obzoru, zlep\u0161en\u00ed technick\u00fdch, mana\u017eersk\u00fdch a v\u016fd\u010d\u00edch dovednost\u00ed, zv\u00fd\u0161en\u00ed tr\u017en\u00ed hodnoty. To je ur\u010dit\u00fd prvek soci\u00e1ln\u00edho in\u017een\u00fdrstv\u00ed, va\u0161e \u201eo\u010di\u201c v t\u00fdmu v\u00fdvoje.<\/p>\n<h2>F\u00e1ze testov\u00e1n\u00ed<\/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>\u00a0\u0159\u00edk\u00e1, \u017ee 20% snah p\u0159in\u00e1\u0161\u00ed 80% v\u00fdsledk\u016f. T\u011bchto 20% tvo\u0159\u00ed praktiky anal\u00fdzy aplikac\u00ed, kter\u00e9 lze a je t\u0159eba automatizovat. P\u0159\u00edklady takov\u00fdch aktivit jsou statick\u00e1 anal\u00fdza \u2014 <b>SAST<\/b>, dynamick\u00e1 anal\u00fdza \u2014 <b>DAST,<\/b> a\u00a0<b>kontrola Open Source<\/b>. P\u0159edstav\u00edm podrobn\u011bji aktivity, a tak\u00e9 n\u00e1stroje, s jak\u00fdmi specifiky se obvykle setk\u00e1v\u00e1me p\u0159i jejich zav\u00e1d\u011bn\u00ed do procesu, a jak to d\u011blat spr\u00e1vn\u011b.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/db720e0879cdd1ed818461ffb5f927da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Hlavn\u00ed probl\u00e9my n\u00e1stroj\u016f<\/h3>\n<p>\nVyzdvihnu obecn\u011b platn\u00e9 probl\u00e9my v\u0161ech n\u00e1stroj\u016f, kter\u00e9 vy\u017eaduj\u00ed pozornost. Rozebran\u00e9 je podrobn\u011bji, abych se u\u017e d\u00e1le neopakoval.<\/p>\n<p><b>Dlouh\u00e9 doby anal\u00fdzy. <\/b>Pokud od p\u0159evzet\u00ed k vyd\u00e1n\u00ed na produkci uplyne 30 minut na v\u0161echny testy a sestaven\u00ed, pak kontroly na informa\u010dn\u00ed bezpe\u010dnost zabere den. Tak\u017ee nikdo nebude brzdit proces. Zohledn\u011bte tuto zvl\u00e1\u0161tnost a vyvo\u010fte z\u00e1v\u011bry.<\/p>\n<p><b>Vysok\u00e1 \u00farove\u0148 False Negative nebo False Positive. <\/b>V\u0161echny produkty jsou r\u016fzn\u00e9, v\u0161echny pou\u017e\u00edvaj\u00ed r\u016fzn\u00e9 frameworky a sv\u016fj styl psan\u00ed k\u00f3du. Na r\u016fzn\u00fdch k\u00f3dov\u00fdch z\u00e1kladech a technologi\u00edch mohou n\u00e1stroje vykazovat r\u016fznou \u00farove\u0148 False Negative a False Positive. Proto se pod\u00edvejte, co konkr\u00e9tn\u011b ve\u00a0<b>va\u0161\u00ed<\/b> firm\u011b a <b>pro<\/b> va\u0161e<\/p>\n<p><b>aplikace bude vykazovat dobr\u00e9 a spolehliv\u00e9 v\u00fdsledky.<\/b>\u017d\u00e1dn\u00e9 integrace se st\u00e1vaj\u00edc\u00edmi n\u00e1stroji<\/p>\n<p><b>. Zam\u011b\u0159te se na n\u00e1stroje z pohledu integrac\u00ed, kter\u00e9 ji\u017e pou\u017e\u00edv\u00e1te. Nap\u0159\u00edklad, pokud m\u00e1te Jenkins nebo TeamCity \u2013 zkontrolujte integraci n\u00e1stroj\u016f pr\u00e1v\u011b s t\u00edmto SW, a ne s GitLab CI, kter\u00fd nepou\u017e\u00edv\u00e1te. <\/b>Nep\u0159\u00edtomnost nebo nadm\u011brn\u00e1 slo\u017eitost p\u0159izp\u016fsoben\u00ed.<\/p>\n<p><b>Pokud n\u00e1stroj nem\u00e1 API, k \u010demu je dobr\u00fd? V\u0161e, co lze ud\u011blat v rozhran\u00ed, by m\u011blo b\u00fdt dostupn\u00e9 i prost\u0159ednictv\u00edm API. Ide\u00e1ln\u011b by m\u011bl m\u00edt n\u00e1stroj mo\u017enost p\u0159izp\u016fsoben\u00ed kontrol. <\/b>\u017d\u00e1dn\u00e1 roadmapa pro rozvoj produktu. <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\">Roadmap<\/a><\/noindex> V\u00fdvoj nestoj\u00ed na m\u00edst\u011b, v\u017edy pou\u017e\u00edv\u00e1me nov\u00e9 frameworky a funkce, p\u0159episujeme star\u00fd k\u00f3d na nov\u00e9 jazyky. Chceme m\u00edt jistotu, \u017ee n\u00e1stroj, kter\u00fd koup\u00edme, bude podporovat nov\u00e9 frameworky a technologie. Proto je d\u016fle\u017eit\u00e9 v\u011bd\u011bt, \u017ee produkt m\u00e1 skute\u010dn\u00fd a spr\u00e1vn\u00fd<\/p>\n<h3>pl\u00e1n rozvoje.<\/h3>\n<p>\nZvl\u00e1\u0161tnosti procesu<\/p>\n<p>Krom\u011b zvl\u00e1\u0161tnost\u00ed n\u00e1stroj\u016f zohledn\u011bte i zvl\u00e1\u0161tnosti procesu v\u00fdvoje. Nap\u0159\u00edklad naru\u0161en\u00ed v\u00fdvoje je typick\u00e1 chyba. Pod\u00edvejme se, jak\u00e9 dal\u0161\u00ed zvl\u00e1\u0161tnosti by m\u011bly b\u00fdt zohledn\u011bny a na co by se m\u011bl t\u00fdm bezpe\u010dnosti zam\u011b\u0159it. <b>Aby nedo\u0161lo k naru\u0161en\u00ed term\u00edn\u016f v\u00fdvoje a uvoln\u011bn\u00ed, vytvo\u0159te<\/b> r\u016fzn\u00e1 pravidla <b>a r\u016fzn\u00e9\u00a0<\/b>show stoppers <b>\u2014 krit\u00e9ria zastaven\u00ed procesu sestaven\u00ed p\u0159i v\u00fdskytu zranitelnost\u00ed \u2014<\/b>pro r\u016fzn\u00e9 prost\u0159ed\u00ed.<\/p>\n<p><i>Nap\u0159\u00edklad ch\u00e1peme, \u017ee aktu\u00e1ln\u00ed v\u011btev jde na v\u00fdvojov\u00fd stend nebo UAT, tak\u017ee nebudeme zastavovat a ne\u0159ekneme:<\/i><\/p>\n<p>\u2014 M\u00e1te zde zranitelnosti, nikam d\u00e1le nep\u016fjdete! Na t\u00e9to \u00farovni je d\u016fle\u017eit\u00e9 \u0159\u00edct v\u00fdvoj\u00e1\u0159\u016fm, \u017ee existuj\u00ed probl\u00e9my s bezpe\u010dnost\u00ed, na kter\u00e9 by se m\u011blo zam\u011b\u0159it.<\/p>\n<p><b>P\u0159\u00edtomnost zranitelnost\u00ed nen\u00ed p\u0159ek\u00e1\u017ekou pro dal\u0161\u00ed testov\u00e1n\u00ed<\/b>: manu\u00e1ln\u00ed, integra\u010dn\u00ed nebo ru\u010dn\u00ed. Na druh\u00e9 stran\u011b mus\u00edme n\u011bjak zv\u00fd\u0161it bezpe\u010dnost produktu, a aby v\u00fdvoj\u00e1\u0159i nezapom\u00ednali na to, co bezpe\u010dnostn\u00ed t\u00fdm nach\u00e1z\u00ed. Proto n\u011bkdy postupujeme takto: na pracovn\u00edm m\u00edst\u011b, kdy\u017e se nasazuje na v\u00fdvojov\u00e9 prost\u0159ed\u00ed, jednodu\u0161e upozorn\u00edme v\u00fdvojov\u00fd t\u00fdm:<\/p>\n<p><i>\u2014 Kluci, m\u00e1te probl\u00e9my, pros\u00edm, v\u011bnujte tomu pozornost.<\/i><\/p>\n<p>V f\u00e1zi UAT znovu ukazujeme varov\u00e1n\u00ed o zranitelnostech a ve f\u00e1zi uveden\u00ed na trh \u0159\u00edk\u00e1me:<\/p>\n<p><i>\u2014 Kluci, n\u011bkolikr\u00e1t jsme v\u00e1s varovali, nic jste neud\u011blali \u2014 s t\u00edm v\u00e1s nepropust\u00edme.<\/i><\/p>\n<p>Pokud mluv\u00edme o k\u00f3du a dynamice, je nutn\u00e9 ukazovat a varovat p\u0159ed zranitelnostmi pouze t\u011bch funkc\u00ed a k\u00f3du, kter\u00e9 byly naps\u00e1ny pr\u00e1v\u011b v t\u00e9to funkci. Pokud v\u00fdvoj\u00e1\u0159 posunul tla\u010d\u00edtko o 3 pixely a my mu \u0159\u00edk\u00e1me, \u017ee tam m\u00e1 SQL injekci, a proto je nutn\u00e9 to urgentn\u011b opravit \u2014 to je \u0161patn\u011b. Sledujte pouze to, co bylo nyn\u00ed naps\u00e1no, a to zm\u011bnu, kter\u00e1 p\u0159ich\u00e1z\u00ed do aplikace.<\/p>\n<p>P\u0159edpokl\u00e1dejme, \u017ee m\u00e1me n\u011bjakou funk\u010dn\u00ed z\u00e1vadu \u2014 to, jak by aplikace nem\u011bla fungovat: pen\u00edze se neprev\u00e1d\u011bj\u00ed, po kliknut\u00ed na tla\u010d\u00edtko nen\u00ed p\u0159echod na dal\u0161\u00ed str\u00e1nku nebo se nezobrazuje zbo\u017e\u00ed. <b>Bezpe\u010dnostn\u00ed defekty<\/b>\u00a0\u2014 to jsou stejn\u00e9 defekty, ale ne z pohledu fungov\u00e1n\u00ed aplikace, ale bezpe\u010dnosti. <\/p>\n<blockquote><p>Ne v\u0161echny probl\u00e9my kvality softwaru jsou probl\u00e9my bezpe\u010dnosti. Ale v\u0161echny probl\u00e9my bezpe\u010dnosti jsou spojeny s kvalitou softwaru. Sherif Mansour, Expedia.<\/p><\/blockquote>\n<p>\nJeliko\u017e v\u0161echny zranitelnosti jsou stejn\u00e9 defekty, m\u011bly by b\u00fdt na stejn\u00e9m m\u00edst\u011b jako v\u0161echny defekty ve v\u00fdvoji. Proto zapome\u0148te na zpr\u00e1vy a stra\u0161ideln\u00e9 PDF, kter\u00e9 nikdo ne\u010dte.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/e54e64658a3882bdc68a48c6ef426746.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKdy\u017e jsem pracoval ve firm\u011b, kter\u00e1 se zab\u00fdvala v\u00fdvojem, dostal jsem zpr\u00e1vu z n\u00e1stroj\u016f statick\u00e9 anal\u00fdzy. Otev\u0159el jsem ji, zd\u011bsil jsem se, uva\u0159il jsem si k\u00e1vu, prolistoval jsem 350 stran, zav\u0159el ji a \u0161el jsem d\u00e1l pracovat. <b>Velk\u00e9 zpr\u00e1vy jsou mrtv\u00e9 zpr\u00e1vy<\/b>. Obvykle nikam neputuj\u00ed, e-maily se ma\u017eou, zapom\u00ednaj\u00ed, ztr\u00e1c\u00ed nebo \u0159\u00edk\u00e1 byznys, \u017ee p\u0159ij\u00edm\u00e1 rizika.<\/p>\n<p>Co d\u011blat? Potvrzen\u00e9 chyby, kter\u00e9 byly nalezeny, jednodu\u0161e p\u0159evedeme do v\u00fdvojov\u011b p\u0159\u00edv\u011btiv\u00e9 podoby, nap\u0159\u00edklad je ulo\u017e\u00edme do backlogu v Jira. Chyby prioritizujeme a odstra\u0148ujeme podle priority vedle funk\u010dn\u00edch chyb a chyb test\u016f.<\/p>\n<h2>Statick\u00e1 anal\u00fdza \u2013 SAST<\/h2>\n<p>\n<b>Jedn\u00e1 se o anal\u00fdzu k\u00f3du na p\u0159\u00edtomnost zranitelnost\u00ed.<\/b>, ale to nen\u00ed tot\u00e9\u017e, co SonarQube. Kontrolujeme nejen podle vzor\u016f nebo stylu. P\u0159i anal\u00fdze se pou\u017e\u00edv\u00e1 \u0159ada p\u0159\u00edstup\u016f: podle stromu zranitelnost\u00ed, podle\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>, pomoc\u00ed anal\u00fdzy konfigura\u010dn\u00edch soubor\u016f. To v\u0161e se t\u00fdk\u00e1 p\u0159\u00edmo k\u00f3du.<\/p>\n<p><b>V\u00fdhody p\u0159\u00edstupu<\/b>: <b>odhalen\u00ed zranitelnost\u00ed v k\u00f3du v ran\u00e9 f\u00e1zi v\u00fdvoje<\/b>, kdy je\u0161t\u011b neexistuj\u00ed \u017e\u00e1dn\u00e9 testovac\u00ed prost\u0159ed\u00ed a hotov\u00e9 n\u00e1stroje, a<b>\u00a0mo\u017enost inkrement\u00e1ln\u00edho skenov\u00e1n\u00ed<\/b>: skenov\u00e1n\u00ed \u010d\u00e1sti k\u00f3du, kter\u00e1 se zm\u011bnila, a pouze t\u00e9 funkce, na kter\u00e9 pr\u00e1v\u011b pracujeme, co\u017e zkracuje \u010das skenov\u00e1n\u00ed.<\/p>\n<p><b>Nev\u00fdhody<\/b>\u00a0\u2014 to je absence podpory pot\u0159ebn\u00fdch jazyk\u016f.<\/p>\n<p><b>Pot\u0159ebn\u00e9 integrace, <\/b>kter\u00e9 by m\u011bly b\u00fdt v n\u00e1stroj\u00edch, podle m\u00e9ho subjektivn\u00edho n\u00e1zoru:<\/p>\n<ul>\n<li>N\u00e1stroj integrace: Jenkins, TeamCity a Gitlab CI.\n<\/li>\n<li>V\u00fdvojov\u00e9 prost\u0159ed\u00ed: Intellij IDEA, Visual Studio. V\u00fdvoj\u00e1\u0159ovi je pohodln\u011bj\u0161\u00ed neproch\u00e1zet nejasn\u00fdm rozhran\u00edm, kter\u00e9 je t\u0159eba je\u0161t\u011b zapamatovat, ale p\u0159\u00edmo na pracovn\u00edm m\u00edst\u011b ve sv\u00e9m vlastn\u00edm v\u00fdvojov\u00e9m prost\u0159ed\u00ed vid\u011bt v\u0161echny pot\u0159ebn\u00e9 integrace a zranitelnosti, kter\u00e9 na\u0161el.\n<\/li>\n<li>Kontrola k\u00f3du: SonarQube a ru\u010dn\u00ed revize.\n<\/li>\n<li>Sledova\u010de chyb: Jira a Bugzilla.\n<\/li>\n<\/ul>\n<p>\nNa obr\u00e1zku je n\u011bkolik nejlep\u0161\u00edch z\u00e1stupc\u016f statick\u00e9 anal\u00fdzy.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/bab3420874ac090d4d107edb0d2b857b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nD\u016fle\u017eit\u00e9 nejsou n\u00e1stroje, ale proces, proto existuj\u00ed Open Source \u0159e\u0161en\u00ed, kter\u00e1 jsou tak\u00e9 dobr\u00e1 pro testov\u00e1n\u00ed procesu.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/4f2c278922c291b15922bc5748f87dc3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSAST Open Source nenajdou obrovsk\u00e9 mno\u017estv\u00ed zranitelnost\u00ed nebo slo\u017eit\u00fd DataFlow, ale p\u0159i budov\u00e1n\u00ed procesu je lze a je t\u0159eba je pou\u017e\u00edvat. Pom\u00e1haj\u00ed pochopit, jak bude proces postaven, kdo bude odpov\u011bdn\u00fd za chyby, kdo bude reportovat, kdo \u2013 pod\u00e1vat zpr\u00e1vy. Pokud chcete prov\u00e9st po\u010d\u00e1te\u010dn\u00ed f\u00e1zi budov\u00e1n\u00ed bezpe\u010dnosti va\u0161eho k\u00f3du \u2013 pou\u017e\u00edvejte Open Source \u0159e\u0161en\u00ed.<\/p>\n<p>Jak to m\u016f\u017eete integrovat, pokud jste na za\u010d\u00e1tku cesty, nem\u00e1te nic: ani CI, ani Jenkins, ani TeamCity? Zva\u017eme integrace do procesu.<\/p>\n<h3>Integrace na \u00farovni CVS<\/h3>\n<p>\nPokud m\u00e1te Bitbucket nebo GitLab, m\u016f\u017eete prov\u00e9st integraci na \u00farovni <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/CVS\">Concurrent Versions System<\/a><\/noindex>.<\/p>\n<p><b>Podle ud\u00e1losti<\/b>\u00a0\u2014 pull request, commit. Skenujete k\u00f3d a ve stavu buildu ukazujete, zda kontrola bezpe\u010dnosti prob\u011bhla, nebo ne.<\/p>\n<p><b>Zp\u011btn\u00e1 vazba. <\/b>Zcela jist\u011b, zp\u011btn\u00e1 vazba je v\u017edy pot\u0159ebn\u00e1. Pokud jste prost\u011b splnili \u00fakol na stran\u011b bezpe\u010dnosti, vlo\u017eili to do krabi\u010dky a nikomu o tom nic ne\u0159ekli, a pak na konci m\u011bs\u00edce jste vyplivli spoustu chyb \u2014 to nen\u00ed v po\u0159\u00e1dku a nen\u00ed to dob\u0159e.<\/p>\n<h3>Integrace se syst\u00e9mem code review<\/h3>\n<p>\nJednou jsme v \u0159ad\u011b d\u016fle\u017eit\u00fdch projekt\u016f nastavili technick\u00e9ho u\u017eivatele AppSec jako v\u00fdchoz\u00edho recenzenta. V z\u00e1vislosti na tom, zda byly v nov\u00e9m k\u00f3du nalezeny chyby nebo ne, p\u0159i revizi pull requestu recenzent nastav\u00ed status na \u201eaccept\u201c nebo \u201eneed work\u201c \u2014 bu\u010f v\u0161e OK, nebo je pot\u0159eba upravit a odkazy na to, co konkr\u00e9tn\u011b upravit. U integrace s verz\u00ed, kter\u00e1 jde do produkce, jsme m\u011bli zapnut\u00fd z\u00e1kaz slou\u010den\u00ed, pokud test z pohledu informa\u010dn\u00ed bezpe\u010dnosti nebyl \u00fasp\u011b\u0161n\u00fd. Toto jsme zahrnuli do ru\u010dn\u00edho code review a ostatn\u00ed \u00fa\u010dastn\u00edci procesu vid\u011bli statusy bezpe\u010dnosti pr\u00e1v\u011b pro tento konkr\u00e9tn\u00ed proces.<\/p>\n<h3>Integrace se SonarQube<\/h3>\n<p>\nMnoz\u00ed maj\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/de.wikipedia.org\/wiki\/Quality_Gate\">quality gate<\/a><\/noindex> pro kvalitu k\u00f3du. Tady to je stejn\u00e9 \u2014 m\u016f\u017eete ud\u011blat stejn\u00e9 gates pouze pro n\u00e1stroje SAST. Bude to stejn\u00e9 rozhran\u00ed, stejn\u00fd quality gate, pouze se bude naz\u00fdvat <b>security gate<\/b>. A tak\u00e9, pokud m\u00e1te nastaven\u00fd proces s vyu\u017eit\u00edm SonarQube, m\u016f\u017eete v\u0161e bez obav integrovat.<\/p>\n<h3>Integrace na \u00farovni CI<\/h3>\n<p>\nTady je to tak\u00e9 dost jednoduch\u00e9:<\/p>\n<ul>\n<li><b>Na jedn\u00e9 \u00farovni s automatizovan\u00fdmi testy<\/b>, unit testy.\n<\/li>\n<li><b>Rozd\u011blen\u00ed podle f\u00e1z\u00ed v\u00fdvoje<\/b>: dev, test, prod. Mohou se zahrnout r\u016fzn\u00e9 sady pravidel, nebo r\u016fzn\u00e9 podm\u00ednky selh\u00e1n\u00ed: zastav\u00edme sestaven\u00ed, nezastav\u00edme sestaven\u00ed.\n<\/li>\n<li><b>Synchronn\u00ed\/asynchronn\u00ed spu\u0161t\u011bn\u00ed<\/b>. \u010cek\u00e1me na dokon\u010den\u00ed testov\u00e1n\u00ed bezpe\u010dnosti, nebo ne\u010dek\u00e1me. To znamen\u00e1, \u017ee je prost\u011b spust\u00edme a jdeme d\u00e1l, a potom n\u00e1m p\u0159ijde status, \u017ee v\u0161echno je v po\u0159\u00e1dku nebo \u0161patn\u011b.\n<\/li>\n<\/ul>\n<p>\nTo v\u0161e v ide\u00e1ln\u00edm r\u016f\u017eov\u00e9m sv\u011bt\u011b. V re\u00e1ln\u00e9m \u017eivot\u011b takov\u00e9 v\u011bci neexistuj\u00ed, ale usilujeme o to. V\u00fdsledek proveden\u00fdch bezpe\u010dnostn\u00edch kontrol by m\u011bl b\u00fdt podobn\u00fd v\u00fdsledk\u016fm unit test\u016f.<\/p>\n<p>Nap\u0159\u00edklad jsme vzali velk\u00fd projekt a rozhodli se, \u017ee ho nyn\u00ed budeme skenovat pomoc\u00ed SASTu \u2014 OK. Vlo\u017eili jsme tento projekt do SASTu, vygeneroval n\u00e1m 20 000 zranitelnost\u00ed a rozhodli jsme se, \u017ee je v\u0161echno v po\u0159\u00e1dku. 20 000 zranitelnost\u00ed \u2014 to je n\u00e1\u0161 technick\u00fd dluh. Dluh ulo\u017e\u00edme do krabi\u010dky, budeme ho postupn\u011b \u0159e\u0161it a zakl\u00e1dat chyby do defect tracker\u016f. Najmeme firmu, ud\u011bl\u00e1me v\u0161echno sami nebo n\u00e1m pomohou Security Champions \u2014 a technick\u00fd dluh se bude sni\u017eovat.<\/p>\n<p>A v\u0161echny nov\u00e9 zranitelnosti v nov\u00e9m k\u00f3du by m\u011bly b\u00fdt odstran\u011bny stejn\u011b jako chyby v unit nebo automatick\u00fdch testech. \u0158ekn\u011bme, \u017ee se spustila sestava, prob\u011bhly testy a spadly dva testy a dva testy bezpe\u010dnosti. OK \u2014 \u0161li jsme se pod\u00edvat, co se stalo, opravili jednu v\u011bc, opraveno druh\u00e9, p\u0159i dal\u0161\u00edm spu\u0161t\u011bn\u00ed \u2014 v\u0161e je v po\u0159\u00e1dku, nov\u00e9 zranitelnosti se neobjevily, testy nepropadly. Pokud je \u00fakol slo\u017eit\u011bj\u0161\u00ed a je pot\u0159eba se v n\u011bm dob\u0159e vyznat, nebo oprava zranitelnost\u00ed zasahuje do v\u011bt\u0161\u00edch \u010d\u00e1st\u00ed toho, co le\u017e\u00ed pod kapotou: zalo\u017eili jsme chybu v defect trackeru, ta je prioritizov\u00e1na a opravena. Bohu\u017eel, sv\u011bt nen\u00ed dokonal\u00fd a testy ob\u010das selh\u00e1vaj\u00ed.<\/p>\n<p>P\u0159\u00edklad security gate \u2014 analog quality gate, z hlediska p\u0159\u00edtomnosti a po\u010dtu zranitelnost\u00ed v k\u00f3du.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/eb30d3c7988b28c2cb25e9656871ec96.png\" style=\"display:block;margin: 0 auto;\" \/>Integrujeme se se SonarQube \u2014 plugin se nainstaluje, v\u0161e je velmi pohodln\u00e9 a skv\u011bl\u00e9.<\/p>\n<h3>Integrace s v\u00fdvojov\u00fdm prost\u0159ed\u00edm<\/h3>\n<p>\n<b>Mo\u017enosti integrace:<\/b><\/p>\n<ul>\n<li>Spu\u0161t\u011bn\u00ed skenov\u00e1n\u00ed z v\u00fdvojov\u00e9ho prost\u0159ed\u00ed je\u0161t\u011b p\u0159ed commit.\n<\/li>\n<li>Prohl\u00ed\u017een\u00ed v\u00fdsledk\u016f.\n<\/li>\n<li>Anal\u00fdza v\u00fdsledk\u016f.\n<\/li>\n<li>Synchronizace se serverem.\n<\/li>\n<\/ul>\n<p>\nTakto vypad\u00e1 z\u00edsk\u00e1v\u00e1n\u00ed v\u00fdsledk\u016f ze serveru.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/270d4af76fddc0ceebca908c7d3835b8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV na\u0161em v\u00fdvojov\u00e9m prost\u0159ed\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/idea\/\">Intellij IDEA<\/a><\/noindex> se prost\u011b objev\u00ed dal\u0161\u00ed polo\u017eka, kter\u00e1 informuje, \u017ee b\u011bhem skenov\u00e1n\u00ed byly zji\u0161t\u011bny takov\u00e9 zranitelnosti. Lze hned opravit k\u00f3d, pod\u00edvat se na doporu\u010den\u00ed a\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_graph\">Flow Graph<\/a><\/noindex>. To v\u0161e je um\u00edst\u011bno na pracovn\u00edm m\u00edst\u011b v\u00fdvoj\u00e1\u0159e, co\u017e je velmi pohodln\u00e9 \u2014 nen\u00ed t\u0159eba p\u0159ech\u00e1zet na jin\u00e9 odkazy a prohl\u00ed\u017eet n\u011bco nav\u00edc.<\/p>\n<h2>Open Source<\/h2>\n<p>\nTo je m\u00e9 obl\u00edben\u00e9 t\u00e9ma. V\u0161ichni pou\u017e\u00edvaj\u00ed Open Source knihovny \u2014 pro\u010d ps\u00e1t hromadu kostrbatost\u00ed a bicykl\u016f, kdy\u017e si m\u016f\u017eete vz\u00edt hotovou knihovnu, ve kter\u00e9 je v\u0161e u\u017e realizov\u00e1no?<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/05b9cd5a8b269af2a3f59931a0774778.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSamoz\u0159ejm\u011b, \u017ee ano, ale knihovny jsou tak\u00e9 ps\u00e1ny lidmi, zahrnuj\u00ed ur\u010dit\u00e1 rizika a tak\u00e9 obsahuj\u00ed zranitelnosti, o kter\u00fdch se pravideln\u011b, nebo dokonce neust\u00e1le, informuje. Proto existuje dal\u0161\u00ed krok v Application Security \u2013 anal\u00fdza komponent Open Source.<\/p>\n<h3>Anal\u00fdza Open Source \u2013 OSA<\/h3>\n<p>\nN\u00e1stroj zahrnuje t\u0159i hlavn\u00ed f\u00e1ze.<\/p>\n<p><b>Vyhled\u00e1v\u00e1n\u00ed zranitelnost\u00ed v knihovn\u00e1ch. <\/b>Nap\u0159\u00edklad n\u00e1stroj v\u00ed, \u017ee pou\u017e\u00edv\u00e1me n\u011bjakou knihovnu, a \u017ee v\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Common_Vulnerabilities_and_Exposures\">CVE<\/a><\/noindex> nebo v bug trackerech se nach\u00e1zej\u00ed n\u011bjak\u00e9 zranitelnosti, kter\u00e9 se vztahuj\u00ed k t\u00e9to verzi knihovny. P\u0159i pokusu o jej\u00ed pou\u017eit\u00ed n\u00e1stroj vyd\u00e1 upozorn\u011bn\u00ed, \u017ee knihovna je zraniteln\u00e1, a doporu\u010d\u00ed pou\u017e\u00edt jinou verzi, kde zranitelnosti nejsou.<\/p>\n<p><b>Anal\u00fdza licen\u010dn\u00ed \u010distoty. <\/b>U n\u00e1s to zat\u00edm nen\u00ed p\u0159\u00edli\u0161 popul\u00e1rn\u00ed, ale pokud pracujete se zahrani\u010d\u00edm, m\u016f\u017eete tam ob\u010das dostat pokutu za pou\u017eit\u00ed komponenty s otev\u0159en\u00fdm zdrojov\u00fdm k\u00f3dem, kterou nelze pou\u017e\u00edt nebo modifikovat. Podle politiky licen\u010dn\u00ed knihovny to d\u011blat nem\u016f\u017eeme. Pokud jsme ji modifikovali a pou\u017e\u00edv\u00e1me, mus\u00edme zve\u0159ejnit sv\u016fj k\u00f3d. Samoz\u0159ejm\u011b, nikdo nechce zve\u0159ej\u0148ovat k\u00f3d sv\u00fdch produkt\u016f, ale i tomu se d\u00e1 ochr\u00e1nit.<\/p>\n<p><b>Anal\u00fdza komponent, kter\u00e9 se pou\u017e\u00edvaj\u00ed v pr\u016fmyslov\u00e9m prost\u0159ed\u00ed. <\/b>P\u0159edstavme si hypotetickou situaci, \u017ee jsme kone\u010dn\u011b dokon\u010dili v\u00fdvoj a vydali posledn\u00ed verzi na\u0161eho mikroservisu. Ten tam skv\u011ble \u017eije \u2013 t\u00fdden, m\u011bs\u00edc, rok. Neshroma\u017e\u010fujeme ho, kontroly bezpe\u010dnosti neprov\u00e1d\u00edme, v\u0161echno se zd\u00e1 v po\u0159\u00e1dku. Ale najednou, dva t\u00fddny po vyd\u00e1n\u00ed, vyjde kritick\u00e1 zranitelnost v Open Source komponent\u011b, kterou pr\u00e1v\u011b v t\u00e9to sestav\u011b pou\u017e\u00edv\u00e1me, v pr\u016fmyslov\u00e9m prost\u0159ed\u00ed. Pokud si nezapisujeme, co a kde pou\u017e\u00edv\u00e1me, tuto zranitelnost jednodu\u0161e neuvid\u00edme. V n\u011bkter\u00fdch n\u00e1stroj\u00edch existuje mo\u017enost monitorov\u00e1n\u00ed zranitelnost\u00ed v knihovn\u00e1ch, kter\u00e9 se nyn\u00ed pou\u017e\u00edvaj\u00ed v pr\u016fmyslu. To je velmi u\u017eite\u010dn\u00e9.<\/p>\n<p><b>Mo\u017enosti:<\/b><\/p>\n<ul>\n<li>R\u016fzn\u00e9 politiky pro r\u016fzn\u00e9 f\u00e1ze v\u00fdvoje.\n<\/li>\n<li>Monitoring komponent v pr\u016fmyslov\u00e9m prost\u0159ed\u00ed.\n<\/li>\n<li>Kontrola knihoven v kontu organizace.\n<\/li>\n<li>Podpora r\u016fzn\u00fdch syst\u00e9m\u016f sestaven\u00ed a jazyk\u016f.\n<\/li>\n<li>Anal\u00fdza Docker obraz\u016f.\n<\/li>\n<\/ul>\n<p>\nN\u011bkolik p\u0159\u00edklad\u016f l\u00eddr\u016f v oblasti, kte\u0159\u00ed se zab\u00fdvaj\u00ed anal\u00fdzou Open Source.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/f1b05f86beb4a64f9bf3443963e3603b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nJedin\u00fd bezplatn\u00fd z nich \u2013 to je <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/OWASP_Dependency_Check\">Dependency-Check<\/a><\/noindex> od OWASP. M\u016f\u017eete jej zapnout v po\u010d\u00e1te\u010dn\u00edch f\u00e1z\u00edch, zjistit, jak funguje a co podporuje. V z\u00e1sad\u011b se jedn\u00e1 o v\u0161echny cloudov\u00e9 produkty nebo on-premise, ale i tak se jejich z\u00e1kladna st\u00e1le odes\u00edl\u00e1 na internet. Odes\u00edlaj\u00ed ne va\u0161e knihovny, ale hashe nebo sv\u00e9 hodnoty, kter\u00e9 vypo\u010d\u00edt\u00e1vaj\u00ed, a otisky na sv\u016fj server, aby obdr\u017eeli ozn\u00e1men\u00ed o existenci zranitelnost\u00ed.<\/p>\n<h3>Integrace do procesu<\/h3>\n<p>\n<b>Kontrola knihoven na perimetru<\/b>, kter\u00e9 jsou stahov\u00e1ny z extern\u00edch zdroj\u016f. M\u00e1me extern\u00ed a intern\u00ed repozit\u00e1\u0159e. Nap\u0159\u00edklad uvnit\u0159 Event Central je Nexus, a chceme, aby v na\u0161em repozit\u00e1\u0159i nebyly zranitelnosti se statusem \"kritick\u00e1\" nebo \"vysok\u00e1\". Je mo\u017en\u00e9 nastavit proxy pomoc\u00ed n\u00e1stroje Nexus Firewall Lifecycle tak, aby byly takov\u00e9 zranitelnosti filtrov\u00e1ny a nedost\u00e1valy se do intern\u00edho repozit\u00e1\u0159e.<\/p>\n<p><b>Integrace do CI<\/b>. Na jedn\u00e9 \u00farovni s automatizovan\u00fdmi testy, jednotkov\u00fdmi testy a rozd\u011blen\u00edm podle f\u00e1z\u00ed v\u00fdvoje: dev, test, prod. V ka\u017ed\u00e9 f\u00e1zi si m\u016f\u017eete stahovat jak\u00e9koli knihovny, pou\u017e\u00edvat cokoliv, ale pokud tam je n\u011bco z\u00e1va\u017en\u00e9ho se statusem \"critical\" - mo\u017en\u00e1 stoj\u00ed za to, aby si toho v\u00fdvoj\u00e1\u0159i byli v\u011bdomi p\u0159i p\u0159echodu do produkce.<\/p>\n<p><b>Integrace s artefaktoriemi<\/b>: Nexus a JFrog.<\/p>\n<p><b>Integrace do v\u00fdvojov\u00e9ho prost\u0159ed\u00ed. <\/b>N\u00e1stroje, kter\u00e9 vyb\u00edr\u00e1te, by m\u011bly m\u00edt integraci s v\u00fdvojov\u00fdmi prost\u0159ed\u00edmi. V\u00fdvoj\u00e1\u0159 by m\u011bl m\u00edt p\u0159\u00edstup k v\u00fdsledk\u016fm skenov\u00e1n\u00ed ze sv\u00e9ho pracovn\u00edho m\u00edsta nebo mo\u017enost s\u00e1m skenovat a kontrolovat k\u00f3d na p\u0159\u00edtomnost zranitelnost\u00ed p\u0159ed commitem do CVS.<\/p>\n<p><b>Integrace do CD. <\/b>To je skv\u011bl\u00e1 funkce, kter\u00e1 se mi velmi l\u00edb\u00ed a o kter\u00e9 jsem u\u017e mluvil \u2013 sledov\u00e1n\u00ed vzniku nov\u00fdch zranitelnost\u00ed v pr\u016fmyslov\u00e9m prost\u0159ed\u00ed. Funguje to zhruba takto.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/605c638df343db5c47ab36b4dc00f41c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00e1me <b>Public Component Repositories<\/b>\u00a0\u2014 n\u011bjak\u00e9 n\u00e1stroje venku a n\u00e1\u0161 intern\u00ed repozit\u00e1\u0159. Chceme, aby se v n\u011bm nach\u00e1zely pouze d\u016fv\u011bryhodn\u00e9 komponenty. P\u0159i proxy po\u017eadavku kontrolujeme, \u017ee stahovan\u00e1 knihovna nem\u00e1 zranitelnosti. Pokud spad\u00e1 pod ur\u010dit\u00e9 politiky, kter\u00e9 nastavujeme a nutn\u011b schvalujeme s v\u00fdvojem, tak ji nestahujeme a p\u0159ijde upozorn\u011bn\u00ed na pou\u017eit\u00ed jin\u00e9 verze. Pokud je v knihovn\u011b n\u011bco skute\u010dn\u011b kritick\u00e9ho a \u0161patn\u00e9ho, v\u00fdvoj\u00e1\u0159 je\u0161t\u011b ve f\u00e1zi instalace knihovnu nedostane \u2014 a\u0165 pou\u017eije verzi v\u00fd\u0161e nebo n\u00ed\u017ee.<\/p>\n<ul>\n<li>P\u0159i build\u2019u kontrolujeme, \u017ee nikdo nep\u0159idal nic \u0161patn\u00e9ho, \u017ee v\u0161echny komponenty jsou bezpe\u010dn\u00e9 a nikdo nep\u0159inesl na flashce nic nebezpe\u010dn\u00e9ho.\n<\/li>\n<li>V repozit\u00e1\u0159i m\u00e1me pouze d\u016fv\u011bryhodn\u00e9 komponenty. \n<\/li>\n<li>P\u0159i deployi je\u0161t\u011b jednou kontrolujeme samotn\u00fd bal\u00ed\u010dek: war, jar, DL nebo Docker image, aby odpov\u00eddal politice. \n<\/li>\n<li>P\u0159i p\u0159echodu do produkce monitorujeme, co se d\u011bje v produk\u010dn\u00edm prost\u0159ed\u00ed: objevuj\u00ed se nebo neobjevuj\u00ed kritick\u00e9 zranitelnosti.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Dynamick\u00e1 anal\u00fdza \u2014 DAST<\/h2>\n<p>\nN\u00e1stroje dynamick\u00e9 anal\u00fdzy se radik\u00e1ln\u011b li\u0161\u00ed od v\u0161eho, co bylo \u0159e\u010deno doposud. Je to jak\u00e1si simulace pr\u00e1ce u\u017eivatele s aplikac\u00ed. Pokud se jedn\u00e1 o webovou aplikaci, pos\u00edl\u00e1me po\u017eadavky, imitujeme pr\u00e1ci klienta, klik\u00e1me na tla\u010d\u00edtka na front-endu, pos\u00edl\u00e1me um\u011bl\u00e9 \u00fadaje z formul\u00e1\u0159e: uvozovky, z\u00e1vorky, symboly v r\u016fzn\u00e9 k\u00f3dov\u00e1n\u00ed, abychom se pod\u00edvali, jak aplikace pracuje a zpracov\u00e1v\u00e1 extern\u00ed data.<\/p>\n<p>Tento syst\u00e9m tak\u00e9 umo\u017e\u0148uje kontrolovat vzorov\u00e9 zranitelnosti v Open Source. Proto\u017ee DAST nev\u00ed, jak\u00fd Open Source pou\u017e\u00edv\u00e1me, jednodu\u0161e h\u00e1z\u00ed '\u0161kodliv\u00e9' vzory a analyzuje odpov\u011bdi serveru:<\/p>\n<p><i>\u2014 Aha, tady je probl\u00e9m s deserializac\u00ed, a tady nen\u00ed.<\/i><\/p>\n<p>V tom jsou velk\u00e1 rizika, proto\u017ee pokud prov\u00e1d\u00edte tento bezpe\u010dnostn\u00ed test na t\u00e9\u017ee stanici, se kterou pracuj\u00ed teste\u0159i \u2014 mohou se d\u00edt nep\u0159\u00edjemn\u00e9 v\u011bci.<\/p>\n<ul>\n<li>Vysok\u00e9 zat\u00ed\u017een\u00ed na s\u00ed\u0165ov\u00e9m serveru aplikace.\n<\/li>\n<li>\u017d\u00e1dn\u00e9 integrace.\n<\/li>\n<li>Mo\u017enost zm\u011bny nastaven\u00ed analyzovan\u00e9 aplikace.\n<\/li>\n<li>\u017d\u00e1dn\u00e1 podpora pot\u0159ebn\u00fdch technologi\u00ed.\n<\/li>\n<li>Slo\u017eitost nastaven\u00ed.\n<\/li>\n<\/ul>\n<p>\nM\u011bli jsme situaci, kdy jsme kone\u010dn\u011b spustili AppScan: dlouho jsme z\u00edsk\u00e1vali p\u0159\u00edstup k aplikaci, dostali jsme 3 \u00fa\u010dty a byli jsme nad\u0161en\u00ed - kone\u010dn\u011b v\u0161echno zkontrolujeme! Spustili jsme skenov\u00e1n\u00ed a prvn\u00ed, co AppScan ud\u011blal, bylo, \u017ee se dostal do administra\u010dn\u00edho panelu, proklik\u00e1val v\u0161echny tla\u010d\u00edtka, zm\u011bnil polovinu dat a nakonec server \u00fapln\u011b zabil sv\u00fdmi <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mailform.io\/\">mailform<\/a><\/noindex>-po\u017eadavky. V\u00fdvoj s testov\u00e1n\u00edm \u0159ekli:<\/p>\n<p><i>- Chlapi, d\u011bl\u00e1te si legraci?! Dali jsme v\u00e1m \u00fa\u010dty, a vy jste polo\u017eili stan!<\/i><\/p>\n<p>Zohledn\u011bte mo\u017en\u00e9 rizika. Ide\u00e1ln\u011b p\u0159ipravte samostatn\u00fd stand pro testov\u00e1n\u00ed bezpe\u010dnosti, kter\u00fd bude alespo\u0148 n\u011bjak izolov\u00e1n od ostatn\u00edho prost\u0159ed\u00ed, a pro kontrolu administrace je lep\u0161\u00ed pou\u017e\u00edvat ru\u010dn\u00ed re\u017eim. To je penetra\u010dn\u00ed test - ty zb\u00fdvaj\u00edc\u00ed procenty \u00fasil\u00ed, kter\u00e9 nyn\u00ed nezohled\u0148ujeme. <\/p>\n<p>Je t\u0159eba m\u00edt na pam\u011bti, \u017ee to lze pou\u017e\u00edt jako analog z\u00e1t\u011b\u017eov\u00e9ho testov\u00e1n\u00ed. V prvn\u00ed f\u00e1zi m\u016f\u017eete zapnout dynamick\u00fd skener v 10-15 vl\u00e1knech a pod\u00edvat se, co se stane, ale obvykle, jak ukazuje praxe, nic dobr\u00e9ho.<\/p>\n<p>N\u011bkolik zdroj\u016f, kter\u00e9 obvykle pou\u017e\u00edv\u00e1me.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/45a25dbe2a2d053e6ed16d31b6ac53ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJe t\u0159eba vyzdvihnout <noindex><a rel=\"nofollow\" href=\"https:\/\/portswigger.net\/burp\">Burp Suite<\/a><\/noindex>\u00a0- to je \"\u0161v\u00fdcarsk\u00fd n\u016f\u017e\" pro ka\u017ed\u00e9ho specialistu na bezpe\u010dnost. Pou\u017e\u00edvaj\u00ed jej v\u0161ichni a je velmi pohodln\u00fd. Nyn\u00ed byla vyd\u00e1na nov\u00e1 uk\u00e1zkov\u00e1 verze enterprise edition. Pokud to d\u0159\u00edve byla jen samostatn\u00e1 utilita s pluginy, nyn\u00ed kone\u010dn\u011b v\u00fdvoj\u00e1\u0159i vytv\u00e1\u0159ej\u00ed velk\u00fd server, ze kter\u00e9ho bude mo\u017en\u00e9 \u0159\u00eddit n\u011bkolik agent\u016f. To je skv\u011bl\u00e9, doporu\u010duji to vyzkou\u0161et.<\/p>\n<h3>Integrace do procesu<\/h3>\n<p>\nIntegrace prob\u00edh\u00e1 dostate\u010dn\u011b dob\u0159e a jednodu\u0161e: <b>spu\u0161t\u011bn\u00ed skenov\u00e1n\u00ed po \u00fasp\u011b\u0161n\u00e9 instalaci <\/b>aplikace na stand a\u00a0<b>skanov\u00e1n\u00ed po \u00fasp\u011b\u0161n\u00e9m proveden\u00ed integra\u010dn\u00edho testov\u00e1n\u00ed<\/b>.<\/p>\n<p>Pokud integrace nefunguj\u00ed nebo tam jsou z\u00e1stupn\u00e9 funkce a mock funkce, je to bezv\u00fdznamn\u00e9 a zbyte\u010dn\u00e9 - a\u0165 u\u017e po\u0161leme jak\u00fdkoliv vzor, server bude na to stejn\u011b reagovat.<\/p>\n<ul>\n<li>Ide\u00e1ln\u00ed je samostatn\u00fd stand pro testov\u00e1n\u00ed.\n<\/li>\n<li>P\u0159ed za\u010d\u00e1tkem testov\u00e1n\u00ed si zapi\u0161te sekvenci p\u0159ihl\u00e1\u0161en\u00ed.\n<\/li>\n<li>Testov\u00e1n\u00ed syst\u00e9mu administrace - pouze ru\u010dn\u00ed.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Proces<\/h2>\n<p>\nTrochu obecn\u011b o cel\u00e9m procesu a o fungov\u00e1n\u00ed ka\u017ed\u00e9ho n\u00e1stroje, konkr\u00e9tn\u011b. V\u0161echny aplikace jsou r\u016fzn\u00e9 - u jedn\u00e9 l\u00e9pe funguje dynamick\u00e1 anal\u00fdza, u druh\u00e9 statick\u00e1, u t\u0159et\u00ed anal\u00fdza OpenSource, penetra\u010dn\u00ed testy nebo n\u011bco \u00fapln\u011b jin\u00e9ho, nap\u0159\u00edklad ud\u00e1losti s\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Waf\">Waf<\/a><\/noindex>.<\/p>\n<blockquote><p>Ka\u017ed\u00fd proces pot\u0159ebuje kontrolu.<\/p><\/blockquote>\n<p>\nAbyste pochopili, jak proces funguje a kde jej lze vylep\u0161it, je nutn\u00e9 sb\u00edrat metriky ze v\u0161ech dostupn\u00fdch zdroj\u016f, v\u010detn\u011b v\u00fdrobn\u00edch metrik, metrik z n\u00e1stroj\u016f a z defect tracker\u016f.<\/p>\n<p>Jak\u00e1koliv data jsou u\u017eite\u010dn\u00e1. Je pot\u0159eba se d\u00edvat z r\u016fzn\u00fdch \u00fahl\u016f na to, kde se n\u00e1stroje l\u00e9pe pou\u017e\u00edvaj\u00ed, a kde proces konkr\u00e9tn\u011b pokulh\u00e1v\u00e1. Mo\u017en\u00e1 by st\u00e1lo za to pod\u00edvat se na dobu odezvy v\u00fdvoje, abychom zjistili, kde zlep\u0161it proces na z\u00e1klad\u011b \u010dasu. \u010c\u00edm v\u00edce dat, t\u00edm v\u00edce \u00fahl\u016f lze vytvo\u0159it od vrcholov\u00e9ho pohledu po detaily ka\u017ed\u00e9ho procesu.<\/p>\n<p><img decoding=\"async\" alt=\"Strach a nen\u00e1vist DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/93e079b19c4c8189ce6ca4eaec186eed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJeliko\u017e maj\u00ed v\u0161ichni stati\u010dt\u00ed a dynami\u010dt\u00ed analyz\u00e1tory sv\u00e9 API, sv\u00e9 zp\u016fsoby spu\u0161t\u011bn\u00ed a principy, n\u011bkte\u0159\u00ed maj\u00ed pl\u00e1nova\u010de, jin\u00ed ne - vyv\u00edj\u00edme n\u00e1stroj <b>AppSec Orchestrator<\/b>, kter\u00fd umo\u017e\u0148uje vytvo\u0159it jedin\u00fd vstup do cel\u00e9ho procesu s v\u00fdrobkem a spravovat ho z jednoho m\u00edsta.<\/p>\n<p>Mana\u017ee\u0159i, v\u00fdvoj\u00e1\u0159i a bezpe\u010dnostn\u00ed in\u017een\u00fd\u0159i maj\u00ed jeden vstup, ze kter\u00e9ho mohou vid\u011bt, co je spu\u0161t\u011bno, nastavit a spustit skenov\u00e1n\u00ed, z\u00edskat v\u00fdsledky skenov\u00e1n\u00ed a prezentovat po\u017eadavky. Sna\u017e\u00edme se vyhnout pap\u00edrov\u00e1n\u00ed, p\u0159ev\u00e1d\u00edme v\u0161e do lidsk\u00e9ho form\u00e1tu, kter\u00fd pou\u017e\u00edv\u00e1 v\u00fdvoj - str\u00e1nky na Confluence se stavem a metrikami, defekty v JIRA nebo v r\u016fzn\u00fdch defect trackerech, nebo integraci do synchronn\u00edho\/asynchronn\u00edho procesu v CI\/CD.<\/p>\n<h2>Hlavn\u00ed body<\/h2>\n<p>\n<b>N\u00e1stroje nejsou nejd\u016fle\u017eit\u011bj\u0161\u00ed.<\/b> Nejd\u0159\u00edve promyslete proces - pot\u00e9 zav\u00e1d\u011bjte n\u00e1stroje. N\u00e1stroje jsou dobr\u00e9, ale n\u00e1kladn\u00e9, proto je lep\u0161\u00ed za\u010d\u00edt s procesem a nastavit spolupr\u00e1ci a porozum\u011bn\u00ed mezi v\u00fdvojem a bezpe\u010dnost\u00ed. Z hlediska bezpe\u010dnosti nen\u00ed t\u0159eba \"stopit\" v\u0161echno, z hlediska v\u00fdvoje - pokud je n\u011bco vysoce kritick\u00e9, je t\u0159eba to odstranit, nikoliv p\u0159ed t\u00edm zav\u00edrat o\u010di.<\/p>\n<p><b>Kvalita produktu<\/b>\u00a0<b>je spole\u010dn\u00fdm c\u00edlem<\/b> jak bezpe\u010dnosti, tak v\u00fdvoje. D\u011bl\u00e1me jednu v\u011bc, sna\u017e\u00edme se, aby v\u0161e spr\u00e1vn\u011b fungovalo a aby nedoch\u00e1zelo k reputa\u010dn\u00edm rizik\u016fm a finan\u010dn\u00edm ztr\u00e1t\u00e1m. Pr\u00e1v\u011b proto propagujeme p\u0159\u00edstup k DevSecOps, SecDevOps, abychom usnadnili komunikaci a zlep\u0161ili kvalitu produktu.<\/p>\n<p><b>Za\u010dn\u011bte s t\u00edm, co ji\u017e existuje.<\/b>: po\u017eadavky, architektura, \u010d\u00e1ste\u010dn\u00e9 kontroly, \u0161kolen\u00ed, pokyny. Nen\u00ed nutn\u00e9 okam\u017eit\u011b aplikovat v\u0161echny praktiky na v\u0161echny projekty \u2014 <b>postupujte iterativn\u011b<\/b>. Neexistuje jednotn\u00fd standard \u2014 <b>experimentujte<\/b> a vyzkou\u0161ejte r\u016fzn\u00e9 p\u0159\u00edstupy a \u0159e\u0161en\u00ed.<\/p>\n<p><b>Mezi defekty kybernetick\u00e9 bezpe\u010dnosti a funk\u010dn\u00edmi defekty plat\u00ed rovnost<\/b>.<\/p>\n<p><b>automatisujte v\u0161e<\/b>, co se h\u00fdbe. V\u0161e, co se neh\u00fdbe \u2014 posu\u0148te a automatizujte. Pokud n\u011bco d\u011bl\u00e1te ru\u010dn\u011b, nen\u00ed to dobr\u00e1 \u010d\u00e1st procesu. Mo\u017en\u00e1 to stoj\u00ed za p\u0159epracov\u00e1n\u00ed a tak\u00e9 automatizaci.<\/p>\n<p>Pokud je velikost t\u00fdmu kybernetick\u00e9 bezpe\u010dnosti mal\u00e1 \u2014 <b>vyu\u017eijte Security Champions<\/b>.<\/p>\n<p>Mo\u017en\u00e1 to, o \u010dem jsem mluvil, v\u00e1m nebude vyhovovat a vymysl\u00edte n\u011bco sv\u00e9ho \u2014 a to je v po\u0159\u00e1dku. Ale\u00a0<b>vyb\u00edrejte n\u00e1stroje na z\u00e1klad\u011b po\u017eadavk\u016f pr\u00e1v\u011b na v\u00e1\u0161 proces<\/b>. Ned\u00edvejte se na to, co \u0159\u00edk\u00e1 komunita, \u017ee tento n\u00e1stroj je \u0161patn\u00fd, a tenhle je dobr\u00fd. Mo\u017en\u00e1 pr\u00e1v\u011b ve va\u0161em produktu se uk\u00e1\u017ee, \u017ee to je naopak.<\/p>\n<p><b>Po\u017eadavky na n\u00e1stroje.<\/b><\/p>\n<ul>\n<li>N\u00edzk\u00e1 \u00farove\u0148 False Positive.\n<\/li>\n<li>P\u0159im\u011b\u0159en\u00fd \u010das anal\u00fdzy.\n<\/li>\n<li>Pohodlnost pou\u017e\u00edv\u00e1n\u00ed.\n<\/li>\n<li>Mo\u017enost integrac\u00ed.\n<\/li>\n<li>Pochopen\u00ed roadmapy v\u00fdvoje produktu.\n<\/li>\n<li>Mo\u017enost p\u0159izp\u016fsoben\u00ed n\u00e1stroj\u016f.\n<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p>P\u0159edn\u00e1\u0161ku Jurije vybrali jako jednu z nejlep\u0161\u00edch na DevOpsConf 2018. Abyste se sezn\u00e1mili s je\u0161t\u011b v\u011bt\u0161\u00edm mno\u017estv\u00edm zaj\u00edmav\u00fdch n\u00e1pad\u016f a praktick\u00fdch p\u0159\u00edpad\u016f, p\u0159ij\u010fte 27. a 28. kv\u011btna do Skolkova na\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow-rit\/2019\">DevOpsConf<\/a><\/noindex> v r\u00e1mci <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2019\">festivalu RIT++<\/a><\/noindex>. A je\u0161t\u011b l\u00e9pe, pokud jste ochotni sd\u00edlet sv\u00e9 zku\u0161enosti, pak <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-rit\">podejte p\u0159ihl\u00e1\u0161ku<\/a><\/noindex> na p\u0159edn\u00e1\u0161ku do 21. dubna.<\/p><\/blockquote>\n<p>Zdroj: <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\/cs\/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=\"cs_CZ\" \/>\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\/cs\/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\udd47Strach a nen\u00e1vist DevSecOps | ProHoster","description":"M\u011bli jsme 2 analyz\u00e1tory k\u00f3du, 4 n\u00e1stroje pro dynamick\u00e9 testov\u00e1n\u00ed, vlastn\u00ed v\u00fdtvory a 250 skript\u016f.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/strah-i-nenavist-devsecops","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/31852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=31852"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/31852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/23720"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=31852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=31852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=31852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}