{"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\/fr\/blog\/administrirovanie\/strah-i-nenavist-devsecops","title":{"rendered":"La peur et la haine de DevSecOps","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Nous avions 2 analyseurs de code, 4 outils de test dynamique, nos propres cr\u00e9ations et 250 scripts. Ce n'est pas que tout cela \u00e9tait n\u00e9cessaire dans le processus actuel, mais comme j'ai commenc\u00e9 \u00e0 int\u00e9grer le DevSecOps, il fallait aller jusqu'au bout.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de 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\">Source<\/a><\/noindex>. Les cr\u00e9ateurs des personnages : Justin Roiland et Dan Harmon.<\/i><\/p>\n<p>Qu'est-ce que SecDevOps ? Et DevSecOps ? Quelle est la diff\u00e9rence ? La s\u00e9curit\u00e9 des applications - de quoi s'agit-il ? Pourquoi l'approche classique ne fonctionne-t-elle plus ? Toutes ces questions ont des r\u00e9ponses. <b>Youri Chabaly<\/b> de\u00a0<b>Swordfish Security. <\/b>Youri r\u00e9pondra \u00e0 toutes ces questions et analysera les probl\u00e8mes de transition du mod\u00e8le classique de la s\u00e9curit\u00e9 des applications vers le processus DevSecOps : comment bien int\u00e9grer le processus de d\u00e9veloppement s\u00e9curis\u00e9 dans le processus DevOps sans rien casser, comment passer par les principales \u00e9tapes de test de s\u00e9curit\u00e9, quels outils peuvent \u00eatre utilis\u00e9s, en quoi ils diff\u00e8rent et comment les configurer correctement pour \u00e9viter les pi\u00e8ges.<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=\"Lire la vid\u00e9o\" 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>\u00c0 propos de l'intervenant :<\/b> <b>Youri Chabaly - <\/b>Chief Security Architect dans l'entreprise <b>Swordfish Security<\/b>. Il est responsable de l'impl\u00e9mentation du SSDL, de l'int\u00e9gration g\u00e9n\u00e9rale des outils d'analyse d'applications dans un \u00e9cosyst\u00e8me unifi\u00e9 de d\u00e9veloppement et de test. 7 ans d'exp\u00e9rience en s\u00e9curit\u00e9 informatique. A travaill\u00e9 chez Alfa-Bank, Sberbank et Positive Technologies, qui d\u00e9veloppe des logiciels et fournit des services. Intervenant lors de conf\u00e9rences internationales telles que ZerONights, PHDays, RISSPA, OWASP.<\/p>\n<h2>S\u00e9curit\u00e9 des applications : de quoi s'agit-il ?<\/h2>\n<p>\n<b>S\u00e9curit\u00e9 des applications<\/b>\u00a0\u2014 est un domaine de la s\u00e9curit\u00e9 qui est responsable de la s\u00e9curit\u00e9 des applications. Cela ne concerne pas l'infrastructure ou la s\u00e9curit\u00e9 du r\u00e9seau, mais sp\u00e9cifiquement ce que nous \u00e9crivons et sur quoi travaillent les d\u00e9veloppeurs \u2014 il s'agit des d\u00e9fauts et des vuln\u00e9rabilit\u00e9s de l'application elle-m\u00eame.<\/p>\n<p>Direction <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/ef\/ef6\/modeling\/designer\/advanced\/edmx\/ssdl-spec\">SDL ou SDLC<\/a><\/noindex>\u00a0\u2014 <b>Cycle de vie de d\u00e9veloppement de la s\u00e9curit\u00e9<\/b>\u00a0\u2014 a \u00e9t\u00e9 d\u00e9velopp\u00e9 par Microsoft. Sur le sch\u00e9ma se trouve le mod\u00e8le canonique SDLC, dont l'objectif principal est d'impliquer la s\u00e9curit\u00e9 \u00e0 chaque \u00e9tape du d\u00e9veloppement, des exigences jusqu'\u00e0 la sortie en production. Microsoft a r\u00e9alis\u00e9 qu'il y avait trop de bogues dans le produit, que leur nombre augmentait et qu'il fallait faire quelque chose \u00e0 ce sujet, et a propos\u00e9 cette approche, qui est devenue canonique.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/466773b9a5bd355419fa1d6d1ddbca66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa s\u00e9curit\u00e9 des applications et le SSDL ne visent pas \u00e0 d\u00e9tecter les vuln\u00e9rabilit\u00e9s, comme on le pense souvent, mais \u00e0 pr\u00e9venir leur apparition. Au fil du temps, l'approche canonique de Microsoft a \u00e9t\u00e9 am\u00e9lior\u00e9e et d\u00e9velopp\u00e9e, offrant une immersion plus profonde et d\u00e9taill\u00e9e.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/58d3e6aadd30594c018940bcb2a8248b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe SDLC canonique est fortement d\u00e9taill\u00e9 dans diff\u00e9rentes m\u00e9thodologies - OpenSAMM, BSIMM, OWASP. Les m\u00e9thodologies diff\u00e8rent, mais dans l'ensemble, elles se ressemblent.<\/p>\n<h3>Mod\u00e8le de Maturit\u00e9 pour la S\u00e9curit\u00e9 Int\u00e9gr\u00e9e<\/h3>\n<p>\nCe qui me convient le mieux <b>BSIMM<\/b>\u00a0\u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bsimm.com\/\">Mod\u00e8le de Maturit\u00e9 pour la S\u00e9curit\u00e9 Int\u00e9gr\u00e9e<\/a><\/noindex>. La base de la m\u00e9thodologie consiste \u00e0 diviser le processus de s\u00e9curit\u00e9 des applications en 4 domaines : Gouvernance, Intelligence, Points de Contact SSDL et D\u00e9ploiement. Dans chaque domaine, il y a 12 pratiques, repr\u00e9sent\u00e9es sous forme de 112 activit\u00e9s.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/ae0bbfd0dde335af886282672ed92367.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nChacune des 112 activit\u00e9s a <b>3 niveaux de maturit\u00e9<\/b>: d\u00e9butant, interm\u00e9diaire et avanc\u00e9. Les 12 pratiques peuvent \u00eatre \u00e9tudi\u00e9es par sections, en s\u00e9lectionnant les \u00e9l\u00e9ments importants pour vous, en apprenant comment les int\u00e9grer et en ajoutant progressivement des \u00e9l\u00e9ments, tels que l'analyse statique et dynamique du code ou la revue de code. Vous \u00e9laborez un plan et travaillez tranquillement dans le cadre de l'impl\u00e9mentation des activit\u00e9s choisies.<\/p>\n<h2>Pourquoi DevSecOps<\/h2>\n<p><\/p>\n<blockquote><p>DevOps est un grand processus global, dans lequel il est n\u00e9cessaire de se soucier de la s\u00e9curit\u00e9.<\/p><\/blockquote>\n<p>\n\u00c0 l'origine <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DevOps\"><b>DevOps<\/b><\/a><\/noindex> de pr\u00e9visions de s\u00e9curit\u00e9. En pratique, le nombre d'\u00e9quipes de s\u00e9curit\u00e9 \u00e9tait beaucoup plus faible qu'aujourd'hui, et elles intervenaient non pas en tant que participants au processus, mais comme un organe de contr\u00f4le et de supervision, qui impose des exigences et v\u00e9rifie la qualit\u00e9 du produit \u00e0 la fin de la sortie. C'est l'approche classique, o\u00f9 les \u00e9quipes de s\u00e9curit\u00e9 \u00e9taient s\u00e9par\u00e9es du d\u00e9veloppement et n'intervenaient pas dans le processus.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/1c5958fb123313308bdd92c5471c44da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe probl\u00e8me principal est que la cybers\u00e9curit\u00e9 est s\u00e9par\u00e9e du d\u00e9veloppement. Cela prend g\u00e9n\u00e9ralement la forme d'un certain cadre de cybers\u00e9curit\u00e9 comprenant 2-3 grands et co\u00fbteux outils. Une fois tous les six mois, le code source ou l'application \u00e0 v\u00e9rifier arrive, et une fois par an des <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\">tests de p\u00e9n\u00e9tration<\/a><\/noindex>. Tout cela conduit \u00e0 des retards dans le passage \u00e0 la production, et un grand nombre de vuln\u00e9rabilit\u00e9s issues des outils automatis\u00e9s s'accumulent sur les d\u00e9veloppeurs. Il est impossible de tout d\u00e9chiffrer et de corriger, car les r\u00e9sultats des six mois pr\u00e9c\u00e9dents n'ont m\u00eame pas \u00e9t\u00e9 analys\u00e9s, et une nouvelle s\u00e9rie arrive.<\/p>\n<p>Dans le cadre de notre travail, nous constations que la s\u00e9curit\u00e9 dans tous les secteurs et industries reconna\u00eet qu'il est temps de s'adapter et de s'aligner sur le d\u00e9veloppement dans un m\u00eame cycle - dans l'\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>. La paradigme DevSecOps s'int\u00e8gre parfaitement \u00e0 la m\u00e9thodologie de d\u00e9veloppement agile, \u00e0 l'impl\u00e9mentation, au soutien et \u00e0 la participation \u00e0 chaque version et it\u00e9ration.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/cf258bd7efc82ff27787b5029cf2f945.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>La transition vers DevSecOps<\/h2>\n<p>\nLe mot le plus important dans le cycle de vie du d\u00e9veloppement s\u00e9curis\u00e9 est <b>\u00ab processus \u00bb<\/b>. Vous devez comprendre cela avant de penser \u00e0 acheter des outils.<\/p>\n<blockquote><p>Il ne suffit pas d'int\u00e9grer des outils dans le processus DevOps \u2014 l'interaction et la compr\u00e9hension entre les participants au processus sont cruciales.<\/p><\/blockquote>\n<p><\/p>\n<h3>Les gens sont plus importants que les outils<\/h3>\n<p>\nSouvent, la planification d'un processus de d\u00e9veloppement s\u00e9curis\u00e9 commence par le choix et l'achat d'un outil, puis se termine par des tentatives d'int\u00e9gration de l'outil dans le processus existant, qui n'aboutissent souvent qu'\u00e0 des \u00e9checs. Cela conduit \u00e0 des cons\u00e9quences malheureuses, car chaque outil a ses sp\u00e9cificit\u00e9s et limitations.<\/p>\n<p>Un cas fr\u00e9quent est celui o\u00f9 le d\u00e9partement de s\u00e9curit\u00e9 choisit un bon outil co\u00fbteux avec de grandes capacit\u00e9s et vient voir les d\u00e9veloppeurs pour l'incorporer dans le processus. Mais cela ne fonctionne pas \u2014 le processus est construit de mani\u00e8re \u00e0 ce que les limitations de l'outil d\u00e9j\u00e0 achet\u00e9 ne s'int\u00e8grent pas dans la paradigme actuel.<\/p>\n<blockquote><p>Commencez par d\u00e9crire quel r\u00e9sultat vous voulez et \u00e0 quoi ressemblera le processus. Cela aidera \u00e0 comprendre le r\u00f4le de l'outil et de la s\u00e9curit\u00e9 dans le processus.<\/p><\/blockquote>\n<p><\/p>\n<h3>Commencez par ce qui est d\u00e9j\u00e0 utilis\u00e9<\/h3>\n<p>\nAvant d'acheter des outils co\u00fbteux, regardez ce que vous avez d\u00e9j\u00e0. Chaque entreprise a des exigences de s\u00e9curit\u00e9 qui s'appliquent au d\u00e9veloppement, il y a des v\u00e9rifications, des pentests \u2014 pourquoi ne pas transformer tout cela en une forme compr\u00e9hensible et utile pour tous ?<\/p>\n<p>En g\u00e9n\u00e9ral, les exigences sont un long document qui tra\u00eene sur une \u00e9tag\u00e8re. Il y a eu un cas o\u00f9 nous sommes all\u00e9s dans une entreprise pour examiner les processus et avons demand\u00e9 \u00e0 voir les exigences de s\u00e9curit\u00e9 pour le logiciel. Le sp\u00e9cialiste responsable a cherch\u00e9 longtemps :<\/p>\n<p><i>\u2014 Maintenant, je sais qu'il y a quelque part dans mes notes le chemin vers ce document.<\/i><\/p>\n<p>Au final, nous avons obtenu le document apr\u00e8s une semaine.<\/p>\n<p>Pour les exigences, les v\u00e9rifications et autres, cr\u00e9ez une page, par exemple sur\u00a0<b>Confluence<\/b>\u00a0\u2014 c'est pratique pour tout le monde.<\/p>\n<blockquote><p>Il est plus facile de reformater ce qui existe d\u00e9j\u00e0 et de l'utiliser comme point de d\u00e9part.<\/p><\/blockquote>\n<p><\/p>\n<h3>Utilisez des Security Champions <\/h3>\n<p>\nEn g\u00e9n\u00e9ral, dans une entreprise moyenne, pour 100-200 d\u00e9veloppeurs, il y a un sp\u00e9cialiste de la s\u00e9curit\u00e9 qui remplit plusieurs fonctions et qui ne peut physiquement pas tout v\u00e9rifier. M\u00eame s'il fait de son mieux \u2014 il ne peut pas inspecter tout le code g\u00e9n\u00e9r\u00e9 par le d\u00e9veloppement tout seul. Pour de tels cas, le concept de <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/Security_Champions\"><b>Security Champions<\/b><\/a><\/noindex>.<\/p>\n<blockquote><p>Les Champions de la S\u00e9curit\u00e9 sont des personnes au sein de l'\u00e9quipe de d\u00e9veloppement qui se soucient de la s\u00e9curit\u00e9 de votre produit.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/c67728db4a6e34407da199387eba2bb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe Champion de la S\u00e9curit\u00e9 est un point d'entr\u00e9e dans l'\u00e9quipe de d\u00e9veloppement et un \u00e9vang\u00e9liste de la s\u00e9curit\u00e9 en une seule personne.<\/p>\n<p>En g\u00e9n\u00e9ral, lorsque quelqu'un de l'\u00e9quipe de d\u00e9veloppement vient avec un expert en s\u00e9curit\u00e9 et signale une erreur dans le code, il re\u00e7oit une r\u00e9ponse \u00e9tonn\u00e9e :<\/p>\n<p><i>\u2014 Et vous \u00eates qui ? Je vous vois pour la premi\u00e8re fois. Tout va bien pour moi \u2014 mon senior a valid\u00e9 lors de la revue de code, nous continuons !<\/i><\/p>\n<p>C'est une situation typique, car il y a beaucoup plus de confiance envers les seniors ou simplement les coll\u00e8gues avec qui le d\u00e9veloppeur interagit constamment au travail et lors des revues de code. Si c'est un Champion de la S\u00e9curit\u00e9 qui indique une erreur et ses cons\u00e9quences, sa parole aura plus de poids.<\/p>\n<p>Les d\u00e9veloppeurs connaissent \u00e9galement mieux leur code qu'un expert en s\u00e9curit\u00e9. Pour une personne ayant au minimum 5 projets dans un outil d'analyse statique, il est g\u00e9n\u00e9ralement difficile de se souvenir de toutes les nuances. Les Champions de la S\u00e9curit\u00e9 connaissent leur produit : ce qui interagit avec quoi et quoi surveiller en premier \u2014 ils sont plus efficaces.<\/p>\n<p>R\u00e9fl\u00e9chissez donc \u00e0 la possibilit\u00e9 d'impl\u00e9menter des Champions de la S\u00e9curit\u00e9 pour \u00e9largir l'influence de l'\u00e9quipe de s\u00e9curit\u00e9. Pour le champion lui-m\u00eame, c'est \u00e9galement b\u00e9n\u00e9fique : d\u00e9veloppement professionnel dans un nouveau domaine, \u00e9largissement des connaissances techniques, am\u00e9lioration des comp\u00e9tences techniques, manag\u00e9riales et de leadership, augmentation de la valeur sur le march\u00e9. C'est un \u00e9l\u00e9ment de l'ing\u00e9nierie sociale, vos \u00ab yeux \u00bb dans l'\u00e9quipe de d\u00e9veloppement.<\/p>\n<h2>\u00c9tapes de test<\/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\">La r\u00e8gle des 20 sur 80<\/a><\/noindex>\u00a0stipule que 20 % des efforts g\u00e9n\u00e8rent 80 % des r\u00e9sultats. Ces 20 % concernent les pratiques d'analyse des applications qui peuvent et doivent \u00eatre automatis\u00e9es. Des exemples de telles activit\u00e9s sont l'analyse statique \u2014 <b>SAST<\/b>, l'analyse dynamique \u2014 <b>DAST,<\/b> et\u00a0<b>le contr\u00f4le Open Source<\/b>. Je vais expliquer plus en d\u00e9tail les activit\u00e9s, ainsi que les outils, et les sp\u00e9cificit\u00e9s auxquelles nous faisons g\u00e9n\u00e9ralement face lors de leur int\u00e9gration dans le processus, et comment le faire correctement.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/db720e0879cdd1ed818461ffb5f927da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Probl\u00e8mes principaux des outils<\/h3>\n<p>\nJe vais mettre en \u00e9vidence les probl\u00e8mes pertinents pour tous les outils qui n\u00e9cessitent une attention particuli\u00e8re. Je vais les examiner plus en d\u00e9tail pour ne pas avoir \u00e0 me r\u00e9p\u00e9ter.<\/p>\n<p><b>Longue dur\u00e9e d'analyse. <\/b>Si le temps \u00e9coul\u00e9 entre le commit et le passage en production est de 30 minutes pour tous les tests et la compilation, alors les v\u00e9rifications de s\u00e9curit\u00e9 prendront une journ\u00e9e. Personne ne fera tra\u00eener le processus. Prenez en compte cette sp\u00e9cificit\u00e9 et tirez-en des conclusions.<\/p>\n<p><b>Niveau \u00e9lev\u00e9 de faux n\u00e9gatifs ou de faux positifs. <\/b>Tous les produits sont diff\u00e9rents, chaque \u00e9quipe utilise diff\u00e9rents frameworks et son propre style de codage. Sur diff\u00e9rentes bases de code et technologies, les outils peuvent montrer un niveau vari\u00e9 de faux n\u00e9gatifs et de faux positifs. Donc, regardez ce qui est pertinent dans\u00a0<b>votre<\/b> entreprise et pour <b>vos<\/b> applications qui montrera un bon et fiable r\u00e9sultat.<\/p>\n<p><b>Pas d'int\u00e9grations avec les outils existants<\/b>. Examinez les outils en fonction des int\u00e9grations avec ce que vous utilisez d\u00e9j\u00e0. Par exemple, si vous utilisez Jenkins ou TeamCity, v\u00e9rifiez l'int\u00e9gration des outils pr\u00e9cis\u00e9ment avec ce logiciel, et non avec GitLab CI que vous n'utilisez pas.<\/p>\n<p><b>Absence ou complexit\u00e9 excessive de personnalisation. <\/b>Si un outil n'a pas d'API, \u00e0 quoi bon ? Tout ce qui peut \u00eatre fait dans l'interface doit \u00eatre accessible via l'API. Id\u00e9alement, l'outil devrait permettre de personnaliser les v\u00e9rifications.<\/p>\n<p><b>Pas de feuille de route pour le d\u00e9veloppement du produit. <\/b>Le d\u00e9veloppement ne stagne pas, nous utilisons toujours de nouveaux frameworks et fonctionnalit\u00e9s, et r\u00e9\u00e9crivons l'ancien code dans de nouveaux langages. Nous voulons \u00eatre s\u00fbrs que l'outil que nous ach\u00e8terons supportera de nouveaux frameworks et technologies. Il est donc important de savoir que le produit a une v\u00e9ritable et correcte <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\">feuille de route<\/a><\/noindex> de d\u00e9veloppement.<\/p>\n<h3>Particularit\u00e9s du processus<\/h3>\n<p>\nEn plus des particularit\u00e9s des outils, prenez \u00e9galement en compte les sp\u00e9cificit\u00e9s du processus de d\u00e9veloppement. Par exemple, g\u00eaner le d\u00e9veloppement est une erreur classique. Voyons quelles autres particularit\u00e9s doivent \u00eatre prises en compte et sur quoi l'\u00e9quipe de s\u00e9curit\u00e9 doit se concentrer.<\/p>\n<p>Pour ne pas retarder les d\u00e9lais de d\u00e9veloppement et de mise en production, cr\u00e9ez <b>diff\u00e9rentes r\u00e8gles<\/b> et diff\u00e9rents <b>show stoppers\u00a0<\/b>\u2014 des crit\u00e8res d'arr\u00eat du processus de compilation en cas de vuln\u00e9rabilit\u00e9s \u2014 <b>pour diff\u00e9rents environnements<\/b>. Par exemple, nous comprenons que la branche actuelle est destin\u00e9e \u00e0 un environnement de d\u00e9veloppement ou UAT, donc nous ne devons pas arr\u00eater et ne pas dire :<\/p>\n<p><i>\u2014 Vous avez ici des vuln\u00e9rabilit\u00e9s, vous n'irez nulle part !<\/i><\/p>\n<p>\u00c0 ce stade, il est important d'informer les d\u00e9veloppeurs qu'il existe des probl\u00e8mes de s\u00e9curit\u00e9 auxquels il convient de pr\u00eater attention.<\/p>\n<p><b>La pr\u00e9sence de vuln\u00e9rabilit\u00e9s n'est pas un obstacle \u00e0 des tests ult\u00e9rieurs.<\/b>: manuel, int\u00e9gration ou manuel. D'un autre c\u00f4t\u00e9, nous devons somehow am\u00e9liorer la s\u00e9curit\u00e9 du produit, et pour que les d\u00e9veloppeurs ne n\u00e9gligent pas ce que la s\u00e9curit\u00e9 trouve. C'est pourquoi parfois nous proc\u00e9dons ainsi : sur le stand, lorsque cela est publi\u00e9 dans l'environnement de d\u00e9veloppement, nous informons simplement le d\u00e9veloppement :<\/p>\n<p><i>\u2014 Les gars, vous avez des probl\u00e8mes, veuillez y pr\u00eater attention.<\/i><\/p>\n<p>\u00c0 l'\u00e9tape UAT, nous montrons \u00e0 nouveau les avertissements sur les vuln\u00e9rabilit\u00e9s, et \u00e0 l'\u00e9tape de lancement, nous disons :<\/p>\n<p><i>\u2014 Les gars, nous avons averti plusieurs fois, vous n'avez rien fait \u2014 nous ne vous laisserons pas sortir avec \u00e7a.<\/i><\/p>\n<p>En parlant de code et de dynamique, il faut montrer et avertir uniquement au sujet des vuln\u00e9rabilit\u00e9s des fonctionnalit\u00e9s et du code qui viennent d'\u00eatre \u00e9crits dans cette fonctionnalit\u00e9. Si le d\u00e9veloppeur a d\u00e9plac\u00e9 un bouton de 3 pixels et que nous lui disons qu'il a une injection SQL et qu'il doit donc corriger cela imm\u00e9diatement \u2014 c'est incorrect. Regardez uniquement ce qui a \u00e9t\u00e9 \u00e9crit maintenant, et le changement qui arrive dans l'application.<\/p>\n<p>Supposons que nous ayons un certain d\u00e9faut fonctionnel \u2014 comment l'application ne doit pas fonctionner : l'argent n'est pas transf\u00e9r\u00e9, en cliquant sur le bouton, il n'y a pas de redirection vers la page suivante ou le produit ne se charge pas. <b>Les d\u00e9fauts de s\u00e9curit\u00e9<\/b>\u00a0\u2014 ce sont des d\u00e9fauts similaires, mais non pas dans le cadre du fonctionnement de l'application, mais de la s\u00e9curit\u00e9. <\/p>\n<blockquote><p>Tous les probl\u00e8mes de qualit\u00e9 logicielle ne sont pas des probl\u00e8mes de s\u00e9curit\u00e9. Mais tous les probl\u00e8mes de s\u00e9curit\u00e9 sont li\u00e9s \u00e0 la qualit\u00e9 du logiciel. Sherif Mansour, Expedia.<\/p><\/blockquote>\n<p>\n\u00c9tant donn\u00e9 que toutes les vuln\u00e9rabilit\u00e9s sont des d\u00e9fauts similaires, elles doivent se trouver l\u00e0 o\u00f9 se trouvent tous les d\u00e9fauts de d\u00e9veloppement. Donc oubliez les rapports et les PDF effrayants que personne ne lit.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/e54e64658a3882bdc68a48c6ef426746.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuand je travaillais dans une entreprise de d\u00e9veloppement, j'ai re\u00e7u un rapport d'outils d'analyse statique. Je l'ai ouvert, j'ai \u00e9t\u00e9 horrifi\u00e9, j'ai pr\u00e9par\u00e9 un caf\u00e9, j'ai feuillet\u00e9 350 pages, je l'ai ferm\u00e9 et je suis retourn\u00e9 travailler. <b>Les grands rapports sont des rapports morts<\/b>. Ils ne vont g\u00e9n\u00e9ralement nulle part, les emails sont supprim\u00e9s, oubli\u00e9s, perdus ou les affaires disent qu'elles acceptent les risques.<\/p>\n<p>Que faire ? Les d\u00e9fauts confirm\u00e9s que nous avons trouv\u00e9s sont simplement transform\u00e9s en un format adapt\u00e9 au d\u00e9veloppement, par exemple en les rassemblant dans le backlog de Jira. Nous priorisons et corrigeons les d\u00e9fauts selon leur priorit\u00e9, en parall\u00e8le avec les d\u00e9fauts fonctionnels et ceux des tests.<\/p>\n<h2>Analyse statique - SAST<\/h2>\n<p>\n<b>Il s'agit d'une analyse du code \u00e0 la recherche de vuln\u00e9rabilit\u00e9s.<\/b>, mais ce n'est pas la m\u00eame chose que SonarQube. Nous v\u00e9rifions non seulement selon des motifs ou un style. Lors de l'analyse, plusieurs approches sont appliqu\u00e9es : selon l'arbre des vuln\u00e9rabilit\u00e9s, par\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>, par l'analyse des fichiers de configuration. C'est tout ce qui concerne directement le code.<\/p>\n<p><b>Avantages de l'approche<\/b>: <b>d\u00e9tection des vuln\u00e9rabilit\u00e9s dans le code \u00e0 un stade pr\u00e9coce du d\u00e9veloppement<\/b>, lorsqu'il n'y a pas encore de stands et d'outils pr\u00eats, et<b>\u00a0possibilit\u00e9 de scan incr\u00e9mental<\/b>: scanner la partie du code qui a chang\u00e9 et uniquement la fonctionnalit\u00e9 sur laquelle nous travaillons actuellement, ce qui r\u00e9duit le temps de scan.<\/p>\n<p><b>Inconv\u00e9nients<\/b>\u00a0\u2014 c'est l'absence de support pour les langages n\u00e9cessaires.<\/p>\n<p><b>Int\u00e9grations n\u00e9cessaires, <\/b>qui, \u00e0 mon avis subjectif, doivent \u00eatre dans les outils :<\/p>\n<ul>\n<li>Outils d'int\u00e9gration : Jenkins, TeamCity et Gitlab CI.\n<\/li>\n<li>Environnement de d\u00e9veloppement : Intellij IDEA, Visual Studio. Il est plus pratique pour le d\u00e9veloppeur de ne pas fouiller dans une interface incompr\u00e9hensible qu'il doit encore m\u00e9moriser, mais de voir directement sur son lieu de travail, dans son propre environnement de d\u00e9veloppement, toutes les int\u00e9grations n\u00e9cessaires et les vuln\u00e9rabilit\u00e9s qu'il a trouv\u00e9es.\n<\/li>\n<li>Revue de code : SonarQube et revue manuelle.\n<\/li>\n<li>Suivi des d\u00e9fauts : Jira et Bugzilla.\n<\/li>\n<\/ul>\n<p>\nSur l'image, quelques-uns des meilleurs repr\u00e9sentants de l'analyse statique.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/bab3420874ac090d4d107edb0d2b857b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCe ne sont pas les outils qui comptent, mais le processus, c'est pourquoi il existe des solutions Open Source qui sont \u00e9galement tr\u00e8s bonnes pour tester le processus.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/4f2c278922c291b15922bc5748f87dc3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLes SAST Open Source ne trouveront pas un nombre \u00e9norme de vuln\u00e9rabilit\u00e9s ou des DataFlow complexes, mais lors de la construction du processus, ils peuvent et doivent \u00eatre utilis\u00e9s. Ils aident \u00e0 comprendre comment le processus sera \u00e9tabli, qui sera responsable des bugs, qui signalera, qui rendra compte. Si vous souhaitez r\u00e9aliser la premi\u00e8re \u00e9tape dans l'\u00e9tablissement de la s\u00e9curit\u00e9 de votre code, utilisez des solutions Open Source.<\/p>\n<p>Comment l'int\u00e9grer si vous \u00eates au d\u00e9but du chemin, que vous n'avez rien : ni CI, ni Jenkins, ni TeamCity ? Examinons les int\u00e9grations dans le processus.<\/p>\n<h3>Int\u00e9gration au niveau du CVS<\/h3>\n<p>\nSi vous avez Bitbucket ou GitLab, vous pouvez faire une int\u00e9gration au niveau <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/CVS\">Concurrent Versions System<\/a><\/noindex>.<\/p>\n<p><b>Sur \u00e9v\u00e9nement<\/b>\u00a0\u2014 pull request, commit. Vous scannez le code et dans le statut de construction, vous montrez si le contr\u00f4le de s\u00e9curit\u00e9 a r\u00e9ussi ou \u00e9chou\u00e9.<\/p>\n<p><b>Retour d'information. <\/b>Il est essentiel d'avoir toujours un retour d'information. Si vous avez simplement ex\u00e9cut\u00e9 quelque chose du c\u00f4t\u00e9 de la s\u00e9curit\u00e9, que vous l'avez rang\u00e9 dans une bo\u00eete sans en parler \u00e0 personne, et que vous d\u00e9versez une multitude de bogues \u00e0 la fin du mois, ce n'est ni correct ni bon.<\/p>\n<h3>Int\u00e9gration avec le syst\u00e8me de r\u00e9vision de code<\/h3>\n<p>\nUn jour, nous avons d\u00e9fini comme r\u00e9viseur par d\u00e9faut sur des projets importants un utilisateur technique d'AppSec. Selon que des erreurs sont d\u00e9tect\u00e9es dans le nouveau code ou non, le r\u00e9viseur du pull request attribut un statut 'accept' ou 'need work' \u2014 soit tout va bien, soit des am\u00e9liorations sont n\u00e9cessaires avec des liens indiquant ce qu'il faut pr\u00e9cis\u00e9ment am\u00e9liorer. Pour l'int\u00e9gration avec la version mise en production, nous avons activ\u00e9 l'interdiction de fusion si le test de s\u00e9curit\u00e9 n'a pas \u00e9t\u00e9 r\u00e9ussi. Nous avons inclus cela dans la r\u00e9vision de code manuelle, et les autres participants au processus pouvaient voir les statuts de s\u00e9curit\u00e9 pour ce processus particulier.<\/p>\n<h3>Int\u00e9gration avec SonarQube<\/h3>\n<p>\nBeaucoup en ont <noindex><a rel=\"nofollow\" href=\"https:\/\/de.wikipedia.org\/wiki\/Quality_Gate\">quality gate<\/a><\/noindex> pour la qualit\u00e9 du code. Ici, c'est pareil \u2014 on peut \u00e9tablir les m\u00eames gates uniquement pour les outils SAST. Il y aura la m\u00eame interface, le m\u00eame quality gate, mais cela s'appellera <b>security gate<\/b>. Et de plus, si vous avez un processus utilisant SonarQube, tout peut \u00eatre int\u00e9gr\u00e9 sans probl\u00e8mes.<\/p>\n<h3>Int\u00e9gration au niveau CI<\/h3>\n<p>\nC'est assez simple ici:<\/p>\n<ul>\n<li><b>Au m\u00eame niveau que les autotests<\/b>, les tests unitaires.\n<\/li>\n<li><b>S\u00e9paration par \u00e9tapes de d\u00e9veloppement<\/b>: dev, test, prod. Diff\u00e9rents ensembles de r\u00e8gles peuvent \u00eatre activ\u00e9s, ou diff\u00e9rentes conditions d'\u00e9chec: nous arr\u00eatons la construction, nous ne l'arr\u00eatons pas.\n<\/li>\n<li><b>Lancement synchrone\/asynchrone<\/b>. Nous attendons que les tests de s\u00e9curit\u00e9 soient termin\u00e9s ou non. C'est-\u00e0-dire que nous les avons simplement lanc\u00e9s et continuons, puis nous recevons le statut que tout va bien ou mal.\n<\/li>\n<\/ul>\n<p>\nTout cela dans un monde id\u00e9al. Dans la vie r\u00e9elle, cela n'existe pas, mais nous aspirons \u00e0 cela. Le r\u00e9sultat des contr\u00f4les de s\u00e9curit\u00e9 doit \u00eatre similaire aux r\u00e9sultats des tests unitaires.<\/p>\n<p>Par exemple, nous avons pris un grand projet et d\u00e9cid\u00e9 que d\u00e9sormais nous allons le scanner avec SAST \u2014 OK. Nous avons charg\u00e9 ce projet dans SAST, il nous a fourni 20 000 vuln\u00e9rabilit\u00e9s et par une d\u00e9cision volontaire, nous avons accept\u00e9 que tout soit en ordre. 20 000 vuln\u00e9rabilit\u00e9s repr\u00e9sentent notre dette technique. Nous allons ranger cette dette dans une bo\u00eete, et nous allons progressivement la r\u00e9soudre et ouvrir des tickets dans les traqueurs de d\u00e9fauts. Nous allons engager une entreprise, tout faire nous-m\u00eames ou nous faire aider par des Security Champions \u2014 et notre dette technique va diminuer.<\/p>\n<p>Quant \u00e0 toutes les vuln\u00e9rabilit\u00e9s nouvellement apparues dans le nouveau code, elles doivent \u00eatre corrig\u00e9es comme les erreurs dans les tests unitaires ou les tests automatis\u00e9s. Pour le dire autrement, la compilation se lance, des tests passent et deux tests de s\u00e9curit\u00e9 \u00e9chouent. OK \u2014 nous avons regard\u00e9 ce qui s'est pass\u00e9, corrig\u00e9 le premier, corrig\u00e9 le second, la prochaine fois tout fonctionne \u2014 pas de nouvelles vuln\u00e9rabilit\u00e9s et les tests ne sont pas \u00e9chou\u00e9s. Si cette t\u00e2che est plus complexe et n\u00e9cessite une bonne compr\u00e9hension, ou si le correctif des vuln\u00e9rabilit\u00e9s concerne des couches importantes du syst\u00e8me : un ticket est ouvert dans le traqueur de d\u00e9fauts, il est prioris\u00e9 et corrig\u00e9. Malheureusement, le monde n'est pas parfait et les tests \u00e9chouent parfois.<\/p>\n<p>Exemple de s\u00e9curit\u00e9 gate \u2014 analogue de quality gate, en fonction de la pr\u00e9sence et du nombre de vuln\u00e9rabilit\u00e9s dans le code.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/eb30d3c7988b28c2cb25e9656871ec96.png\" style=\"display:block;margin: 0 auto;\" \/>Int\u00e9gration avec SonarQube \u2014 le plugin est install\u00e9, tout est tr\u00e8s pratique et excellent.<\/p>\n<h3>Int\u00e9gration avec l'environnement de d\u00e9veloppement<\/h3>\n<p>\n<b>Fonctionnalit\u00e9s d'int\u00e9gration :<\/b><\/p>\n<ul>\n<li>Lancement du scan depuis l'environnement de d\u00e9veloppement avant le commit.\n<\/li>\n<li>Consultation des r\u00e9sultats.\n<\/li>\n<li>Analyse des r\u00e9sultats.\n<\/li>\n<li>Synchronisation avec le serveur.\n<\/li>\n<\/ul>\n<p>\nVoici \u00e0 quoi ressemble l'obtention des r\u00e9sultats depuis le serveur.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/270d4af76fddc0ceebca908c7d3835b8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDans notre environnement de d\u00e9veloppement <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/idea\/\">Intellij IDEA<\/a><\/noindex> appara\u00eet simplement un point suppl\u00e9mentaire, qui informe que des vuln\u00e9rabilit\u00e9s ont \u00e9t\u00e9 d\u00e9tect\u00e9es lors du scan. On peut corriger le code imm\u00e9diatement, voir les recommandations et\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_graph\">Flow Graph<\/a><\/noindex>. Tout cela est situ\u00e9 sur le poste de travail du d\u00e9veloppeur, c'est tr\u00e8s pratique \u2014 pas besoin d'aller sur d'autres liens et de chercher des \u00e9l\u00e9ments suppl\u00e9mentaires.<\/p>\n<h2>Open Source<\/h2>\n<p>\nC'est mon sujet pr\u00e9f\u00e9r\u00e9. Tout le monde utilise des biblioth\u00e8ques open source \u2014 pourquoi \u00e9crire une multitude de solutions de contournement et de v\u00e9los, quand on peut utiliser une biblioth\u00e8que pr\u00eate, dans laquelle tout est d\u00e9j\u00e0 impl\u00e9ment\u00e9 ?<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/05b9cd5a8b269af2a3f59931a0774778.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBien s\u00fbr, c'est vrai, mais les biblioth\u00e8ques sont \u00e9galement \u00e9crites par des personnes, elles comportent aussi des risques et pr\u00e9sentent des vuln\u00e9rabilit\u00e9s dont on parle r\u00e9guli\u00e8rement, ou constamment. C'est pourquoi il y a une \u00e9tape suivante dans la s\u00e9curit\u00e9 des applications : l'analyse des composants Open Source.<\/p>\n<h3>Analyse Open Source \u2013 OSA<\/h3>\n<p>\nL'outil comprend trois grandes \u00e9tapes.<\/p>\n<p><b>Recherche de vuln\u00e9rabilit\u00e9s dans les biblioth\u00e8ques. <\/b>Par exemple, l'outil sait que nous utilisons une certaine biblioth\u00e8que, et que dans\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Common_Vulnerabilities_and_Exposures\">CVE<\/a><\/noindex> ou dans les bug trackers, il existe des vuln\u00e9rabilit\u00e9s li\u00e9es \u00e0 cette version de la biblioth\u00e8que. Lors de son utilisation, l'outil signalera que la biblioth\u00e8que est vuln\u00e9rable et conseillera d'utiliser une autre version sans vuln\u00e9rabilit\u00e9s.<\/p>\n<p><b>Analyse de la conformit\u00e9 des licences. <\/b>Pour l'instant, ce n'est pas tr\u00e8s populaire chez nous, mais si vous travaillez avec l'\u00e9tranger, vous pouvez parfois rencontrer des probl\u00e8mes pour avoir utilis\u00e9 un composant Open Source qui ne peut pas \u00eatre utilis\u00e9 ou modifi\u00e9. Selon la politique de la biblioth\u00e8que sous licence, nous ne pouvons pas faire cela. Ou, si nous l'avons modifi\u00e9 et l'utilisons, nous devons rendre notre code public. Bien s\u00fbr, personne ne veut publier le code de ses produits, mais il existe des moyens de se prot\u00e9ger contre cela.<\/p>\n<p><b>Analyse des composants utilis\u00e9s dans l'environnement industriel. <\/b>Imaginons une situation hypoth\u00e9tique o\u00f9 nous avons enfin termin\u00e9 le d\u00e9veloppement et sorti la derni\u00e8re version de notre microservice en production. Il fonctionne parfaitement \u2013 une semaine, un mois, un an. Nous ne le mettons pas \u00e0 jour, nous ne faisons pas de v\u00e9rifications de s\u00e9curit\u00e9, tout semble bien. Mais soudain, deux semaines apr\u00e8s la sortie, une vuln\u00e9rabilit\u00e9 critique est d\u00e9couverte dans le composant Open Source que nous utilisons dans cette version, en production. Si nous ne notons pas ce que nous utilisons et o\u00f9, nous ne verrons tout simplement pas cette vuln\u00e9rabilit\u00e9. Certains outils offrent une possibilit\u00e9 de surveillance des vuln\u00e9rabilit\u00e9s dans les biblioth\u00e8ques actuellement utilis\u00e9es en production. C'est tr\u00e8s utile.<\/p>\n<p><b>Fonctionnalit\u00e9s :<\/b><\/p>\n<ul>\n<li>Diff\u00e9rentes politiques pour diff\u00e9rentes \u00e9tapes de d\u00e9veloppement.\n<\/li>\n<li>Surveillance des composants dans l'environnement industriel.\n<\/li>\n<li>Contr\u00f4le des biblioth\u00e8ques au sein de l'organisation.\n<\/li>\n<li>Prise en charge de divers syst\u00e8mes de construction et langues.\n<\/li>\n<li>Analyse des images Docker.\n<\/li>\n<\/ul>\n<p>\nQuelques exemples de leaders dans le domaine qui s'occupent de l'analyse Open Source.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/f1b05f86beb4a64f9bf3443963e3603b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nLe seul gratuit parmi eux est <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/OWASP_Dependency_Check\">V\u00e9rification de d\u00e9pendances<\/a><\/noindex> d'OWASP. Il peut \u00eatre int\u00e9gr\u00e9 d\u00e8s les premi\u00e8res \u00e9tapes pour voir comment il fonctionne et ce qu'il prend en charge. Cela concerne principalement tous les produits cloud, ou sur site, mais pour leur base, ils doivent quand m\u00eame envoyer des informations sur Internet. Ils n'envoient pas vos biblioth\u00e8ques, mais des hachages ou leurs propres valeurs calcul\u00e9es, ainsi que des empreintes vers leur serveur pour obtenir des nouvelles sur les vuln\u00e9rabilit\u00e9s.<\/p>\n<h3>Int\u00e9gration dans le processus<\/h3>\n<p>\n<b>Contr\u00f4le des biblioth\u00e8ques dans le p\u00e9rim\u00e8tre<\/b>, qui sont t\u00e9l\u00e9charg\u00e9es depuis des sources externes. Nous avons des d\u00e9p\u00f4ts externes et internes. Par exemple, notre instance Event Central utilise Nexus, et nous souhaitons qu'il n'y ait pas de vuln\u00e9rabilit\u00e9s de statut \u00ab critique \u00bb ou \u00ab \u00e9lev\u00e9 \u00bb dans notre d\u00e9p\u00f4t interne. Il est possible de configurer le proxy \u00e0 l'aide de l'outil Nexus Firewall Lifecycle pour que ces vuln\u00e9rabilit\u00e9s soient bloqu\u00e9es et ne p\u00e9n\u00e8trent pas dans le d\u00e9p\u00f4t interne.<\/p>\n<p><b>Int\u00e9gration dans le CI<\/b>. Sur un m\u00eame niveau que les tests automatis\u00e9s, les tests unitaires et la s\u00e9paration par \u00e9tapes de d\u00e9veloppement : dev, test, prod. \u00c0 chaque \u00e9tape, il est possible de t\u00e9l\u00e9charger n'importe quelle biblioth\u00e8que, d'utiliser ce que l'on veut, mais s'il y a quelque chose de s\u00e9rieux avec un statut \u00ab critique \u00bb, il pourrait \u00eatre judicieux d'attirer l'attention des d\u00e9veloppeurs \u00e0 l'\u00e9tape de la mise en production.<\/p>\n<p><b>Int\u00e9gration avec les artefacts<\/b>: Nexus et JFrog.<\/p>\n<p><b>Int\u00e9gration dans l'environnement de d\u00e9veloppement. <\/b>Les outils que vous choisissez doivent s'int\u00e9grer aux environnements de d\u00e9veloppement. Les d\u00e9veloppeurs doivent pouvoir acc\u00e9der aux r\u00e9sultats de l'analyse depuis leur poste de travail ou avoir la possibilit\u00e9 de scanner et v\u00e9rifier le code pour d\u00e9tecter les vuln\u00e9rabilit\u00e9s avant de le valider dans le CVS.<\/p>\n<p><b>Int\u00e9gration dans le CD. <\/b>C'est une fonctionnalit\u00e9 g\u00e9niale que j'appr\u00e9cie beaucoup et dont j'ai d\u00e9j\u00e0 parl\u00e9 : la surveillance de l'apparition de nouvelles vuln\u00e9rabilit\u00e9s dans l'environnement de production. Cela fonctionne plus ou moins comme \u00e7a.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/605c638df343db5c47ab36b4dc00f41c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNous avons des <b>D\u00e9p\u00f4ts de composants publics<\/b>\u00a0\u2014 certains outils externes et notre d\u00e9p\u00f4t interne. Nous souhaitons qu'il ne contienne que des composants fiables. Lors du proxy des requ\u00eates, nous v\u00e9rifions que la biblioth\u00e8que t\u00e9l\u00e9charg\u00e9e ne pr\u00e9sente pas de vuln\u00e9rabilit\u00e9s. Si elle est soumise \u00e0 certaines politiques que nous \u00e9tablissons et que nous validons avec le d\u00e9veloppement, elle n\u2019est pas t\u00e9l\u00e9charg\u00e9e et un message indique d'utiliser une autre version. Par cons\u00e9quent, si la biblioth\u00e8que contient quelque chose de r\u00e9ellement critique et de mauvais, le d\u00e9veloppeur ne recevra pas la biblioth\u00e8que lors de l'installation \u2014 il devra utiliser une version ant\u00e9rieure ou ult\u00e9rieure.<\/p>\n<ul>\n<li>Lors de la construction, nous v\u00e9rifions que personne n'a inject\u00e9 quoi que ce soit de mauvais, que tous les composants sont s\u00fbrs et que personne n'a apport\u00e9 sur une cl\u00e9 USB quoi que ce soit de dangereux.\n<\/li>\n<li>Dans notre d\u00e9p\u00f4t, nous n'avons que des composants fiables. \n<\/li>\n<li>Lors du d\u00e9ploiement, nous v\u00e9rifions encore une fois le paquet lui-m\u00eame : war, jar, DL ou image Docker, pour nous assurer qu'il respecte la politique. \n<\/li>\n<li>Lors de la mise en production, nous surveillons ce qui se passe dans l'environnement industriel : des vuln\u00e9rabilit\u00e9s critiques apparaissent-elles ou non.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Analyse dynamique \u2014 DAST<\/h2>\n<p>\nLes outils d'analyse dynamique diff\u00e8rent radicalement de tout ce qui a \u00e9t\u00e9 \u00e9voqu\u00e9 auparavant. C'est une sorte de simulation du travail d'un utilisateur avec l'application. S'il s'agit d'une application web, nous envoyons des requ\u00eates en imitant le travail du client, nous cliquons sur les boutons en front-end, nous envoyons des donn\u00e9es artificielles \u00e0 partir de formulaires : guillemets, parenth\u00e8ses, caract\u00e8res dans diff\u00e9rents encodages, afin d'observer comment l'application fonctionne et traite les donn\u00e9es externes.<\/p>\n<p>Ce m\u00eame syst\u00e8me permet de v\u00e9rifier les vuln\u00e9rabilit\u00e9s mod\u00e8les dans les logiciels open source. \u00c9tant donn\u00e9 que le DAST ne sait pas quel open source nous utilisons, il envoie simplement des mod\u00e8les \u00ab malveillants \u00bb et analyse les r\u00e9ponses du serveur :<\/p>\n<p><i>\u2014 Aha, il y a un probl\u00e8me de d\u00e9s\u00e9rialisation ici, et ici il n'y en a pas.<\/i><\/p>\n<p>Il y a de grands risques, car si vous effectuez ce test de s\u00e9curit\u00e9 sur le m\u00eame environnement que celui utilis\u00e9 par les testeurs, des probl\u00e8mes d\u00e9sagr\u00e9ables peuvent survenir.<\/p>\n<ul>\n<li>Charge \u00e9lev\u00e9e sur le serveur d'application r\u00e9seau.\n<\/li>\n<li>Pas d'int\u00e9grations.\n<\/li>\n<li>Possibilit\u00e9 de modifier les param\u00e8tres de l'application analys\u00e9e.\n<\/li>\n<li>Pas de support pour les technologies n\u00e9cessaires.\n<\/li>\n<li>Complexit\u00e9 de la configuration.\n<\/li>\n<\/ul>\n<p>\nNous avons eu une situation o\u00f9 nous avons finalement lanc\u00e9 AppScan : il a fallu longtemps pour obtenir l'acc\u00e8s \u00e0 l'application, obtenir 3 comptes et nous \u00e9tions contents - enfin nous pourrions tout v\u00e9rifier ! Nous avons lanc\u00e9 le scan, et la premi\u00e8re chose qu'AppScan a faite - il est all\u00e9 dans le panneau d'administration, a cliqu\u00e9 sur tous les boutons, a chang\u00e9 la moiti\u00e9 des donn\u00e9es, et ensuite il a carr\u00e9ment tu\u00e9 le serveur avec ses <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mailform.io\/\">mailform<\/a><\/noindex>-requ\u00eates. Le d\u00e9veloppement avec les tests a dit :<\/p>\n<p><i>\u2014 Les gars, vous rigolez ?! Nous vous avons donn\u00e9 des comptes, et vous avez mis le stand hors service !<\/i><\/p>\n<p>Prenez en compte les risques potentiels. Id\u00e9alement, pr\u00e9parez un stand s\u00e9par\u00e9 pour tester la s\u00e9curit\u00e9 informatique, qui sera isol\u00e9 de l'environnement pour au moins un certain temps, et il est pr\u00e9f\u00e9rable de v\u00e9rifier l'admin manuellement. C'est un pentest - ces quelques pourcents d'efforts que nous ne prenons pas en compte maintenant. <\/p>\n<p>Il vaut la peine de consid\u00e9rer que cela peut \u00eatre utilis\u00e9 comme une analogie aux tests de charge. \u00c0 la premi\u00e8re \u00e9tape, vous pouvez activer un scanner dynamique avec 10-15 flux et voir ce que cela donne, mais g\u00e9n\u00e9ralement, comme le montre la pratique, rien de bon.<\/p>\n<p>Quelques ressources que nous utilisons habituellement.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/45a25dbe2a2d053e6ed16d31b6ac53ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl convient de souligner <noindex><a rel=\"nofollow\" href=\"https:\/\/portswigger.net\/burp\">Burp Suite<\/a><\/noindex>\u00a0\u2014 c'est le \u00ab couteau suisse \u00bb pour tout sp\u00e9cialiste de la s\u00e9curit\u00e9. Tout le monde l'utilise, et il est tr\u00e8s pratique. Une nouvelle version d\u00e9mo de l'\u00e9dition entreprise est maintenant sortie. Auparavant, c'\u00e9tait simplement un utilitaire stand alone avec des plugins, mais maintenant, enfin, les d\u00e9veloppeurs cr\u00e9ent un grand serveur, \u00e0 partir duquel il sera possible de g\u00e9rer plusieurs agents. C'est g\u00e9nial, je recommande d'essayer.<\/p>\n<h3>Int\u00e9gration dans le processus<\/h3>\n<p>\nL'int\u00e9gration se fait assez bien et simplement : <b>lancer le scan apr\u00e8s une installation r\u00e9ussie <\/b>de l'application sur le stand et\u00a0<b>scan apr\u00e8s la r\u00e9ussite des tests d'int\u00e9gration<\/b>.<\/p>\n<p>Si les int\u00e9grations ne fonctionnent pas ou s'il y a des bouchons et des fonctions mock, c'est inutile et sans valeur - quel que soit le pattern que nous envoyons, le serveur r\u00e9pondra toujours de la m\u00eame mani\u00e8re.<\/p>\n<ul>\n<li>Id\u00e9alement - un stand s\u00e9par\u00e9 pour les tests.\n<\/li>\n<li>Avant de commencer les tests, enregistrez la s\u00e9quence de connexion.\n<\/li>\n<li>Les tests du syst\u00e8me d'administration - uniquement manuels.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Processus<\/h2>\n<p>\nUn peu en g\u00e9n\u00e9ral sur le processus et sur le fonctionnement de chaque outil, en particulier. Toutes les applications sont diff\u00e9rentes - certaines fonctionnent mieux avec l'analyse dynamique, d'autres avec l'analyse statique, d'autres avec l'analyse OpenSource, les pentests ou m\u00eame quelque chose d'autre, par exemple, les \u00e9v\u00e9nements avec\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Waf\">Waf<\/a><\/noindex>.<\/p>\n<blockquote><p>Chaque processus a besoin d'un contr\u00f4le.<\/p><\/blockquote>\n<p>\nPour comprendre comment fonctionne un processus et o\u00f9 il peut \u00eatre am\u00e9lior\u00e9, il est n\u00e9cessaire de collecter des m\u00e9triques de tout ce qui est \u00e0 port\u00e9e de main, y compris des m\u00e9triques de production, des m\u00e9triques d'outils et des donn\u00e9es des traqueurs de d\u00e9fauts.<\/p>\n<p>Toute donn\u00e9e est utile. Il faut analyser sous diff\u00e9rents angles o\u00f9 tel ou tel outil est mieux appliqu\u00e9 et o\u00f9 le processus conna\u00eet des faiblesses. Peut-\u00eatre faut-il examiner le temps de r\u00e9ponse du d\u00e9veloppement pour identifier les am\u00e9liorations possibles en fonction du temps. Plus il y a de donn\u00e9es, plus on peut \u00e9tablir des analyses allant des niveaux sup\u00e9rieurs aux d\u00e9tails de chaque processus.<\/p>\n<p><img decoding=\"async\" alt=\"La peur et la haine de DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/93e079b19c4c8189ce6ca4eaec186eed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c9tant donn\u00e9 que chaque analyseur statique et dynamique a ses propres API, ses propres m\u00e9thodes de lancement et principes, certains ont des planificateurs, d'autres non - nous d\u00e9veloppons un outil <b>AppSec Orchestrateur<\/b>, qui permet de cr\u00e9er un point d'entr\u00e9e unique pour tout le processus \u00e0 partir du produit et de le g\u00e9rer \u00e0 partir d'un seul endroit.<\/p>\n<p>Les managers, d\u00e9veloppeurs et ing\u00e9nieurs en s\u00e9curit\u00e9 ont un point d'entr\u00e9e unique \u00e0 partir duquel ils peuvent voir ce qui est en cours, configurer et lancer des scans, obtenir les r\u00e9sultats de ces scans et formuler des exigences. Nous essayons de nous \u00e9loigner des documents et de tout traduire dans un langage compr\u00e9hensible, comme celui utilis\u00e9 par le d\u00e9veloppement \u2014 des pages sur Confluence avec des statuts et des m\u00e9triques, des d\u00e9fauts dans Jira ou dans divers traqueurs de d\u00e9fauts, ou bien l'int\u00e9gration dans un processus synchrone\/asynchrone dans CI\/CD.<\/p>\n<h2>Principaux enseignements<\/h2>\n<p>\n<b>Les outils ne sont pas l'essentiel.<\/b> D'abord penser au processus - ensuite d\u00e9ployer des outils. Les outils sont bons, mais co\u00fbteux, donc on peut commencer par le processus et \u00e9tablir une interaction et une compr\u00e9hension entre le d\u00e9veloppement et la s\u00e9curit\u00e9. Du point de vue de la s\u00e9curit\u00e9 - il ne faut pas 'ralentir' tout \u00e0 la fois. Du point de vue du d\u00e9veloppement - s'il y a quelque chose de hautement critique, cela doit \u00eatre r\u00e9solu, et non ignor\u00e9.<\/p>\n<p><b>Qualit\u00e9 du produit<\/b>\u00a0<b>\u2014 un objectif commun<\/b> pour la s\u00e9curit\u00e9 et le d\u00e9veloppement. Nous faisons tous le m\u00eame travail, nous nous effor\u00e7ons de garantir que tout fonctionne correctement et qu'il n'y a pas de risques de r\u00e9putation ou de pertes financi\u00e8res. C'est pourquoi nous promouvons l'approche DevSecOps, SecDevOps pour \u00e9tablir la communication et am\u00e9liorer la qualit\u00e9 du produit.<\/p>\n<p><b>Commencez par ce qui existe d\u00e9j\u00e0<\/b>: exigences, architecture, v\u00e9rifications partielles, formations, lignes directrices. Il n'est pas n\u00e9cessaire d'appliquer toutes les pratiques \u00e0 tous les projets imm\u00e9diatement \u2014 <b>avancez de mani\u00e8re it\u00e9rative<\/b>. Il n'y a pas de norme unique \u2014 <b>exp\u00e9rimentez<\/b> et essayez diff\u00e9rentes approches et solutions.<\/p>\n<p><b>Il y a une \u00e9galit\u00e9 entre les d\u00e9fauts de s\u00e9curit\u00e9 de l'information et les d\u00e9fauts fonctionnels<\/b>.<\/p>\n<p><b>Automatisez tout<\/b>, ce qui bouge. Tout ce qui ne bouge pas \u2014 faites-le bouger et automatisez-le. Si quelque chose est fait manuellement, ce n'est pas un bon segment du processus. Il vaut peut-\u00eatre la peine de le revoir et de l'automatiser aussi.<\/p>\n<p>Si la taille de l'\u00e9quipe de s\u00e9curit\u00e9 de l'information est petite \u2014 <b>utilisez des Security Champions<\/b>.<\/p>\n<p>Peut-\u00eatre que ce dont je vous ai parl\u00e9 ne vous conviendra pas et vous inventerez quelque chose de propre \u2014 et c'est bien. Mais\u00a0<b>choisissez les outils en fonction des exigences de votre processus sp\u00e9cifique<\/b>. Ne vous laissez pas influencer par ce que dit la communaut\u00e9, que cet outil est mauvais et que celui-ci est bon. Peut-\u00eatre que sur votre produit, ce sera l'inverse.<\/p>\n<p><b>Exigences pour les outils.<\/b><\/p>\n<ul>\n<li>Faible niveau de faux positifs.\n<\/li>\n<li>Temps d'analyse ad\u00e9quat.\n<\/li>\n<li>Facilit\u00e9 d'utilisation.\n<\/li>\n<li>Disponibilit\u00e9 des int\u00e9grations.\n<\/li>\n<li>Compr\u00e9hension de la feuille de route de d\u00e9veloppement du produit.\n<\/li>\n<li>Possibilit\u00e9 de personnalisation des outils.\n<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p>La pr\u00e9sentation de Yuri a \u00e9t\u00e9 s\u00e9lectionn\u00e9e comme l'une des meilleures lors de DevOpsConf 2018. Pour d\u00e9couvrir encore plus d'id\u00e9es int\u00e9ressantes et de cas pratiques, venez les 27 et 28 mai \u00e0 Skolkovo pour\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow-rit\/2019\">DevOpsConf<\/a><\/noindex> dans le cadre de <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2019\">le festival RIT++<\/a><\/noindex>. Mieux encore, si vous \u00eates pr\u00eat \u00e0 partager votre exp\u00e9rience, alors <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-rit\">soumettez une demande<\/a><\/noindex> pour une pr\u00e9sentation avant le 21 avril.<\/p><\/blockquote>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/448488\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u00a0\u043d\u0430\u0441 \u0431\u044b\u043b\u043e 2\u00a0\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430, 4\u00a0\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0435\u043b\u043a\u0438 \u0438\u00a0250\u00a0\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u041d\u0435\u00a0\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u00a0\u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043d\u043e\u00a0\u0440\u0430\u0437 \u043d\u0430\u0447\u0430\u043b \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c DevSecOps, \u0442\u043e \u043d\u0430\u0434\u043e\u00a0\u0438\u0434\u0438 \u0434\u043e\u00a0\u043a\u043e\u043d\u0446\u0430. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a. \u0410\u0432\u0442\u043e\u0440\u044b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439: \u0414\u0436\u0430\u0441\u0442\u0438\u043d \u0420\u043e\u0439\u043b\u0430\u043d\u0434 \u0438\u00a0\u0414\u044d\u043d \u0425\u0430\u0440\u043c\u043e\u043d. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 SecDevOps? \u0410\u00a0DevSecOps? \u0412\u00a0\u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u044f? Application Security\u00a0\u2014 \u043e\u00a0\u0447\u0451\u043c \u044d\u0442\u043e? \u041f\u043e\u0447\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442? \u041d\u0430\u00a0\u0432\u0441\u0435 \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0437\u043d\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442 \u042e\u0440\u0438\u0439 \u0428\u0430\u0431\u0430\u043b\u0438\u043d [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23720,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31852","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - 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\/fr\/blog\/administrirovanie\/strah-i-nenavist-devsecops\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47La peur et la haine DevSecOps | ProHoster","description":"Nous avions 2 analyseurs de code, 4 outils de test dynamique, nos propres bricolages et 250 scripts.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/strah-i-nenavist-devsecops","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/31852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=31852"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/31852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/23720"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=31852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=31852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=31852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}