{"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\/pt\/blog\/administrirovanie\/strah-i-nenavist-devsecops","title":{"rendered":"Medo e \u00f3dio no DevSecOps","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>T\u00ednhamos 2 analisadores de c\u00f3digo, 4 ferramentas para testes din\u00e2micos, nossas cria\u00e7\u00f5es e 250 scripts. N\u00e3o que tudo isso fosse necess\u00e1rio no processo atual, mas, uma vez que come\u00e7amos a implementar o DevSecOps, \u00e9 preciso ir at\u00e9 o fim.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no 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\">Fonte<\/a><\/noindex>. Criadores dos personagens: Justin Roiland e Dan Harmon.<\/i><\/p>\n<p>O que \u00e9 SecDevOps? E DevSecOps? Quais s\u00e3o as diferen\u00e7as? O que \u00e9 Seguran\u00e7a de Aplica\u00e7\u00e3o? Por que a abordagem cl\u00e1ssica n\u00e3o funciona mais? Todas essas perguntas t\u00eam resposta <b>Yuri Shabalin<\/b> do\u00a0<b>Swordfish Security. <\/b>Yuri responder\u00e1 tudo em detalhes e analisar\u00e1 os problemas da transi\u00e7\u00e3o do modelo cl\u00e1ssico de Seguran\u00e7a de Aplica\u00e7\u00e3o para o processo DevSecOps: como abordar corretamente a incorpora\u00e7\u00e3o do processo de desenvolvimento seguro no processo DevOps sem quebrar nada, como passar pelas principais etapas de teste de seguran\u00e7a, quais ferramentas podem ser aplicadas, como se diferenciam e como configur\u00e1-las corretamente para evitar armadilhas.<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=\"Por que no hosting comum a administra\u00e7\u00e3o do PrestaShop \u00e9 lenta, e no seu n\u00e3o \u00e9?\" 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>Sobre o palestrante:<\/b> <b>Yuri Shabalin \u00e9 <\/b>Arquiteto Chefe de Seguran\u00e7a na <b>Swordfish Security<\/b>. Respons\u00e1vel pela implementa\u00e7\u00e3o do SSDL, pela integra\u00e7\u00e3o geral das ferramentas de an\u00e1lise de aplica\u00e7\u00f5es em um \u00fanico ecossistema de desenvolvimento e teste. 7 anos de experi\u00eancia em seguran\u00e7a da informa\u00e7\u00e3o. Trabalhou no Alfa-Bank, Sberbank e na Positive Technologies, que desenvolve software e fornece servi\u00e7os. Palestrante em confer\u00eancias internacionais como ZerONights, PHDays, RISSPA, OWASP.<\/p>\n<h2>Seguran\u00e7a de Aplica\u00e7\u00e3o: o que \u00e9?<\/h2>\n<p>\n<b>Seguran\u00e7a de Aplica\u00e7\u00e3o<\/b>\u00a0\u00e9 uma disciplina de seguran\u00e7a que se ocupa da seguran\u00e7a das aplica\u00e7\u00f5es. Isso n\u00e3o se refere \u00e0 infraestrutura ou \u00e0 seguran\u00e7a de rede, mas sim ao que escrevemos e no que os desenvolvedores trabalham \u2014 s\u00e3o as falhas e vulnerabilidades da pr\u00f3pria aplica\u00e7\u00e3o.<\/p>\n<p>Dire\u00e7\u00e3o <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>Ciclo de vida de desenvolvimento de seguran\u00e7a<\/b>\u00a0foi desenvolvido pela Microsoft. Na imagem \u2014 modelo can\u00f4nico de SDLC, cuja principal tarefa \u00e9 a participa\u00e7\u00e3o da seguran\u00e7a em cada etapa do desenvolvimento, desde os requisitos at\u00e9 o lan\u00e7amento e a produ\u00e7\u00e3o. A Microsoft percebeu que havia muitos bugs no produto, que estavam se tornando mais frequentes, e que era necess\u00e1rio fazer algo a respeito, ent\u00e3o prop\u00f4s essa abordagem que se tornou can\u00f4nica.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/466773b9a5bd355419fa1d6d1ddbca66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA Seguran\u00e7a de Aplica\u00e7\u00e3o e o SSDL n\u00e3o t\u00eam como foco a detec\u00e7\u00e3o de vulnerabilidades, como se costuma pensar, mas sim a preven\u00e7\u00e3o de seu surgimento. Com o tempo, a abordagem can\u00f4nica da Microsoft foi aprimorada e expandida, permitindo um mergulho mais profundo e detalhado.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/58d3e6aadd30594c018940bcb2a8248b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO SDLC can\u00f4nico \u00e9 altamente detalhado em v\u00e1rias metodologias - OpenSAMM, BSIMM, OWASP. As metodologias diferem, mas, no geral, s\u00e3o semelhantes.<\/p>\n<h3>Modelo de Maturidade para Construir Seguran\u00e7a<\/h3>\n<p>\nEu prefiro <b>BSIMM<\/b>\u00a0\u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bsimm.com\/\">Modelo de Maturidade para Construir Seguran\u00e7a<\/a><\/noindex>. A base da metodologia \u00e9 a divis\u00e3o do processo de Seguran\u00e7a da Aplica\u00e7\u00e3o em 4 dom\u00ednios: Governan\u00e7a, Intelig\u00eancia, Pontos de Contato SSDL e Implanta\u00e7\u00e3o. Em cada dom\u00ednio, existem 12 pr\u00e1ticas, apresentadas na forma de 112 atividades.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/ae0bbfd0dde335af886282672ed92367.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCada uma das 112 atividades tem <b>3 n\u00edveis de maturidade<\/b>: inicial, intermedi\u00e1rio e avan\u00e7ado. As 12 pr\u00e1ticas podem ser estudadas por se\u00e7\u00f5es, selecionar os t\u00f3picos importantes para voc\u00ea, entender como implement\u00e1-los e gradualmente adicionar elementos, como an\u00e1lise est\u00e1tica e din\u00e2mica de c\u00f3digo ou revis\u00e3o de c\u00f3digo. Voc\u00ea elabora um plano e, com ele, trabalha tranquilamente dentro do escopo das atividades escolhidas.<\/p>\n<h2>Por que DevSecOps<\/h2>\n<p><\/p>\n<blockquote><p>DevOps \u00e9 um processo amplo em que \u00e9 necess\u00e1rio se preocupar com a seguran\u00e7a.<\/p><\/blockquote>\n<p>\nInicialmente <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DevOps\"><b>DevOps<\/b><\/a><\/noindex> se previa a realiza\u00e7\u00e3o de verifica\u00e7\u00f5es de seguran\u00e7a. Na pr\u00e1tica, o n\u00famero de equipes de seguran\u00e7a era muito menor do que hoje, e elas atuavam n\u00e3o como participantes do processo, mas como uma entidade de controle e supervis\u00e3o que imp\u00f5e requisitos e verifica a qualidade do produto no final do lan\u00e7amento. Esse \u00e9 o abordado cl\u00e1ssico, no qual as equipes de seguran\u00e7a estavam isoladas da equipe de desenvolvimento e n\u00e3o participavam do processo.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/1c5958fb123313308bdd92c5471c44da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO principal problema reside no fato de que a seguran\u00e7a da informa\u00e7\u00e3o est\u00e1 separada do desenvolvimento. Normalmente, h\u00e1 um certo contorno de seguran\u00e7a da informa\u00e7\u00e3o e nele est\u00e3o 2-3 grandes e caras ferramentas. A cada seis meses, chega o c\u00f3digo-fonte ou o aplicativo que precisa ser verificado, e uma vez por ano s\u00e3o realizados <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\">testes de penetra\u00e7\u00e3o<\/a><\/noindex>. Tudo isso leva ao atraso dos prazos de lan\u00e7amento no mercado, enquanto o desenvolvedor se depara com uma quantidade enorme de vulnerabilidades geradas por ferramentas automatizadas. Tudo isso \u00e9 imposs\u00edvel de ser analisado e corrigido, porque ainda n\u00e3o se analisaram os resultados dos \u00faltimos seis meses e aqui chega uma nova leva.<\/p>\n<p>Durante o processo de trabalho da nossa empresa, vemos que a seguran\u00e7a em todos os setores e ind\u00fastrias reconhece que \u00e9 hora de se alinhar e girar junto com o desenvolvimento na mesma engrenagem - no\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>. A paradigma DevSecOps se encaixa perfeitamente na metodologia de desenvolvimento \u00e1gil, na implementa\u00e7\u00e3o, suporte e participa\u00e7\u00e3o em cada lan\u00e7amento e itera\u00e7\u00e3o.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/cf258bd7efc82ff27787b5029cf2f945.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>A transi\u00e7\u00e3o para DevSecOps<\/h2>\n<p>\nA palavra mais importante no Ciclo de Vida do Desenvolvimento de Seguran\u00e7a \u00e9 <b>\"processo\"<\/b>Voc\u00ea precisa entender isso antes de pensar em comprar ferramentas.<\/p>\n<blockquote><p>Apenas incluir ferramentas no processo DevOps n\u00e3o \u00e9 suficiente \u2014 a intera\u00e7\u00e3o e compreens\u00e3o entre os participantes do processo s\u00e3o importantes.<\/p><\/blockquote>\n<p><\/p>\n<h3>As pessoas s\u00e3o mais importantes do que as ferramentas.<\/h3>\n<p>\nFrequentemente, o planejamento do processo de desenvolvimento seguro come\u00e7a com a escolha e compra de uma ferramenta e termina com tentativas de integrar a ferramenta ao processo atual, que permanecem apenas tentativas. Isso leva a consequ\u00eancias infelizes, pois cada ferramenta tem suas caracter\u00edsticas e limita\u00e7\u00f5es.<\/p>\n<p>Um caso comum \u00e9 quando o departamento de seguran\u00e7a escolhe uma boa ferramenta cara, com amplas capacidades, e chega aos desenvolvedores \u2014 para integr\u00e1-la no processo. Mas n\u00e3o funciona \u2014 o processo est\u00e1 estruturado de tal forma que as limita\u00e7\u00f5es da ferramenta j\u00e1 comprada n\u00e3o se encaixam na atual paradigma.<\/p>\n<blockquote><p>Primeiro, descreva qual resultado voc\u00ea deseja e como o processo deve ser. Isso ajudar\u00e1 a entender os pap\u00e9is da ferramenta e da seguran\u00e7a no processo.<\/p><\/blockquote>\n<p><\/p>\n<h3>Comece com o que j\u00e1 est\u00e1 em uso.<\/h3>\n<p>\nAntes de comprar ferramentas caras, veja o que voc\u00ea j\u00e1 tem. Cada empresa tem requisitos de seguran\u00e7a que s\u00e3o exigidos para o desenvolvimento, h\u00e1 auditorias, testes de penetra\u00e7\u00e3o \u2014 por que n\u00e3o transformar tudo isso em uma forma compreens\u00edvel e conveniente para todos?<\/p>\n<p>Geralmente, os requisitos s\u00e3o um documento extenso que fica em uma prateleira. Houve um caso em que chegamos a uma empresa para revisar os processos e pedimos para ver os requisitos de seguran\u00e7a do software. O especialista respons\u00e1vel passou um bom tempo procurando:<\/p>\n<p><i>\u2014 Agora, em algum lugar nas anota\u00e7\u00f5es estava o caminho onde esse documento est\u00e1.<\/i><\/p>\n<p>No final, recebemos o documento ap\u00f3s uma semana.<\/p>\n<p>Para requisitos, auditorias e outros, crie uma p\u00e1gina, por exemplo, no\u00a0<b>Confluence<\/b>\u00a0\u2014 isso \u00e9 conveniente para todos.<\/p>\n<blockquote><p>\u00c9 mais f\u00e1cil reformular o que j\u00e1 existe e usar isso como ponto de partida.<\/p><\/blockquote>\n<p><\/p>\n<h3>Use os Security Champions. <\/h3>\n<p>\nNormalmente, em uma empresa m\u00e9dia com 100-200 desenvolvedores, h\u00e1 um especialista em seguran\u00e7a que desempenha v\u00e1rias fun\u00e7\u00f5es e n\u00e3o consegue verificar tudo fisicamente. Mesmo que ele se esforce ao m\u00e1ximo \u2014 sozinho n\u00e3o conseguir\u00e1 revisar todo o c\u00f3digo que a equipe de desenvolvimento gera. Para tais casos, foi desenvolvido o conceito \u2014 <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 s\u00e3o pessoas dentro da equipe de desenvolvimento que est\u00e3o interessadas na seguran\u00e7a do seu produto.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/c67728db4a6e34407da199387eba2bb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSecurity Champion \u00e9 o ponto de entrada na equipe de desenvolvimento e o evangelista de seguran\u00e7a em uma \u00fanica pessoa.<\/p>\n<p>Normalmente, quando um especialista em seguran\u00e7a chega \u00e0 equipe de desenvolvimento e aponta um erro no c\u00f3digo, ele recebe uma resposta surpreendida:<\/p>\n<p><i>\u2014 E voc\u00ea quem \u00e9? Eu nunca te vi antes. Est\u00e1 tudo bem para mim \u2014 meu colega mais experiente deu \u2018aplicar\u2019 na revis\u00e3o do c\u00f3digo, vamos seguir em frente!<\/i><\/p>\n<p>Essa \u00e9 uma situa\u00e7\u00e3o t\u00edpica, porque h\u00e1 muito mais confian\u00e7a em colegas seniores ou simplesmente em colegas de equipe com os quais o desenvolvedor interage constantemente nas revis\u00f5es de c\u00f3digo. Se, ao inv\u00e9s de um especialista em seguran\u00e7a, for um Security Champion a apontar o erro e suas consequ\u00eancias, sua palavra ter\u00e1 mais peso.<\/p>\n<p>Al\u00e9m disso, os desenvolvedores conhecem melhor seu c\u00f3digo do que qualquer especialista em seguran\u00e7a. Para uma pessoa que analisa pelo menos 5 projetos em uma ferramenta de an\u00e1lise est\u00e1tica, \u00e9 normalmente dif\u00edcil lembrar de todos os detalhes. Security Champions conhecem seu produto: o que interage com o qu\u00ea e a que devem prestar aten\u00e7\u00e3o primeiro \u2014 eles s\u00e3o mais eficazes.<\/p>\n<p>Ent\u00e3o, considere implementar Security Champions e ampliar a influ\u00eancia da equipe de seguran\u00e7a. Para o pr\u00f3prio campe\u00e3o, isso tamb\u00e9m \u00e9 vantajoso: desenvolvimento profissional em uma nova \u00e1rea, amplia\u00e7\u00e3o da vis\u00e3o t\u00e9cnica, aprimoramento de habilidades t\u00e9cnicas, gerenciais e de lideran\u00e7a, aumento do valor no mercado. \u00c9 um certo elemento de engenharia social, seus \u2018olhos\u2019 na equipe de desenvolvimento.<\/p>\n<h2>Fases de teste<\/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\">A Paradigma 20 por 80<\/a><\/noindex>\u00a0diz que 20% dos esfor\u00e7os d\u00e3o 80% dos resultados. Esses 20% s\u00e3o pr\u00e1ticas de an\u00e1lise de aplica\u00e7\u00f5es que podem e devem ser automatizadas. Exemplos de tais atividades s\u00e3o an\u00e1lise est\u00e1tica \u2014 <b>SAST<\/b>, an\u00e1lise din\u00e2mica \u2014 <b>DAST,<\/b> e\u00a0<b>controle de Open Source<\/b>. Vou falar mais sobre as atividades, assim como sobre as ferramentas, quais peculiaridades normalmente encontramos ao implement\u00e1-las no processo e como faz\u00ea-lo corretamente.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/db720e0879cdd1ed818461ffb5f927da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Principais problemas das ferramentas<\/h3>\n<p>\nDestacarei problemas relevantes para todas as ferramentas que exigem aten\u00e7\u00e3o. Vou analis\u00e1-los mais detalhadamente, para n\u00e3o me repetir depois.<\/p>\n<p><b>Longo tempo de an\u00e1lise. <\/b>Se de um commit at\u00e9 o lan\u00e7amento em produ\u00e7\u00e3o leva 30 minutos para todos os testes e a montagem, as verifica\u00e7\u00f5es de seguran\u00e7a da informa\u00e7\u00e3o levar\u00e3o um dia. Ningu\u00e9m vai atrasar o processo assim. Considere essa particularidade e tire suas conclus\u00f5es.<\/p>\n<p><b>Alto n\u00edvel de Falso Negativo ou Falso Positivo. <\/b>Todos os produtos s\u00e3o diferentes, todos usam diferentes frameworks e t\u00eam seu pr\u00f3prio estilo de codifica\u00e7\u00e3o. Em diferentes bases de c\u00f3digo e tecnologias, as ferramentas podem mostrar diferentes n\u00edveis de Falso Negativo e Falso Positivo. Portanto, veja o que exatamente em\u00a0<b>sua<\/b> empresa e <b>seus<\/b> aplicativos mostrar\u00e3o bons e confi\u00e1veis resultados.<\/p>\n<p><b>Sem integra\u00e7\u00f5es com ferramentas existentes<\/b>. Veja as ferramentas do ponto de vista das integra\u00e7\u00f5es, com o que voc\u00ea j\u00e1 est\u00e1 utilizando. Por exemplo, se voc\u00ea tem Jenkins ou TeamCity, verifique a integra\u00e7\u00e3o das ferramentas exatamente com esse software, e n\u00e3o com GitLab CI, que voc\u00ea n\u00e3o utiliza.<\/p>\n<p><b>Falta ou complexidade excessiva de personaliza\u00e7\u00e3o. <\/b>Se a ferramenta n\u00e3o tem API, por que ela \u00e9 necess\u00e1ria? Tudo que pode ser feito na interface deve estar dispon\u00edvel atrav\u00e9s da API. Idealmente, a ferramenta deve permitir a personaliza\u00e7\u00e3o das verifica\u00e7\u00f5es.<\/p>\n<p><b>Sem Roadmap de desenvolvimento do produto. <\/b>O desenvolvimento n\u00e3o para, estamos sempre usando novos frameworks e fun\u00e7\u00f5es, reescrevendo o c\u00f3digo antigo em novas linguagens. Queremos ter certeza de que a ferramenta que comprarmos suportar\u00e1 novos frameworks e tecnologias. Portanto, \u00e9 importante saber que o produto tem um real e adequado <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\">Roteiro<\/a><\/noindex> desenvolvimento.<\/p>\n<h3>Particularidades do processo<\/h3>\n<p>\nAl\u00e9m das particularidades das ferramentas, considere tamb\u00e9m as particularidades do processo de desenvolvimento. Por exemplo, interromper o desenvolvimento \u00e9 um erro t\u00edpico. Vamos ver quais outras particularidades devem ser consideradas e em que a equipe de seguran\u00e7a deve prestar aten\u00e7\u00e3o.<\/p>\n<p>Para n\u00e3o atrasar os prazos de desenvolvimento e lan\u00e7amento, crie <b>regras diferentes<\/b> e diferentes <b>show stoppers\u00a0<\/b>\u2014 crit\u00e9rios para interromper o processo de montagem na presen\u00e7a de vulnerabilidades \u2014 <b>para diferentes ambientes<\/b>. Por exemplo, entendemos que o branch atual vai para o ambiente de desenvolvimento ou UAT, ent\u00e3o n\u00e3o vamos parar e dizer:<\/p>\n<p><i>\u2014 Voc\u00ea tem vulnerabilidades aqui, voc\u00eas n\u00e3o podem seguir adiante!<\/i><\/p>\n<p>Neste est\u00e1gio, \u00e9 importante informar aos desenvolvedores que existem problemas de seguran\u00e7a que devem ser observados.<\/p>\n<p><b>A presen\u00e7a de vulnerabilidades n\u00e3o \u00e9 um impedimento para testes adicionais<\/b>: manuais, integra\u00e7\u00f5es ou manuais. Por outro lado, precisamos de alguma forma aumentar a seguran\u00e7a do produto, e para que os desenvolvedores n\u00e3o ignorem o que a seguran\u00e7a encontra. Portanto, \u00e0s vezes fazemos o seguinte: na bancada, quando \u00e9 lan\u00e7ado no ambiente de desenvolvedor, apenas notificamos a equipe de desenvolvimento:<\/p>\n<p><i>\u2014 Pessoal, voc\u00eas t\u00eam problemas, por favor, prestem aten\u00e7\u00e3o neles.<\/i><\/p>\n<p>Na fase de UAT, novamente mostramos os avisos sobre vulnerabilidades, e na fase de lan\u00e7amento ao p\u00fablico, dizemos:<\/p>\n<p><i>\u2014 Pessoal, avisamos v\u00e1rias vezes, voc\u00eas n\u00e3o fizeram nada \u2014 n\u00e3o vamos liberar voc\u00eas com isso.<\/i><\/p>\n<p>Se falarmos sobre c\u00f3digo e din\u00e2mica, \u00e9 necess\u00e1rio mostrar e avisar sobre as vulnerabilidades apenas das funcionalidades e do c\u00f3digo que foram escritos recentemente nesta feature. Se um desenvolvedor moveu um bot\u00e3o em 3 pixels e dizemos a ele que h\u00e1 uma inje\u00e7\u00e3o SQL l\u00e1 e que precisa ser corrigido urgentemente \u2014 isso est\u00e1 incorreto. Olhem apenas para o que foi escrito agora e para a mudan\u00e7a que est\u00e1 sendo introduzida no aplicativo.<\/p>\n<p>Suponha que temos um defeito funcional \u2014 como o aplicativo n\u00e3o deve funcionar: dinheiro n\u00e3o \u00e9 transferido, ao clicar no bot\u00e3o n\u00e3o ocorre transi\u00e7\u00e3o para a pr\u00f3xima p\u00e1gina ou o produto n\u00e3o carrega. <b>Defeitos de seguran\u00e7a<\/b>\u00a0\u2014 s\u00e3o defeitos similares, mas n\u00e3o em termos de funcionamento do aplicativo, mas sim de seguran\u00e7a. <\/p>\n<blockquote><p>Nem todos os problemas de qualidade de software s\u00e3o problemas de seguran\u00e7a. Mas todos os problemas de seguran\u00e7a est\u00e3o relacionados \u00e0 qualidade do software. Sherif Mansour, Expedia.<\/p><\/blockquote>\n<p>\nComo todas as vulnerabilidades s\u00e3o defeitos, elas devem estar no mesmo lugar que todos os defeitos de desenvolvimento. Portanto, esque\u00e7am os relat\u00f3rios e os PDFs assustadores que ningu\u00e9m l\u00ea.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/e54e64658a3882bdc68a48c6ef426746.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuando eu trabalhava em uma empresa de desenvolvimento, recebi um relat\u00f3rio de ferramentas de an\u00e1lise est\u00e1tica. Eu o abri, fiquei horrorizado, preparei um caf\u00e9, folheei 350 p\u00e1ginas, fechei e fui trabalhar novamente. <b>Relat\u00f3rios grandes s\u00e3o relat\u00f3rios mortos<\/b>. Normalmente, eles n\u00e3o v\u00e3o a lugar nenhum, os e-mails s\u00e3o deletados, esquecidos, perdidos ou a empresa diz que aceita os riscos.<\/p>\n<p>O que fazer? Os defeitos confirmados que encontramos s\u00e3o simplesmente transformados em uma forma amig\u00e1vel para desenvolvimento, por exemplo, armazenando no backlog no Jira. Priorizamos os defeitos e os corrigimos na ordem de prioridade, juntamente com os defeitos funcionais e de teste.<\/p>\n<h2>An\u00e1lise Est\u00e1tica - SAST<\/h2>\n<p>\n<b>\u00c9 uma an\u00e1lise de c\u00f3digo em busca de vulnerabilidades<\/b>, mas n\u00e3o \u00e9 a mesma coisa que o SonarQube. Verificamos n\u00e3o apenas por padr\u00f5es ou estilo. Na an\u00e1lise, \u00e9 aplicado um conjunto de abordagens: por meio da \u00e1rvore de vulnerabilidades, por\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>, atrav\u00e9s da an\u00e1lise de arquivos de configura\u00e7\u00e3o. Isso \u00e9 tudo que diz respeito diretamente ao c\u00f3digo.<\/p>\n<p><b>Vantagens da abordagem<\/b>: <b>detec\u00e7\u00e3o de vulnerabilidades no c\u00f3digo em uma fase inicial do desenvolvimento<\/b>, quando ainda n\u00e3o h\u00e1 ambientes e ferramentas prontas, e<b>\u00a0possibilidade de escaneamento incremental<\/b>: escanear a parte do c\u00f3digo que foi alterada e apenas a funcionalidade que estamos desenvolvendo agora, o que reduz o tempo de escaneamento.<\/p>\n<p><b>Desvantagens<\/b>\u00a0\u2014 \u00e9 a falta de suporte para as linguagens necess\u00e1rias.<\/p>\n<p><b>Integra\u00e7\u00f5es necess\u00e1rias, <\/b>que devem estar nas ferramentas, na minha opini\u00e3o subjetiva:<\/p>\n<ul>\n<li>Ferramenta de integra\u00e7\u00e3o: Jenkins, TeamCity e Gitlab CI.\n<\/li>\n<li>Ambiente de desenvolvimento: Intellij IDEA, Visual Studio. Para o desenvolvedor, \u00e9 mais conveniente n\u00e3o ter que navegar em uma interface desconhecida que ainda precisa ser memorizada, mas ver todas as integra\u00e7\u00f5es necess\u00e1rias e as vulnerabilidades que encontrou diretamente em seu pr\u00f3prio ambiente de desenvolvimento.\n<\/li>\n<li>Revis\u00e3o de c\u00f3digo: SonarQube e revis\u00e3o manual.\n<\/li>\n<li>Rastreadores de defeitos: Jira e Bugzilla.\n<\/li>\n<\/ul>\n<p>\nNa imagem, alguns dos melhores representantes da an\u00e1lise est\u00e1tica.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/bab3420874ac090d4d107edb0d2b857b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO importante n\u00e3o s\u00e3o as ferramentas, mas o processo, por isso existem solu\u00e7\u00f5es Open Source que tamb\u00e9m s\u00e3o boas para testar o processo.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/4f2c278922c291b15922bc5748f87dc3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSAST Open Source n\u00e3o encontrar\u00e3o uma quantidade enorme de vulnerabilidades ou DataFlow complexos, mas ao construir o processo, eles podem e devem ser usados. Eles ajudam a entender como o processo ser\u00e1 montado, quem ser\u00e1 respons\u00e1vel pelos bugs, quem far\u00e1 relat\u00f3rios, quem prestar\u00e1 contas. Se voc\u00ea deseja realizar a fase inicial de constru\u00e7\u00e3o da seguran\u00e7a do seu c\u00f3digo, use solu\u00e7\u00f5es Open Source.<\/p>\n<p>Como isso pode ser integrado, se voc\u00ea est\u00e1 no in\u00edcio do caminho, n\u00e3o tem nada: nem CI, nem Jenkins, nem TeamCity? Vamos considerar as integra\u00e7\u00f5es no processo.<\/p>\n<h3>Integra\u00e7\u00e3o a n\u00edvel CVS<\/h3>\n<p>\nSe voc\u00ea possui Bitbucket ou GitLab, pode fazer a integra\u00e7\u00e3o a n\u00edvel <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/CVS\">Concurrent Versions System<\/a><\/noindex>.<\/p>\n<p><b>Por evento<\/b>\u00a0\u2014 pull request, commit. Voc\u00ea escaneia o c\u00f3digo e, no status do build, mostra se a verifica\u00e7\u00e3o de seguran\u00e7a foi bem-sucedida ou n\u00e3o.<\/p>\n<p><b>Feedback. <\/b>Sem d\u00favida, o feedback \u00e9 sempre necess\u00e1rio. Se voc\u00ea apenas executou na \u00e1rea de seguran\u00e7a, colocou tudo em uma caixa e n\u00e3o contou a ningu\u00e9m sobre isso, e depois no final do m\u00eas despejou uma s\u00e9rie de bugs \u2014 isso n\u00e3o est\u00e1 certo e n\u00e3o \u00e9 bom.<\/p>\n<h3>Integra\u00e7\u00e3o com o sistema de code review<\/h3>\n<p>\nCerta vez, configuramos um usu\u00e1rio t\u00e9cnico de AppSec como revisor padr\u00e3o em uma s\u00e9rie de projetos importantes. Dependendo se erros foram encontrados no novo c\u00f3digo ou n\u00e3o, o revisor do pull request define o status como \"accept\" ou \"need work\" \u2014 ou tudo OK, ou \u00e9 necess\u00e1rio fazer ajustes com links sobre o que exatamente deve ser ajustado. Para a integra\u00e7\u00e3o com a vers\u00e3o que est\u00e1 em produ\u00e7\u00e3o, tivemos uma proibi\u00e7\u00e3o de merge se o teste de seguran\u00e7a n\u00e3o fosse aprovado. Incorporamos isso \u00e0 revis\u00e3o manual de c\u00f3digo, e os demais participantes do processo viam os status de seguran\u00e7a exatamente para esse processo espec\u00edfico.<\/p>\n<h3>Integra\u00e7\u00e3o com SonarQube<\/h3>\n<p>\nMuitos t\u00eam <noindex><a rel=\"nofollow\" href=\"https:\/\/de.wikipedia.org\/wiki\/Quality_Gate\">quality gate<\/a><\/noindex> para qualidade de c\u00f3digo. Aqui \u00e9 a mesma coisa \u2014 \u00e9 poss\u00edvel fazer os mesmos gates apenas para ferramentas SAST. Ter\u00e1 a mesma interface, o mesmo quality gate, s\u00f3 que ser\u00e1 chamado de <b>security gate<\/b>. E assim, se voc\u00ea tiver um processo utilizando SonarQube, poder\u00e1 integrar tudo l\u00e1 tranquilamente.<\/p>\n<h3>Integra\u00e7\u00e3o em n\u00edvel CI<\/h3>\n<p>\nAqui tamb\u00e9m \u00e9 tudo bastante simples:<\/p>\n<ul>\n<li><b>Em um n\u00edvel com autotestes<\/b>, testes unit\u00e1rios.\n<\/li>\n<li><b>Divis\u00e3o por etapas de desenvolvimento<\/b>: dev, test, prod. Podem ser inclu\u00eddos diferentes conjuntos de regras, ou diferentes condi\u00e7\u00f5es de falha: parar a compila\u00e7\u00e3o ou n\u00e3o parar a compila\u00e7\u00e3o.\n<\/li>\n<li><b>Execu\u00e7\u00e3o s\u00edncrona\/ass\u00edncrona<\/b>. Esperamos a conclus\u00e3o da verifica\u00e7\u00e3o de seguran\u00e7a ou n\u00e3o. Ou seja, n\u00f3s apenas a iniciamos e continuamos, e depois recebemos o status de que tudo est\u00e1 bom ou ruim.\n<\/li>\n<\/ul>\n<p>\nIsso tudo em um mundo rosa ideal. Na vida real, isso n\u00e3o existe, mas n\u00f3s nos esfor\u00e7amos. O resultado das verifica\u00e7\u00f5es de seguran\u00e7a deve ser an\u00e1logo aos resultados dos testes unit\u00e1rios.<\/p>\n<p>Por exemplo, pegamos um grande projeto e decidimos que agora vamos escane\u00e1-lo com SAST \u2014 tudo bem. Colocamos esse projeto no SAST, que nos apresentou 20.000 vulnerabilidades, e, por decis\u00e3o firme, aceitamos que estava tudo bem. 20.000 vulnerabilidades s\u00e3o nossa d\u00edvida t\u00e9cnica. Vamos guardar essa d\u00edvida em uma caixinha, e iremos resolvendo aos poucos e registrando bugs nos trackers. Contratamos uma empresa, fazemos tudo sozinhos ou contamos com a ajuda dos Security Champions \u2014 e a d\u00edvida t\u00e9cnica vai diminuindo.<\/p>\n<p>E todas as novas vulnerabilidades no c\u00f3digo novo devem ser corrigidas assim como erros em unit tests ou testes automatizados. Em termos gerais, uma nova compila\u00e7\u00e3o foi iniciada, rodaram os testes, dois falharam, e dois testes de seguran\u00e7a falharam. Tudo bem \u2014 verificamos o que aconteceu, corrigimos um, corrigimos o outro, e na pr\u00f3xima vez que rodamos \u2014 tudo certo, novas vulnerabilidades n\u00e3o surgiram, os testes n\u00e3o falharam. Se a tarefa for mais complexa e precisarmos investig\u00e1-la mais a fundo, ou se a corre\u00e7\u00e3o das vulnerabilidades afetar grandes partes do que est\u00e1 'debaixo do cap\u00f4': registramos um bug no tracker, ele \u00e9 priorizado e corrigido. Infelizmente, o mundo n\u00e3o \u00e9 perfeito e os testes \u00e0s vezes falham.<\/p>\n<p>Um exemplo de security gate \u2014 an\u00e1logo ao quality gate, relacionado \u00e0 presen\u00e7a e quantidade de vulnerabilidades no c\u00f3digo.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/eb30d3c7988b28c2cb25e9656871ec96.png\" style=\"display:block;margin: 0 auto;\" \/>Integramos com o SonarQube \u2014 o plugin \u00e9 instalado, tudo muito conveniente e legal.<\/p>\n<h3>Integra\u00e7\u00e3o com o ambiente de desenvolvimento<\/h3>\n<p>\n<b>Possibilidades de integra\u00e7\u00e3o:<\/b><\/p>\n<ul>\n<li>Iniciar o escaneamento a partir do ambiente de desenvolvimento antes do commit.\n<\/li>\n<li>Visualiza\u00e7\u00e3o dos resultados.\n<\/li>\n<li>An\u00e1lise dos resultados.\n<\/li>\n<li>Sincroniza\u00e7\u00e3o com o servidor.\n<\/li>\n<\/ul>\n<p>\nAssim \u00e9 como a obten\u00e7\u00e3o de resultados do servidor parece.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/270d4af76fddc0ceebca908c7d3835b8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNo nosso ambiente de desenvolvimento <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/idea\/\">Intellij IDEA<\/a><\/noindex> aparece simplesmente um item adicional, informando que durante o escaneamento vulnerabilidades foram descobertas. Voc\u00ea pode corrigir o c\u00f3digo imediatamente, verificar as recomenda\u00e7\u00f5es e\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_graph\">Flow Graph<\/a><\/noindex>. Tudo isso est\u00e1 posicionado no local de trabalho do desenvolvedor, o que \u00e9 muito conveniente \u2014 n\u00e3o \u00e9 necess\u00e1rio navegar por outros links e procurar mais informa\u00e7\u00f5es.<\/p>\n<h2>Open Source<\/h2>\n<p>\nEsse \u00e9 meu tema favorito. Todos usam bibliotecas Open Source \u2014 por que escrever um monte de gambiarras e bicicletas, quando voc\u00ea pode pegar uma biblioteca pronta, onde tudo j\u00e1 est\u00e1 implementado?<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/05b9cd5a8b269af2a3f59931a0774778.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nClaro, \u00e9 verdade, mas as bibliotecas tamb\u00e9m s\u00e3o escritas por pessoas, incluem riscos espec\u00edficos e tamb\u00e9m t\u00eam vulnerabilidades que s\u00e3o reportadas periodicamente ou constantemente. Por isso, h\u00e1 um pr\u00f3ximo passo em Seguran\u00e7a de Aplica\u00e7\u00f5es \u2014 a an\u00e1lise de componentes Open Source.<\/p>\n<h3>An\u00e1lise Open Source \u2014 OSA<\/h3>\n<p>\nA ferramenta inclui tr\u00eas etapas principais.<\/p>\n<p><b>Busca por vulnerabilidades em bibliotecas. <\/b>Por exemplo, a ferramenta sabe que estamos usando uma biblioteca espec\u00edfica, e que existem\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Common_Vulnerabilities_and_Exposures\">CVE<\/a><\/noindex> ou que h\u00e1 algumas vulnerabilidades nos rastreadores de bug que se referem a essa vers\u00e3o da biblioteca. Ao tentar utiliz\u00e1-la, a ferramenta emitir\u00e1 um aviso de que a biblioteca \u00e9 vulner\u00e1vel e sugerir\u00e1 usar uma vers\u00e3o onde as vulnerabilidades foram corrigidas.<\/p>\n<p><b>An\u00e1lise da conformidade de licen\u00e7as. <\/b>Isso ainda n\u00e3o \u00e9 muito popular aqui, mas se voc\u00ea trabalha com o exterior, ocasionalmente pode receber uma advert\u00eancia por usar um componente de c\u00f3digo aberto que n\u00e3o pode ser utilizado ou modificado. Segundo a pol\u00edtica da biblioteca de licen\u00e7as, n\u00e3o podemos fazer isso. Ou, se a modificamos e a usamos, devemos disponibilizar nosso c\u00f3digo. \u00c9 claro que ningu\u00e9m quer expor o c\u00f3digo de seus produtos, mas h\u00e1 como se proteger disso.<\/p>\n<p><b>An\u00e1lise de componentes que s\u00e3o usados em ambientes industriais. <\/b>Vamos imaginar uma situa\u00e7\u00e3o hipot\u00e9tica, em que finalmente conclu\u00edmos o desenvolvimento e lan\u00e7amos a vers\u00e3o final de nosso microservi\u00e7o. Ele est\u00e1 l\u00e1, funcionando maravilhosamente \u2014 uma semana, um m\u00eas, um ano. N\u00e3o fazemos verifica\u00e7\u00f5es de seguran\u00e7a, parece que est\u00e1 tudo bem. Mas, de repente, duas semanas ap\u00f3s o lan\u00e7amento, uma vulnerabilidade cr\u00edtica \u00e9 descoberta em um componente Open Source que estamos usando nesta vers\u00e3o, em um ambiente de produ\u00e7\u00e3o. Se n\u00e3o registramos o que e onde estamos usando, essa vulnerabilidade simplesmente passar\u00e1 despercebida. Algumas ferramentas oferecem a capacidade de monitorar vulnerabilidades em bibliotecas que est\u00e3o sendo usadas em produ\u00e7\u00e3o. Isso \u00e9 muito \u00fatil.<\/p>\n<p><b>Caracter\u00edsticas:<\/b><\/p>\n<ul>\n<li>Pol\u00edticas diferentes para diferentes etapas de desenvolvimento.\n<\/li>\n<li>Monitoramento de componentes em ambientes industriais.\n<\/li>\n<li>Controle de bibliotecas no per\u00edmetro da organiza\u00e7\u00e3o.\n<\/li>\n<li>Suporte a diferentes sistemas de constru\u00e7\u00e3o e linguagens.\n<\/li>\n<li>An\u00e1lise de imagens Docker.\n<\/li>\n<\/ul>\n<p>\nAlguns exemplos de l\u00edderes na \u00e1rea que est\u00e3o envolvidos na an\u00e1lise de Open Source.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/f1b05f86beb4a64f9bf3443963e3603b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nO \u00fanico gratuito entre eles \u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/OWASP_Dependency_Check\">Verifica\u00e7\u00e3o de Depend\u00eancias<\/a><\/noindex> do OWASP. \u00c9 poss\u00edvel ativ\u00e1-lo nas primeiras etapas, verificar como ele funciona e o que suporta. Basicamente, s\u00e3o todos produtos em nuvem ou on-premise, mas, em rela\u00e7\u00e3o \u00e0 sua base, eles de qualquer forma se conectam \u00e0 internet. Eles n\u00e3o enviam suas bibliotecas, mas sim hashes ou seus pr\u00f3prios valores calculados, e fingerprints para seus servidores, a fim de receber notifica\u00e7\u00f5es sobre a presen\u00e7a de vulnerabilidades.<\/p>\n<h3>Integra\u00e7\u00e3o no processo<\/h3>\n<p>\n<b>Controle de bibliotecas no per\u00edmetro<\/b>, que s\u00e3o baixadas de fontes externas. Temos reposit\u00f3rios externos e internos. Por exemplo, dentro do Event Central h\u00e1 o Nexus, e queremos que n\u00e3o haja vulnerabilidades com status 'cr\u00edtico' ou 'alto' dentro do nosso reposit\u00f3rio. \u00c9 poss\u00edvel configurar o proxy com a ferramenta Nexus Firewall Lifecycle para que tais vulnerabilidades sejam bloqueadas e n\u00e3o entrem no reposit\u00f3rio interno.<\/p>\n<p><b>Integra\u00e7\u00e3o no CI<\/b>. Em um n\u00edvel com autotestes, testes unit\u00e1rios e divis\u00e3o por etapas de desenvolvimento: dev, test, prod. Em cada etapa, \u00e9 poss\u00edvel baixar quaisquer bibliotecas, usar o que for preciso, mas, se houver algo r\u00edgido com status 'cr\u00edtico', talvez valha a pena chamar a aten\u00e7\u00e3o dos desenvolvedores na fase de lan\u00e7amento em produ\u00e7\u00e3o.<\/p>\n<p><b>Integra\u00e7\u00e3o com reposit\u00f3rios de artefatos<\/b>: Nexus e JFrog.<\/p>\n<p><b>Integra\u00e7\u00e3o no ambiente de desenvolvimento. <\/b>As ferramentas que voc\u00ea escolhe devem ter integra\u00e7\u00e3o com os ambientes de desenvolvimento. O desenvolvedor deve ter acesso aos resultados da digitaliza\u00e7\u00e3o a partir de sua esta\u00e7\u00e3o de trabalho, ou a capacidade de escanear e verificar o c\u00f3digo por conta pr\u00f3pria quanto a vulnerabilidades antes do commit no CVS.<\/p>\n<p><b>Integra\u00e7\u00e3o no CD. <\/b>Esse \u00e9 um recurso bacana que eu realmente gosto e sobre o qual j\u00e1 falei - monitoramento do surgimento de novas vulnerabilidades em ambientes de produ\u00e7\u00e3o. Funciona mais ou menos assim.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/605c638df343db5c47ab36b4dc00f41c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTemos <b>Reposit\u00f3rios P\u00fablicos de Componentes<\/b>\u00a0\u2014 algumas ferramentas externas e nosso reposit\u00f3rio interno. Queremos que ele contenha apenas componentes confi\u00e1veis. Ao proxyar a solicita\u00e7\u00e3o, verificamos se a biblioteca baixada n\u00e3o possui vulnerabilidades. Se ela se enquadrar em determinadas pol\u00edticas que estabelecemos e confirmamos com a equipe de desenvolvimento, ela n\u00e3o ser\u00e1 baixada e uma notifica\u00e7\u00e3o ser\u00e1 enviada para usar outra vers\u00e3o. Portanto, se a biblioteca tiver algo realmente cr\u00edtico e ruim, o desenvolvedor nem receber\u00e1 a biblioteca na etapa de instala\u00e7\u00e3o \u2014 que use uma vers\u00e3o mais alta ou mais baixa.<\/p>\n<ul>\n<li>Durante a constru\u00e7\u00e3o, verificamos se ningu\u00e9m inseriu nada ruim, se todos os componentes s\u00e3o seguros e se ningu\u00e9m trouxe nada perigoso em um pendrive.\n<\/li>\n<li>Em nosso reposit\u00f3rio, temos apenas componentes confi\u00e1veis. \n<\/li>\n<li>Durante o deployment, verificamos mais uma vez o pacote em si: war, jar, DL ou imagem Docker para garantir que est\u00e1 em conformidade com a pol\u00edtica. \n<\/li>\n<li>Ao sair para a produ\u00e7\u00e3o, monitoramos o que acontece no ambiente de produ\u00e7\u00e3o: se surgem ou n\u00e3o vulnerabilidades cr\u00edticas.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>An\u00e1lise din\u00e2mica \u2014 DAST.<\/h2>\n<p>\nFerramentas de an\u00e1lise din\u00e2mica diferem radicalmente do que foi dito at\u00e9 agora. \u00c9 uma simula\u00e7\u00e3o do uso do aplicativo pelo usu\u00e1rio. Se for um aplicativo web, enviamos solicita\u00e7\u00f5es, simulando o trabalho do cliente, clicamos em bot\u00f5es na interface, enviamos dados artificiais do formul\u00e1rio: aspas, par\u00eanteses, s\u00edmbolos em diferentes codifica\u00e7\u00f5es, para observar como o aplicativo funciona e processa dados externos.<\/p>\n<p>Esse mesmo sistema permite verificar vulnerabilidades padr\u00e3o em Open Source. Como o DAST n\u00e3o sabe qual Open Source estamos usando, ele simplesmente dispara padr\u00f5es 'maliciosos' e analisa as respostas do servidor:<\/p>\n<p><i>\u2014 Ah, aqui h\u00e1 um problema de desserializa\u00e7\u00e3o, e aqui n\u00e3o h\u00e1.<\/i><\/p>\n<p>Isso envolve grandes riscos, porque se voc\u00ea realizar esse teste de seguran\u00e7a no mesmo ambiente que os testadores est\u00e3o utilizando, coisas desagrad\u00e1veis podem acontecer.<\/p>\n<ul>\n<li>Alta carga na rede do servidor de aplicativos.\n<\/li>\n<li>Sem integra\u00e7\u00f5es.\n<\/li>\n<li>Capacidade de alterar configura\u00e7\u00f5es do aplicativo analisado.\n<\/li>\n<li>Sem suporte para as tecnologias necess\u00e1rias.\n<\/li>\n<li>Complexidade de configura\u00e7\u00e3o.\n<\/li>\n<\/ul>\n<p>\nTivemos uma situa\u00e7\u00e3o em que finalmente lan\u00e7amos o AppScan: demoramos para obter acesso ao aplicativo, conseguimos 3 contas e ficamos felizes \u2014 finalmente vamos verificar tudo! Iniciamos a varredura, e a primeira coisa que o AppScan fez foi entrar no painel de administra\u00e7\u00e3o, clicar em todos os bot\u00f5es, alterar metade dos dados e depois, afinal, derrubou o servidor com suas <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mailform.io\/\">formul\u00e1rio de email<\/a><\/noindex>solicita\u00e7\u00f5es. O desenvolvimento com testes disse:<\/p>\n<p><i>\u2014 Gente, voc\u00eas est\u00e3o brincando?! N\u00f3s lhe demos contas, e voc\u00eas colocaram o ambiente fora do ar!<\/i><\/p>\n<p>Considere os riscos poss\u00edveis. Idealmente, prepare um ambiente separado para testes de seguran\u00e7a da informa\u00e7\u00e3o, que ser\u00e1 isolado do restante do ambiente de alguma forma, e \u00e9 recomend\u00e1vel verificar o painel de administra\u00e7\u00e3o manualmente. Este \u00e9 um pentest \u2014 os percentuais restantes de esfor\u00e7o que n\u00e3o estamos considerando agora. <\/p>\n<p>\u00c9 importante notar que isso pode ser usado como um an\u00e1logo de teste de carga. Na primeira etapa, \u00e9 poss\u00edvel ativar um scanner din\u00e2mico em 10-15 threads e ver o que acontece, mas geralmente, como mostra a experi\u00eancia, n\u00e3o resulta em nada bom.<\/p>\n<p>Alguns recursos que normalmente usamos.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/45a25dbe2a2d053e6ed16d31b6ac53ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c9 importante destacar <noindex><a rel=\"nofollow\" href=\"https:\/\/portswigger.net\/burp\">Burp Suite<\/a><\/noindex>\u00a0\u2014 \u00e9 o \u2018canivete su\u00ed\u00e7o\u2019 para qualquer especialista em seguran\u00e7a. Todos usam, e \u00e9 muito pr\u00e1tico. Recentemente, foi lan\u00e7ada uma nova vers\u00e3o demo da edi\u00e7\u00e3o enterprise. Se antes era apenas uma ferramenta stand alone com plugins, agora os desenvolvedores est\u00e3o finalmente criando um grande servidor, a partir do qual ser\u00e1 poss\u00edvel gerenciar v\u00e1rios agentes. \u00c9 incr\u00edvel, recomendo experimentar.<\/p>\n<h3>Integra\u00e7\u00e3o no processo<\/h3>\n<p>\nA integra\u00e7\u00e3o ocorre de forma bastante boa e simples: <b>iniciar a varredura ap\u00f3s a instala\u00e7\u00e3o bem-sucedida <\/b>do aplicativo no ambiente e\u00a0<b>varredura ap\u00f3s a bem-sucedida realiza\u00e7\u00e3o de testes de integra\u00e7\u00e3o<\/b>.<\/p>\n<p>Se as integra\u00e7\u00f5es n\u00e3o funcionam ou t\u00eam placeholders e fun\u00e7\u00f5es simuladas, isso \u00e9 sem sentido e in\u00fatil \u2014 qualquer que seja o padr\u00e3o que enviarmos, o servidor ainda assim responder\u00e1 da mesma forma.<\/p>\n<ul>\n<li>Idealmente, deve haver um ambiente separado para testes.\n<\/li>\n<li>Antes de iniciar o teste, registre a sequ\u00eancia de login.\n<\/li>\n<li>Testes do sistema de administra\u00e7\u00e3o \u2014 apenas manuais.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>Processo<\/h2>\n<p>\nUm pouco de forma geral sobre o processo e sobre o funcionamento de cada ferramenta, em particular. Todos os aplicativos s\u00e3o diferentes \u2014 um se destaca na an\u00e1lise din\u00e2mica, outro na est\u00e1tica, um terceiro na an\u00e1lise de C\u00f3digo Aberto, testes de penetra\u00e7\u00e3o ou, na verdade, algo completamente diferente, por exemplo, eventos com\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Waf\">Waf<\/a><\/noindex>.<\/p>\n<blockquote><p>Cada processo precisa de controle.<\/p><\/blockquote>\n<p>\nPara entender como o processo funciona e onde ele pode ser melhorado, \u00e9 necess\u00e1rio coletar m\u00e9tricas de tudo o que for acess\u00edvel, incluindo m\u00e9tricas de produ\u00e7\u00e3o, m\u00e9tricas de ferramentas e de rastreadores de defeitos.<\/p>\n<p>Quaisquer dados s\u00e3o \u00fateis. \u00c9 importante observar de diferentes perspectivas onde cada ferramenta \u00e9 melhor aplicada e onde o processo est\u00e1 falhando. Pode ser que valha a pena olhar para o tempo de resposta do desenvolvimento para entender onde melhorar o processo com base no tempo. Quanto mais dados, mais perspectivas podem ser constru\u00eddas, desde n\u00edveis elevados at\u00e9 os detalhes de cada processo.<\/p>\n<p><img decoding=\"async\" alt=\"Medo e \u00f3dio no DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/93e079b19c4c8189ce6ca4eaec186eed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo todos os analisadores est\u00e1ticos e din\u00e2micos t\u00eam suas pr\u00f3prias APIs, m\u00e9todos de execu\u00e7\u00e3o e princ\u00edpios \u2014 alguns possuem agendadores e outros n\u00e3o \u2014 estamos escrevendo uma ferramenta <b>Orquestrador de AppSec<\/b>, que permite estabelecer um \u00fanico ponto de entrada para todo o processo desde o produto e gerenci\u00e1-lo a partir de um \u00fanico ponto.<\/p>\n<p>Gerentes, desenvolvedores e engenheiros de seguran\u00e7a t\u00eam um \u00fanico ponto de entrada, a partir do qual \u00e9 poss\u00edvel verificar o que est\u00e1 em execu\u00e7\u00e3o, configurar e iniciar a varredura, obter os resultados da varredura e fazer exig\u00eancias. Esfor\u00e7amo-nos para abandonar pap\u00e9is, traduzindo tudo para um formato compreens\u00edvel que seja utilizado pelos desenvolvedores \u2014 p\u00e1ginas no Confluence com status e m\u00e9tricas, defeitos no Jira ou em diferentes rastreadores de defeitos, ou mesmo a integra\u00e7\u00e3o em um processo s\u00edncrono\/ass\u00edncrono no CI\/CD.<\/p>\n<h2>Principais Conclus\u00f5es<\/h2>\n<p>\n<b>As ferramentas n\u00e3o s\u00e3o o mais importante.<\/b> Primeiro, pense no processo \u2014 depois, implemente as ferramentas. As ferramentas s\u00e3o boas, mas caras, por isso pode-se come\u00e7ar com o processo e ajustar a intera\u00e7\u00e3o e o entendimento entre o desenvolvimento e a seguran\u00e7a. Do ponto de vista da seguran\u00e7a, n\u00e3o \u00e9 necess\u00e1rio \"afundar\" tudo de uma vez; do ponto de vista do desenvolvimento, se h\u00e1 algo de alta criticidade, isso precisa ser resolvido, e n\u00e3o ignorar o problema.<\/p>\n<p><b>Qualidade do produto<\/b>\u00a0<b>\u00e9 o objetivo comum<\/b> tanto da seguran\u00e7a quanto do desenvolvimento. Estamos fazendo a mesma coisa, esfor\u00e7ando-nos para que tudo funcione corretamente e para evitar riscos \u00e0 reputa\u00e7\u00e3o e perdas financeiras. \u00c9 por isso que promovemos a abordagem DevSecOps e SecDevOps, para facilitar a comunica\u00e7\u00e3o e tornar o produto de maior qualidade.<\/p>\n<p><b>Comece com o que j\u00e1 existe<\/b>: requisitos, arquitetura, verifica\u00e7\u00f5es parciais, treinamentos, diretrizes. N\u00e3o \u00e9 necess\u00e1rio aplicar todas as pr\u00e1ticas em todos os projetos de imediato \u2014 <b>avance de forma iterativa<\/b>. N\u00e3o h\u00e1 um padr\u00e3o \u00fanico \u2014 <b>experimente<\/b> e teste diferentes abordagens e solu\u00e7\u00f5es.<\/p>\n<p><b>Entre os defeitos de seguran\u00e7a da informa\u00e7\u00e3o e os defeitos funcionais h\u00e1 um sinal de igualdade<\/b>.<\/p>\n<p><b>Automatize tudo<\/b>, o que se movimenta. Tudo que n\u00e3o se move \u2014 mova e automatize. Se algo for feito manualmente, essa parte do processo n\u00e3o \u00e9 boa. Talvez valha a pena reconsider\u00e1-la e tamb\u00e9m automatiz\u00e1-la.<\/p>\n<p>Se o tamanho da equipe de seguran\u00e7a da informa\u00e7\u00e3o for pequeno \u2014 <b>use Campe\u00f5es de Seguran\u00e7a<\/b>.<\/p>\n<p>\u00c9 poss\u00edvel que o que eu contei n\u00e3o sirva para voc\u00ea e que voc\u00ea crie algo pr\u00f3prio \u2014 e isso \u00e9 bom. Mas\u00a0<b>escolha ferramentas com base nas exig\u00eancias do seu processo espec\u00edfico<\/b>. N\u00e3o se baseie no que a comunidade diz, que esta ferramenta \u00e9 ruim e aquela \u00e9 boa. \u00c9 poss\u00edvel que, no seu produto, tudo ocorra ao contr\u00e1rio.<\/p>\n<p><b>Exig\u00eancias para as ferramentas.<\/b><\/p>\n<ul>\n<li>Baixo n\u00edvel de Falsos Positivos.\n<\/li>\n<li>Tempo de an\u00e1lise adequado.\n<\/li>\n<li>Facilidade de uso.\n<\/li>\n<li>Disponibilidade de integra\u00e7\u00f5es.\n<\/li>\n<li>Compreens\u00e3o do Roadmap de desenvolvimento do produto.\n<\/li>\n<li>Possibilidade de customiza\u00e7\u00e3o das ferramentas.\n<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p>A palestra do Yuri foi escolhida como uma das melhores na DevOpsConf 2018. Para conhecer mais ideias interessantes e casos pr\u00e1ticos, venha nos dias 27 e 28 de maio em Skolkovo na\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow-rit\/2019\">DevOpsConf<\/a><\/noindex> dentro do <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2019\">festival RIT++<\/a><\/noindex>. E ainda melhor, se voc\u00ea estiver disposto a compartilhar sua experi\u00eancia, ent\u00e3o <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-rit\">envie sua proposta<\/a><\/noindex> para a palestra at\u00e9 21 de abril.<\/p><\/blockquote>\n<p>Fonte: <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.3 - 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\/pt\/blog\/administrirovanie\/strah-i-nenavist-devsecops\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47Medo e \u00f3dio em DevSecOps | ProHoster","description":"N\u00f3s t\u00ednhamos 2 analisadores de c\u00f3digo, 4 ferramentas para testes din\u00e2micos, nossas cria\u00e7\u00f5es e 250 scripts.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/strah-i-nenavist-devsecops","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/31852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=31852"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/31852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/23720"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=31852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=31852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=31852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}