{"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\/es\/blog\/administrirovanie\/strah-i-nenavist-devsecops","title":{"rendered":"Miedo y odio en DevSecOps","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ten\u00edamos 2 analizadores de c\u00f3digo, 4 herramientas de pruebas din\u00e1micas, nuestras propias creaciones y 250 scripts. No es que todo esto fuera necesario en el proceso actual, pero una vez que comenc\u00e9 a implementar DevSecOps, es necesario hacerlo bien.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en 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\">Fuente<\/a><\/noindex>. Creadores de personajes: Justin Roiland y Dan Harmon.<\/i><\/p>\n<p>\u00bfQu\u00e9 es SecDevOps? \u00bfY DevSecOps? \u00bfEn qu\u00e9 se diferencian? \u00bfDe qu\u00e9 trata la Seguridad de Aplicaciones? \u00bfPor qu\u00e9 el enfoque cl\u00e1sico ya no funciona? Todas estas preguntas tienen respuestas. <b>Yuri Shabalin<\/b> de\u00a0<b>Swordfish Security. <\/b>Yuri responder\u00e1 a todo en detalle y abordar\u00e1 los problemas de la transici\u00f3n del modelo cl\u00e1sico de Seguridad de Aplicaciones al proceso DevSecOps: c\u00f3mo integrar adecuadamente el proceso de desarrollo seguro en el proceso de DevOps sin romper nada, c\u00f3mo pasar por las etapas principales de pruebas de seguridad, qu\u00e9 herramientas se pueden utilizar, en qu\u00e9 se diferencian y c\u00f3mo configurarlas correctamente para evitar trampas.<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=\"Reproducir video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n<b>Sobre el ponente:<\/b> <b>Yuri Shabalin\u00a0\u2014 <\/b>Arquitecto de Seguridad Jefe en la empresa <b>Swordfish Security<\/b>. Es responsable de implementar SSDL, de la integraci\u00f3n general de herramientas de an\u00e1lisis de aplicaciones en un ecosistema unificado de desarrollo y pruebas. 7 a\u00f1os de experiencia en seguridad de la informaci\u00f3n. Ha trabajado en Alfa-Bank, Sberbank y Positive Technologies, que desarrolla software y ofrece servicios. Ponente en conferencias internacionales como ZerONights, PHDays, RISSPA, OWASP.<\/p>\n<h2>Seguridad de Aplicaciones: \u00bfde qu\u00e9 trata?<\/h2>\n<p>\n<b>Seguridad de Aplicaciones<\/b>\u00a0\u2014 es una rama de la seguridad que se encarga de la seguridad de las aplicaciones. No se relaciona con la infraestructura o la seguridad de la red, sino espec\u00edficamente con lo que escribimos y en lo que trabajan los desarrolladores: son las vulnerabilidades y defectos de la propia aplicaci\u00f3n.<\/p>\n<p>Direcci\u00f3n <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/ef\/ef6\/modeling\/designer\/advanced\/edmx\/ssdl-spec\">SDL o SDLC<\/a><\/noindex>\u00a0\u2014 <b>Ciclo de vida del desarrollo de seguridad<\/b>\u00a0\u2014 fue desarrollado por Microsoft. En el diagrama est\u00e1 el modelo can\u00f3nico de SDLC, cuyo objetivo principal es la participaci\u00f3n de la seguridad en cada etapa del desarrollo, desde los requisitos hasta el lanzamiento y la producci\u00f3n. Microsoft se dio cuenta de que hab\u00eda demasiados errores en producci\u00f3n, que estaban aumentando y hab\u00eda que hacer algo al respecto, y propuso este enfoque que se ha vuelto can\u00f3nico.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/466773b9a5bd355419fa1d6d1ddbca66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa Seguridad de Aplicaciones y SSDL no est\u00e1n destinadas a detectar vulnerabilidades, como com\u00fanmente se cree, sino a prevenir su aparici\u00f3n. Con el tiempo, el enfoque can\u00f3nico de Microsoft fue mejorado y desarrollado, y se profundiz\u00f3 en detalle.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/58d3e6aadd30594c018940bcb2a8248b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEl SDLC can\u00f3nico est\u00e1 muy detallado en diversas metodolog\u00edas como OpenSAMM, BSIMM y OWASP. Las metodolog\u00edas son diferentes, pero en general son similares.<\/p>\n<h3>Modelo de Madurez para la Construcci\u00f3n de Seguridad<\/h3>\n<p>\nMe agrada m\u00e1s <b>BSIMM<\/b>\u00a0\u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bsimm.com\/\">Modelo de Madurez para la Construcci\u00f3n de Seguridad<\/a><\/noindex>. La base de la metodolog\u00eda es la divisi\u00f3n del proceso de Seguridad de Aplicaciones en 4 dominios: Gobernanza, Inteligencia, Puntos de Contacto SSDL y Despliegue. En cada dominio hay 12 pr\u00e1cticas, que se presentan en forma de 112 actividades.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/ae0bbfd0dde335af886282672ed92367.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCada una de las 112 actividades tiene <b>3 niveles de madurez<\/b>: inicial, intermedio y avanzado. Todas las 12 pr\u00e1cticas se pueden estudiar por secciones, seleccionar lo que sea importante para usted, entender c\u00f3mo implementarlas y agregar elementos gradualmente, como an\u00e1lisis est\u00e1tico y din\u00e1mico de c\u00f3digo o revisi\u00f3n de c\u00f3digo. Elabore un plan y, a partir de \u00e9l, trabaje sin prisa en la implementaci\u00f3n de las actividades seleccionadas.<\/p>\n<h2>Por qu\u00e9 DevSecOps<\/h2>\n<p><\/p>\n<blockquote><p>DevOps es un gran proceso en el que se debe cuidar la seguridad.<\/p><\/blockquote>\n<p>\nInicialmente <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DevOps\"><b>DevOps<\/b><\/a><\/noindex> se asumieron auditor\u00edas de seguridad. En la pr\u00e1ctica, el n\u00famero de equipos de seguridad era mucho menor que ahora, y actuaban no como participantes en el proceso, sino como un organismo de control y supervisi\u00f3n que impone requisitos y verifica la calidad del producto al final del lanzamiento. Este es el enfoque cl\u00e1sico, donde los equipos de seguridad estaban separados del desarrollo y no participaban en el proceso.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/1c5958fb123313308bdd92c5471c44da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEl principal problema es que la seguridad de la informaci\u00f3n est\u00e1 separada del desarrollo. Generalmente, hay un contorno de seguridad de la informaci\u00f3n y en \u00e9l hay 2-3 grandes y costosas herramientas. Una vez cada seis meses, se recibe c\u00f3digo fuente o una aplicaci\u00f3n que necesita ser revisada, y una vez al a\u00f1o se realizan <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\">pruebas de penetraci\u00f3n<\/a><\/noindex>. Todo esto lleva a que los plazos de lanzamiento se retrasen, y el desarrollador se enfrenta a una gran cantidad de vulnerabilidades de herramientas automatizadas. Todo esto es imposible de resolver y reparar, porque a\u00fan no se han analizado los resultados de los seis meses anteriores, y ya hay un nuevo lote.<\/p>\n<p>En el proceso de trabajo de nuestra empresa, vemos que la seguridad en todas las \u00e1reas e industrias reconoce que es hora de alinearse y trabajar con el desarrollo en un mismo camino: en\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 paradigma DevSecOps encaja perfectamente en la metodolog\u00eda de desarrollo \u00e1gil, en la implementaci\u00f3n, apoyo y participaci\u00f3n en cada lanzamiento e iteraci\u00f3n.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/cf258bd7efc82ff27787b5029cf2f945.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Transici\u00f3n a DevSecOps<\/h2>\n<p>\nLa palabra m\u00e1s importante en el Ciclo de Vida del Desarrollo de Seguridad es <b>\"proceso\"<\/b>Debes entender esto antes de pensar en comprar herramientas.<\/p>\n<blockquote><p>Simplemente incluir herramientas en el proceso de DevOps no es suficiente; es importante la interacci\u00f3n y comprensi\u00f3n entre los participantes del proceso.<\/p><\/blockquote>\n<p><\/p>\n<h3>Lo m\u00e1s importante son las personas, no las herramientas.<\/h3>\n<p>\nA menudo, la planificaci\u00f3n de un proceso de desarrollo seguro comienza con la elecci\u00f3n y compra de una herramienta, y termina con intentos de integrar la herramienta en el proceso actual, que quedan como intentos. Esto lleva a consecuencias desafortunadas, porque cada herramienta tiene sus propias caracter\u00edsticas y limitaciones.<\/p>\n<p>Un caso com\u00fan es cuando el departamento de seguridad elige una buena, costosa herramienta, con amplias capacidades, y llega a los desarrolladores para integrarla en el proceso. Pero no funciona: el proceso est\u00e1 dise\u00f1ado de tal manera que las limitaciones de la herramienta ya comprada no encajan en la actual paradigma.<\/p>\n<blockquote><p>Primero describe qu\u00e9 resultado deseas y c\u00f3mo ser\u00e1 el proceso. Esto ayudar\u00e1 a comprender los roles de la herramienta y la seguridad en el proceso.<\/p><\/blockquote>\n<p><\/p>\n<h3>Comienza con lo que ya se utiliza.<\/h3>\n<p>\nAntes de comprar herramientas costosas, observa lo que ya tienes. Cada empresa tiene requisitos de seguridad que se imponen al desarrollo, hay auditor\u00edas, pruebas de penetraci\u00f3n; \u00bfpor qu\u00e9 no transformar todo esto en una forma clara y conveniente para todos?<\/p>\n<p>Normalmente, los requisitos son un documento en papel que se encuentra en una estanter\u00eda. Hubo un caso en el que llegamos a una empresa para revisar los procesos y pedimos ver los requisitos de seguridad para el software. El especialista que se encargaba de eso busc\u00f3 por mucho tiempo:<\/p>\n<p><i>\u2014 Ahora, en alg\u00fan lugar en las notas hab\u00eda un camino donde se encontraba este documento.<\/i><\/p>\n<p>Al final, obtuvimos el documento una semana despu\u00e9s.<\/p>\n<p>Para requisitos, auditor\u00edas y dem\u00e1s, crea una p\u00e1gina, por ejemplo, en\u00a0<b>Confluence<\/b>\u00a0\u2014 es conveniente para todos.<\/p>\n<blockquote><p>Es m\u00e1s f\u00e1cil reformatear lo que ya existe y usarlo como punto de partida.<\/p><\/blockquote>\n<p><\/p>\n<h3>Usa los Security Champions. <\/h3>\n<p>\nNormalmente, en una empresa promedio con 100-200 desarrolladores trabaja un experto en seguridad, que desempe\u00f1a varias funciones y no puede revisar todo f\u00edsicamente. Incluso si se esfuerza al m\u00e1ximo, no podr\u00e1 revisar todo el c\u00f3digo que genera el desarrollo. Para tales casos, se desarroll\u00f3 el concepto de <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/Security_Champions\"><b>Security Champions.<\/b><\/a><\/noindex>.<\/p>\n<blockquote><p>Los Campeones de Seguridad son personas dentro del equipo de desarrollo que est\u00e1n interesadas en la seguridad de su producto.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/c67728db4a6e34407da199387eba2bb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEl Campe\u00f3n de Seguridad es el punto de entrada al equipo de desarrollo y un evangelista de la seguridad en una sola persona.<\/p>\n<p>Normalmente, cuando un experto en seguridad se une al equipo de desarrollo y se\u00f1ala un error en el c\u00f3digo, suele recibir una respuesta sorprendida:<\/p>\n<p><i>\u2014 \u00bfY usted qui\u00e9n es? Es la primera vez que lo veo. Todo est\u00e1 bien para m\u00ed: un compa\u00f1ero senior en la revisi\u00f3n de c\u00f3digo me dijo \"aplicar\", \u00a1sigamos adelante!<\/i><\/p>\n<p>Esta es una situaci\u00f3n t\u00edpica, porque hay mucha m\u00e1s confianza hacia los compa\u00f1eros senior o simplemente a los colegas del equipo con los que el desarrollador interact\u00faa constantemente en el trabajo y en las revisiones de c\u00f3digo. Si en lugar de un experto en seguridad, es un Campe\u00f3n de Seguridad quien se\u00f1ala el error y sus consecuencias, su palabra tendr\u00e1 m\u00e1s peso.<\/p>\n<p>Adem\u00e1s, los desarrolladores conocen su c\u00f3digo mejor que cualquier experto en seguridad. Para alguien que tiene al menos 5 proyectos en la herramienta de an\u00e1lisis est\u00e1tico, suele ser complicado recordar todos los matices. Los Campeones de Seguridad conocen su producto: con qu\u00e9 interact\u00faa y qu\u00e9 mirar primero, son m\u00e1s efectivos.<\/p>\n<p>As\u00ed que reflexione sobre la posibilidad de implementar Campeones de Seguridad y ampliar la influencia del equipo de seguridad. Para el propio campe\u00f3n, tambi\u00e9n es \u00fatil: desarrollo profesional en un nuevo campo, ampliaci\u00f3n de la perspectiva t\u00e9cnica, mejora de habilidades t\u00e9cnicas, de gesti\u00f3n y de liderazgo, aumento en el valor en el mercado. Es un cierto elemento de ingenier\u00eda social, sus \"ojos\" en el equipo de desarrollo.<\/p>\n<h2>Etapas de prueba<\/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 par\u00e1bola 20 a 80<\/a><\/noindex>\u00a0indica que el 20% de los esfuerzos generan el 80% del resultado. Estos 20% son pr\u00e1cticas de an\u00e1lisis de aplicaciones que se pueden y deben automatizar. Ejemplos de tales actividades son el an\u00e1lisis est\u00e1tico, <b>SAST<\/b>, el an\u00e1lisis din\u00e1mico, <b>DAST,<\/b> y\u00a0<b>control de c\u00f3digo abierto<\/b>. Hablar\u00e9 en detalle sobre las actividades, as\u00ed como sobre las herramientas, con qu\u00e9 peculiaridades nos encontramos normalmente al implementarlas en el proceso y c\u00f3mo hacerlo correctamente.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/db720e0879cdd1ed818461ffb5f927da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Problemas principales de las herramientas<\/h3>\n<p>\nResaltar\u00e9 los problemas actuales que requieren atenci\u00f3n en todas las herramientas. Los analizar\u00e9 m\u00e1s a fondo para no repetir m\u00e1s adelante.<\/p>\n<p><b>An\u00e1lisis prolongado. <\/b>Si desde el commit hasta la producci\u00f3n se tardan 30 minutos en todas las pruebas y la compilaci\u00f3n, las verificaciones de seguridad llevar\u00e1n un d\u00eda. Nadie va a frenar el proceso por eso. Tengan en cuenta esta particularidad y saquen conclusiones.<\/p>\n<p><b>Alto nivel de False Negative o False Positive. <\/b>Todos los productos son diferentes, todos utilizan diferentes frameworks y su propio estilo de codificaci\u00f3n. En diferentes bases de c\u00f3digo y tecnolog\u00edas, las herramientas pueden mostrar diferentes niveles de False Negative y False Positive. Por lo tanto, presten atenci\u00f3n a lo que exactamente en\u00a0<b>su<\/b> empresa y para <b>sus<\/b> aplicaciones mostrar\u00e1 un resultado bueno y confiable.<\/p>\n<p><b>No hay integraciones con las herramientas existentes<\/b>. Mire las herramientas desde el punto de vista de las integraciones, con lo que ya est\u00e1 utilizando. Por ejemplo, si tiene Jenkins o TeamCity, verifique la integraci\u00f3n de las herramientas precisamente con este software, y no con GitLab CI, que usted no utiliza.<\/p>\n<p><b>Falta o excesiva complejidad en la personalizaci\u00f3n. <\/b>Si la herramienta no tiene API, \u00bfpara qu\u00e9 sirve? Todo lo que se puede hacer en la interfaz debe estar disponible a trav\u00e9s de la API. Idealmente, la herramienta debe tener la capacidad de personalizar las verificaciones.<\/p>\n<p><b>No hay hoja de ruta para el desarrollo del producto. <\/b>El desarrollo no se detiene, siempre estamos utilizando nuevos frameworks y funciones, reescribiendo c\u00f3digo antiguo en nuevos lenguajes. Queremos estar seguros de que la herramienta que compremos seguir\u00e1 soportando nuevos frameworks y tecnolog\u00edas. Por eso, es importante saber que el producto tiene una real y correcta <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\">Hoja de ruta<\/a><\/noindex> hoja de ruta.<\/p>\n<h3>Particularidades del proceso<\/h3>\n<p>\nAdem\u00e1s de las particularidades de las herramientas, tengan en cuenta las particularidades del proceso de desarrollo. Por ejemplo, interferir en el desarrollo es un error t\u00edpico. Veamos qu\u00e9 otras caracter\u00edsticas deben ser consideradas y en qu\u00e9 debe prestar atenci\u00f3n el equipo de seguridad.<\/p>\n<p>Para no retrasar los plazos de desarrollo y lanzamiento, cree <b>diferentes reglas<\/b> y diferentes <b>show stoppers\u00a0<\/b>\u2014 criterios para detener el proceso de compilaci\u00f3n en caso de vulnerabilidades \u2014 <b>para diferentes entornos<\/b>. Por ejemplo, entendemos que la rama actual va a un entorno de desarrollo o UAT, por lo que no detenemos ni decimos:<\/p>\n<p><i>\u2014 \u00a1Usted tiene vulnerabilidades aqu\u00ed, no puede continuar!<\/i><\/p>\n<p>En esta etapa, es importante informar a los desarrolladores que hay problemas de seguridad a los que deben prestar atenci\u00f3n.<\/p>\n<p><b>La existencia de vulnerabilidades no es un obst\u00e1culo para continuar con las pruebas.<\/b>: manual, de integraci\u00f3n o manual. Por otro lado, necesitamos de alguna manera aumentar la seguridad del producto, para que los desarrolladores no ignoren lo que encuentra la seguridad. As\u00ed que a veces actuamos de esta manera: en el entorno de desarrollo, cuando se lanza al entorno de desarrollo, simplemente notificamos a los desarrolladores:<\/p>\n<p><i>\u2014 Chicos, tienen problemas, por favor presten atenci\u00f3n a ellos.<\/i><\/p>\n<p>En la etapa de UAT, mostramos nuevamente advertencias sobre vulnerabilidades, y en la etapa de salida al entorno de producci\u00f3n decimos:<\/p>\n<p><i>\u2014 Chicos, les hemos advertido varias veces, no han hecho nada: no los dejaremos salir con esto.<\/i><\/p>\n<p>Si hablamos del c\u00f3digo y la din\u00e1mica, solo debemos mostrar y advertir sobre las vulnerabilidades de aquellas funciones y c\u00f3digos que se han escrito recientemente en esta funci\u00f3n. Si un desarrollador ha movido un bot\u00f3n 3 p\u00edxeles y le decimos que tiene una inyecci\u00f3n SQL y que necesita corregirlo urgentemente, eso es incorrecto. Solo mire lo que se ha escrito ahora y los cambios que est\u00e1n llegando a la aplicaci\u00f3n.<\/p>\n<p>Supongamos que tenemos un defecto funcional: c\u00f3mo no deber\u00eda funcionar la aplicaci\u00f3n: el dinero no se transfiere, al hacer clic en el bot\u00f3n no hay una transici\u00f3n a la siguiente p\u00e1gina o no se carga el producto. <b>Los defectos de seguridad<\/b>\u00a0son defectos similares, pero no en t\u00e9rminos del funcionamiento de la aplicaci\u00f3n, sino de la seguridad. <\/p>\n<blockquote><p>No todos los problemas de calidad del software son problemas de seguridad. Pero todos los problemas de seguridad est\u00e1n relacionados con la calidad del software. Sherif Mansour, Expedia.<\/p><\/blockquote>\n<p>\nDado que todas las vulnerabilidades son defectos similares, deben estar donde est\u00e1n todos los defectos de desarrollo. As\u00ed que olv\u00eddense de los informes y los terror\u00edficos PDF que nadie lee.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/e54e64658a3882bdc68a48c6ef426746.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCuando trabajaba en una empresa de desarrollo, recib\u00ed un informe de herramientas de an\u00e1lisis est\u00e1tico. Lo abr\u00ed, me asust\u00e9, prepar\u00e9 un caf\u00e9, hoje\u00e9 350 p\u00e1ginas, lo cerr\u00e9 y volv\u00ed a trabajar. <b>Los grandes informes son informes muertos.<\/b>. Por lo general, no llevan a ninguna parte, los correos se eliminan, se olvidan, se pierden o el negocio dice que asume los riesgos.<\/p>\n<p>\u00bfQu\u00e9 hacer? Los defectos confirmados que encontr\u00e9 los transformamos en un formato amigable para el desarrollo, por ejemplo, los agrupamos en el backlog en Jira. Priorizamos los defectos y los solucionamos en orden de prioridad junto con los defectos funcionales y de pruebas.<\/p>\n<h2>An\u00e1lisis est\u00e1tico - SAST<\/h2>\n<p>\n<b>Es un an\u00e1lisis de c\u00f3digo en busca de vulnerabilidades<\/b>, pero esto no es lo mismo que SonarQube. No solo verificamos patrones o estilo. Utilizamos varios enfoques para el an\u00e1lisis: basado en el \u00e1rbol 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>, por an\u00e1lisis de archivos de configuraci\u00f3n. Esto se refiere estrictamente al c\u00f3digo.<\/p>\n<p><b>Ventajas del enfoque<\/b>: <b>identificaci\u00f3n de vulnerabilidades en el c\u00f3digo en una etapa temprana del desarrollo<\/b>, cuando a\u00fan no hay entornos y herramientas listos, y<b>\u00a0posibilidad de escaneo incremental<\/b>: escaneo de la secci\u00f3n de c\u00f3digo que ha cambiado, y solo de la funcionalidad que estamos implementando, lo que reduce el tiempo de escaneo.<\/p>\n<p><b>Desventajas<\/b>\u00a0\u2014 la falta de soporte para los lenguajes necesarios.<\/p>\n<p><b>Integraciones necesarias, <\/b>que deber\u00edan estar presentes en las herramientas, en mi opini\u00f3n subjetiva:<\/p>\n<ul>\n<li>Herramienta de integraci\u00f3n: Jenkins, TeamCity y Gitlab CI.\n<\/li>\n<li>Entorno de desarrollo: Intellij IDEA, Visual Studio. Es m\u00e1s c\u00f3modo para el desarrollador no tener que lidiar con una interfaz confusa que tiene que memorizar, sino ver todas las integraciones y vulnerabilidades necesarias directamente en su propio entorno de desarrollo.\n<\/li>\n<li>Revisi\u00f3n de c\u00f3digo: SonarQube y revisi\u00f3n manual.\n<\/li>\n<li>Seguimiento de defectos: Jira y Bugzilla.\n<\/li>\n<\/ul>\n<p>\nEn la imagen se presentan algunos de los mejores representantes del an\u00e1lisis est\u00e1tico.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/bab3420874ac090d4d107edb0d2b857b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLo importante no son las herramientas, sino el proceso, por lo que existen soluciones de c\u00f3digo abierto que tambi\u00e9n son adecuadas para perfeccionar el proceso.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/4f2c278922c291b15922bc5748f87dc3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEl SAST de c\u00f3digo abierto no encontrar\u00e1 una gran cantidad de vulnerabilidades o flujos de datos complejos, pero se pueden y deben utilizar al construir el proceso. Ayudan a entender c\u00f3mo se construir\u00e1 el proceso, qui\u00e9n ser\u00e1 responsable de los errores, qui\u00e9n reportar\u00e1 y qui\u00e9n informar\u00e1. Si quieres llevar a cabo la etapa inicial de construcci\u00f3n de la seguridad de tu c\u00f3digo, utiliza soluciones de c\u00f3digo abierto.<\/p>\n<p>\u00bfC\u00f3mo se puede integrar esto si est\u00e1s al principio del camino y no tienes nada: ni CI, ni Jenkins, ni TeamCity? Consideremos las integraciones en el proceso.<\/p>\n<h3>Integraci\u00f3n a nivel de CVS<\/h3>\n<p>\nSi tienes Bitbucket o GitLab, puedes hacer una integraci\u00f3n a nivel de <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/CVS\">Sistema de Versiones Concurrentes<\/a><\/noindex>.<\/p>\n<p><b>Por evento<\/b>\u00a0\u2014 pull request, commit. Escaneas el c\u00f3digo y en el estado de la compilaci\u00f3n muestras si la verificaci\u00f3n de seguridad pas\u00f3 o no.<\/p>\n<p><b>Retroalimentaci\u00f3n. <\/b>Sin duda, la retroalimentaci\u00f3n siempre es necesaria. Si simplemente ejecutaste en el lado de seguridad, lo guardaste en una caja y no contaste nada al respecto, y luego al final del mes sacas un mont\u00f3n de errores, eso no est\u00e1 bien y no es correcto.<\/p>\n<h3>Integraci\u00f3n con el sistema de revisi\u00f3n de c\u00f3digo<\/h3>\n<p>\nUna vez establecimos a un usuario t\u00e9cnico de AppSec como revisor predeterminado en varios proyectos importantes. Dependiendo de si se encontraron errores en el nuevo c\u00f3digo o no, el revisor en el pull request asigna un estado de 'accept' o 'need work' \u2014 o todo est\u00e1 OK, o necesita mejoras y se agregan enlaces sobre qu\u00e9 exactamente debe ser corregido. Para la integraci\u00f3n con la versi\u00f3n que se va a producci\u00f3n, ten\u00edamos habilitada la prohibici\u00f3n de merge si la prueba de seguridad no pasaba. Esto lo incluimos en la revisi\u00f3n manual de c\u00f3digo, y los dem\u00e1s participantes del proceso ve\u00edan los estados de seguridad exactamente para este proceso espec\u00edfico.<\/p>\n<h3>Integraci\u00f3n con SonarQube<\/h3>\n<p>\nMuchos tienen <noindex><a rel=\"nofollow\" href=\"https:\/\/de.wikipedia.org\/wiki\/Quality_Gate\">quality gate<\/a><\/noindex> relacionado con la calidad del c\u00f3digo. Aqu\u00ed es lo mismo: se pueden hacer los mismos gates solo para herramientas SAST. Tendr\u00e1 la misma interfaz, el mismo quality gate, solo que se denominar\u00e1 <b>security gate<\/b>. Y as\u00ed, si tienes un proceso configurado utilizando SonarQube, puedes integrar todo sin problemas.<\/p>\n<h3>Integraci\u00f3n a nivel de CI<\/h3>\n<p>\nAqu\u00ed tambi\u00e9n todo es bastante simple:<\/p>\n<ul>\n<li><b>En un mismo nivel con pruebas autom\u00e1ticas<\/b>, pruebas unitarias.\n<\/li>\n<li><b>Divisi\u00f3n por etapas de desarrollo<\/b>: dev, test, prod. Se pueden incluir diferentes conjuntos de reglas, o diferentes condiciones de fallo: detenemos la compilaci\u00f3n, no detenemos la compilaci\u00f3n.\n<\/li>\n<li><b>Ejecuci\u00f3n sincr\u00f3nica\/as\u00edncrona<\/b>. Esperamos la finalizaci\u00f3n de la verificaci\u00f3n de pruebas de seguridad o no. Es decir, simplemente las ejecutamos y continuamos, y luego recibimos el estado de que todo est\u00e1 bien o mal.\n<\/li>\n<\/ul>\n<p>\nTodo esto en un mundo ideal. En la vida real no existe, pero nos esforzamos por ello. El resultado de las pruebas de seguridad debe ser an\u00e1logo a los resultados de las pruebas unitarias.<\/p>\n<p>Por ejemplo, tomamos un gran proyecto y decidimos que ahora lo escanearemos con SAST \u2014 est\u00e1 bien. Metimos este proyecto en SAST, nos dio 20,000 vulnerabilidades y, mediante una decisi\u00f3n voluntariosa, aceptamos que todo estaba bien. 20,000 vulnerabilidades son nuestra deuda t\u00e9cnica. Colocaremos esta deuda en una cajita, la resolveremos poco a poco y registraremos los errores en los rastreadores de defectos. Contrataremos una compa\u00f1\u00eda, lo haremos todo nosotros mismos o contaremos con la ayuda de Security Champions \u2014 y la deuda t\u00e9cnica disminuir\u00e1.<\/p>\n<p>Y todas las nuevas vulnerabilidades en el nuevo c\u00f3digo deben ser corregidas de la misma manera que los errores en las pruebas unitarias o en las pruebas autom\u00e1ticas. En otras palabras, se inici\u00f3 una compilaci\u00f3n, se ejecutaron las pruebas, fallaron dos y hubo dos pruebas de seguridad. Est\u00e1 bien \u2014 fuimos, miramos qu\u00e9 sucedi\u00f3, corregimos uno, corregimos el otro, la pr\u00f3xima vez ejecutamos de nuevo \u2014 todo bien, no aparecieron nuevas vulnerabilidades, las pruebas no fallaron. Si esta tarea es m\u00e1s compleja y necesita ser entendida a fondo, o si la correcci\u00f3n de vulnerabilidades afecta a grandes capas de lo que est\u00e1 detr\u00e1s: se registr\u00f3 un error en el rastreador de defectos, se prioriza y se corrige. Desafortunadamente, el mundo no es perfecto y a veces las pruebas fallan.<\/p>\n<p>Un ejemplo de security gate \u2014 similar a un quality gate, basado en la presencia y cantidad de vulnerabilidades en el c\u00f3digo.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/eb30d3c7988b28c2cb25e9656871ec96.png\" style=\"display:block;margin: 0 auto;\" \/>Nos integramos con SonarQube \u2014 se instala un plugin, todo es muy conveniente y genial.<\/p>\n<h3>Integraci\u00f3n con el entorno de desarrollo<\/h3>\n<p>\n<b>Opciones de integraci\u00f3n:<\/b><\/p>\n<ul>\n<li>Iniciar el escaneo desde el entorno de desarrollo incluso antes del commit.\n<\/li>\n<li>Visualizar los resultados.\n<\/li>\n<li>Analizar los resultados.\n<\/li>\n<li>Sincronizaci\u00f3n con el servidor.\n<\/li>\n<\/ul>\n<p>\nAs\u00ed es como se ve la obtenci\u00f3n de resultados del servidor.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/270d4af76fddc0ceebca908c7d3835b8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn nuestro entorno de desarrollo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/idea\/\">Intellij IDEA<\/a><\/noindex> aparece simplemente un punto adicional que indica que durante el escaneo se detectaron estas vulnerabilidades. Se puede corregir el c\u00f3digo de inmediato, ver las recomendaciones y\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_graph\">Flow Graph<\/a><\/noindex>. Todo esto est\u00e1 ubicado en el espacio de trabajo del desarrollador, lo que es muy conveniente: no es necesario ir a otros enlaces y ver algo adicional.<\/p>\n<h2>Open Source<\/h2>\n<p>\nEste es mi tema favorito. Todos usan bibliotecas de c\u00f3digo abierto \u2014 \u00bfpor qu\u00e9 escribir un mont\u00f3n de parches y bicicletas, cuando se puede utilizar una biblioteca lista que ya tiene todo implementado?<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/05b9cd5a8b269af2a3f59931a0774778.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPor supuesto, es as\u00ed, pero las bibliotecas tambi\u00e9n son escritas por personas, tambi\u00e9n conllevan ciertos riesgos y tambi\u00e9n presentan vulnerabilidades que se informan peri\u00f3dicamente o de manera constante. Por eso existe el siguiente paso en la seguridad de aplicaciones: el an\u00e1lisis de componentes de c\u00f3digo abierto.<\/p>\n<h3>An\u00e1lisis de C\u00f3digo Abierto - OSA<\/h3>\n<p>\nLa herramienta consta de tres grandes etapas.<\/p>\n<p><b>B\u00fasqueda de vulnerabilidades en bibliotecas. <\/b>Por ejemplo, la herramienta sabe que estamos utilizando alguna biblioteca, y que en\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Common_Vulnerabilities_and_Exposures\">CVE<\/a><\/noindex> o en los rastreadores de errores hay algunas vulnerabilidades relacionadas con esa versi\u00f3n de la biblioteca. Al intentar usarla, la herramienta emitir\u00e1 una advertencia de que la biblioteca es vulnerable y recomendara utilizar otra versi\u00f3n que no tenga vulnerabilidades.<\/p>\n<p><b>An\u00e1lisis de la limpieza de licencias. <\/b>Esto a\u00fan no es muy popular aqu\u00ed, pero si trabajas con el extranjero, a veces puedes recibir un aviso por utilizar un componente de c\u00f3digo abierto que no se puede usar o modificar. Seg\u00fan la pol\u00edtica de la biblioteca de licencias, no podemos hacer esto. O, si la hemos modificado y la usamos, debemos publicar nuestro c\u00f3digo. Por supuesto, nadie quiere publicar el c\u00f3digo de sus productos, pero tambi\u00e9n hay formas de protegerse de esto.<\/p>\n<p><b>An\u00e1lisis de componentes que se utilizan en un entorno industrial. <\/b>Imaginemos una situaci\u00f3n hipot\u00e9tica en la que finalmente hemos terminado el desarrollo y lanzamos la \u00faltima versi\u00f3n de nuestro microservicio. Est\u00e1 funcionando maravillosamente all\u00ed: una semana, un mes, un a\u00f1o. No lo estamos manteniendo, no realizamos verificaciones de seguridad, parece que todo est\u00e1 bien. Pero de repente, dos semanas despu\u00e9s del lanzamiento, surge una vulnerabilidad cr\u00edtica en un componente de c\u00f3digo abierto que estamos utilizando en esta versi\u00f3n, en el entorno industrial. Si no registramos qu\u00e9 y d\u00f3nde estamos utilizando, simplemente no veremos esta vulnerabilidad. Algunas herramientas tienen la opci\u00f3n de monitorear vulnerabilidades en bibliotecas que se est\u00e1n utilizando actualmente en producci\u00f3n. Esto es muy \u00fatil.<\/p>\n<p><b>Caracter\u00edsticas:<\/b><\/p>\n<ul>\n<li>Pol\u00edticas diferentes para diferentes etapas de desarrollo.\n<\/li>\n<li>Monitoreo de componentes en el entorno industrial.\n<\/li>\n<li>Control de bibliotecas en el per\u00edmetro de la organizaci\u00f3n.\n<\/li>\n<li>Soporte para diferentes sistemas de construcci\u00f3n y lenguajes.\n<\/li>\n<li>An\u00e1lisis de im\u00e1genes de Docker.\n<\/li>\n<\/ul>\n<p>\nAlgunos ejemplos de l\u00edderes en el \u00e1rea que se dedican al an\u00e1lisis de c\u00f3digo abierto.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/f1b05f86beb4a64f9bf3443963e3603b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEl \u00fanico gratuito entre ellos es <noindex><a rel=\"nofollow\" href=\"https:\/\/www.owasp.org\/index.php\/OWASP_Dependency_Check\">Dependency-Check<\/a><\/noindex> de OWASP. Se puede habilitar en las primeras etapas, ver c\u00f3mo funciona y qu\u00e9 soporta. Principalmente son todos productos en la nube o on-premise, pero por su propia base, siempre se env\u00edan a internet. No env\u00edan tus bibliotecas, sino hashes o valores que calculan, y huellas digitales a su servidor, para obtener notificaciones sobre la existencia de vulnerabilidades.<\/p>\n<h3>Integraci\u00f3n en el proceso<\/h3>\n<p>\n<b>Control de bibliotecas en el per\u00edmetro<\/b>, que se descargan de fuentes externas. Tenemos repositorios externos e internos. Por ejemplo, dentro de Event Central hay un Nexus, y queremos que no haya vulnerabilidades con estado 'cr\u00edtico' o 'alto' en nuestro repositorio interno. Se puede configurar el proxy usando la herramienta Nexus Firewall Lifecycle para que tales vulnerabilidades se filtren y no lleguen al repositorio interno.<\/p>\n<p><b>Integraci\u00f3n en CI<\/b>. A la par con pruebas autom\u00e1ticas, pruebas unitarias y divisi\u00f3n por etapas de desarrollo: dev, test, prod. En cada etapa se pueden descargar cualquier bibliotecas, usar lo que sea, pero si hay algo serio con estado 'cr\u00edtico', quiz\u00e1s vale la pena que los desarrolladores lo noten en la etapa de lanzamiento a producci\u00f3n.<\/p>\n<p><b>Integraci\u00f3n con artefactos<\/b>: Nexus y JFrog.<\/p>\n<p><b>Integraci\u00f3n en el entorno de desarrollo. <\/b>Las herramientas que elijas deben tener integraci\u00f3n con los entornos de desarrollo. El desarrollador debe tener acceso desde su lugar de trabajo a los resultados del escaneo, o la posibilidad de escanear y verificar el c\u00f3digo en busca de vulnerabilidades antes de hacer un commit en CVS.<\/p>\n<p><b>Integraci\u00f3n en CD. <\/b>Es una caracter\u00edstica fant\u00e1stica que realmente me gusta y de la que ya he hablado: el monitoreo de nuevas vulnerabilidades en el entorno de producci\u00f3n. Funciona m\u00e1s o menos as\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/605c638df343db5c47ab36b4dc00f41c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTenemos <b>Repositorios de Componentes P\u00fablicos<\/b>\u00a0\u2014 algunas herramientas externas y nuestro repositorio interno. Queremos que solo contenga componentes confiables. Al proxyizar la solicitud, verificamos que la biblioteca descargada no tenga vulnerabilidades. Si se encuentra dentro de ciertas pol\u00edticas que establecemos y que deben ser aprobadas con desarrollo, entonces no la descargamos y se devuelve un mensaje para usar otra versi\u00f3n. Por lo tanto, si hay algo cr\u00edtico y malo en la biblioteca, el desarrollador no obtendr\u00e1 la biblioteca en la etapa de instalaci\u00f3n; deber\u00e1 usar una versi\u00f3n m\u00e1s alta o m\u00e1s baja.<\/p>\n<ul>\n<li>Durante el build verifica que nadie haya introducido nada malo, que todos los componentes sean seguros y que nadie haya tra\u00eddo nada peligroso en una memoria USB.\n<\/li>\n<li>En nuestro repositorio solo tenemos componentes confiables. \n<\/li>\n<li>Durante el despliegue, verificamos una vez m\u00e1s el paquete en s\u00ed: war, jar, DL o imagen de Docker para asegurarnos de que cumple con la pol\u00edtica. \n<\/li>\n<li>Al salir a producci\u00f3n, monitoreamos lo que sucede en el entorno productivo: si aparecen o no vulnerabilidades cr\u00edticas.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>An\u00e1lisis din\u00e1mico \u2014 DAST<\/h2>\n<p>\nLas herramientas de an\u00e1lisis din\u00e1mico son radicalmente diferentes de todo lo mencionado anteriormente. Es una imitaci\u00f3n del comportamiento del usuario con la aplicaci\u00f3n. Si es una aplicaci\u00f3n web, enviamos solicitudes imitando el comportamiento del cliente, hacemos clic en los botones en la interfaz, enviamos datos falsos desde el formulario: comillas, par\u00e9ntesis, s\u00edmbolos en diferentes codificaciones, para observar c\u00f3mo la aplicaci\u00f3n funciona y gestiona datos externos.<\/p>\n<p>Este mismo sistema permite verificar vulnerabilidades comunes en Open Source. Como DAST no sabe qu\u00e9 Open Source estamos utilizando, simplemente lanza patrones 'maliciosos' y analiza las respuestas del servidor:<\/p>\n<p><i>\u2014 Ah, aqu\u00ed hay un problema de deserializaci\u00f3n, y aqu\u00ed no.<\/i><\/p>\n<p>Esto conlleva grandes riesgos, porque si realizas esta prueba de seguridad en el mismo entorno que utilizan los testers, pueden ocurrir cosas desagradables.<\/p>\n<ul>\n<li>Alta carga en el servidor de la aplicaci\u00f3n.\n<\/li>\n<li>No hay integraciones.\n<\/li>\n<li>Posibilidad de cambiar la configuraci\u00f3n de la aplicaci\u00f3n analizada.\n<\/li>\n<li>No hay soporte para las tecnolog\u00edas necesarias.\n<\/li>\n<li>Complejidad de la configuraci\u00f3n.\n<\/li>\n<\/ul>\n<p>\nTuvimos una situaci\u00f3n en la que finalmente lanzamos AppScan: tardamos en obtener acceso a la aplicaci\u00f3n, conseguimos 3 cuentas y nos alegramos: \u00a1por fin lo vamos a comprobar todo! Iniciamos el escaneo y lo primero que hizo AppScan fue acceder al panel de administraci\u00f3n, pulsar todos los botones, cambiar la mitad de los datos y luego incluso acabar con el servidor por su cuenta. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mailform.io\/\">mailform<\/a><\/noindex>-peticiones. El desarrollo junto con las pruebas dijeron:<\/p>\n<p><i>\u2014 \u00a1Chicos, \u00bfest\u00e1n locos?! \u00a1Les dimos acceso, y ustedes arruinaron el entorno!<\/i><\/p>\n<p>Tomen en cuenta los riesgos potenciales. Idealmente, preparen un entorno de prueba separado para seguridad de la informaci\u00f3n que est\u00e9 aislado de todo lo dem\u00e1s al menos de alguna manera, y es recomendable verificar el panel administrativo manualmente. Esta es una prueba de penetraci\u00f3n: esos restos de esfuerzo que ahora no estamos considerando. <\/p>\n<p>Hay que tener en cuenta que se puede usar esto como un an\u00e1logo a las pruebas de carga. En la primera fase, se puede activar un esc\u00e1ner din\u00e1mico en 10-15 flujos y ver qu\u00e9 sucede, pero generalmente, como muestra la pr\u00e1ctica, no suele resultar en nada bueno.<\/p>\n<p>Algunos recursos que utilizamos normalmente.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/45a25dbe2a2d053e6ed16d31b6ac53ef.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVale la pena destacar <noindex><a rel=\"nofollow\" href=\"https:\/\/portswigger.net\/burp\">Burp Suite<\/a><\/noindex>\u00a0es el \"cuchillo suizo\" de cualquier especialista en seguridad. Todos lo usan y es muy c\u00f3modo. Ahora ha salido una nueva versi\u00f3n demo de la edici\u00f3n empresarial. Antes era simplemente una herramienta independiente con complementos, pero ahora finalmente los desarrolladores est\u00e1n creando un gran servidor desde el cual se podr\u00e1n gestionar m\u00faltiples agentes. Es genial, lo recomiendo.<\/p>\n<h3>Integraci\u00f3n en el proceso<\/h3>\n<p>\nLa integraci\u00f3n se realiza de manera bastante fluida y sencilla: <b>iniciar el escaneo tras la instalaci\u00f3n exitosa <\/b>de la aplicaci\u00f3n en el entorno y\u00a0<b>escaneo tras la realizaci\u00f3n exitosa de las pruebas de integraci\u00f3n<\/b>.<\/p>\n<p>Si las integraciones no funcionan o hay colocaciones y funciones simuladas, esto es in\u00fatil y sin valor: sea cual sea el patr\u00f3n que enviemos, el servidor seguir\u00e1 respondiendo de la misma manera.<\/p>\n<ul>\n<li>Lo ideal ser\u00eda tener un entorno separado para las pruebas.\n<\/li>\n<li>Antes de comenzar las pruebas, anoten la secuencia de inicio de sesi\u00f3n.\n<\/li>\n<li>Las pruebas del sistema de administraci\u00f3n deben ser manuales \u00fanicamente.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>El proceso<\/h2>\n<p>\nUn poco de forma general sobre el proceso en general y sobre el funcionamiento de cada herramienta, en particular. Todas las aplicaciones son diferentes: en una funciona mejor el an\u00e1lisis din\u00e1mico, en otra el est\u00e1tico, en una tercera el an\u00e1lisis de c\u00f3digo abierto, pruebas de penetraci\u00f3n o incluso algo completamente diferente, como eventos con.\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Waf\">Waf<\/a><\/noindex>.<\/p>\n<blockquote><p>Cada proceso necesita control.<\/p><\/blockquote>\n<p>\nPara entender c\u00f3mo funciona el proceso y d\u00f3nde se puede mejorar, es necesario recopilar m\u00e9tricas de todo lo que se pueda, incluyendo m\u00e9tricas de producci\u00f3n, m\u00e9tricas de herramientas y de rastreadores de defectos.<\/p>\n<p>Cualquier dato es \u00fatil. Es necesario observar en diferentes dimensiones d\u00f3nde se aplica mejor cada herramienta y d\u00f3nde el proceso falla en particular. Tal vez valga la pena analizar el tiempo de respuesta del desarrollo para entender d\u00f3nde mejorar el proceso basado en el tiempo. Cuantos m\u00e1s datos haya, m\u00e1s dimensiones se pueden construir, desde niveles altos hasta detalles de cada proceso.<\/p>\n<p><img decoding=\"async\" alt=\"Miedo y odio en DevSecOps\" src=\"\/wp-content\/uploads\/2019\/04\/93e079b19c4c8189ce6ca4eaec186eed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDado que cada analizadores est\u00e1ticos y din\u00e1micos tiene su propia API, sus propios m\u00e9todos de ejecuci\u00f3n, principios, algunos tienen programadores, otros no, estamos desarrollando una herramienta <b>Orquestador de AppSec<\/b>, que permite crear un \u00fanico punto de entrada en todo el proceso de fabricaci\u00f3n y gestionarlo desde un solo lugar.<\/p>\n<p>Los gerentes, desarrolladores e ingenieros de seguridad tienen un punto de entrada desde el cual se puede ver qu\u00e9 est\u00e1 en ejecuci\u00f3n, configurar y comenzar el escaneo, obtener resultados del escaneo y presentar requerimientos. Intentamos alejarnos de los documentos, traduciendo todo a un lenguaje accesible que utiliza el desarrollo: p\u00e1ginas en Confluence con estados y m\u00e9tricas, defectos en Jira o en diferentes rastreadores de defectos, o integrarlo en un proceso sincr\u00f3nico\/as\u00edncrono en CI\/CD.<\/p>\n<h2>Puntos Clave<\/h2>\n<p>\n<b>Las herramientas no son lo principal.<\/b> Primero pensar en el proceso y luego implementar herramientas. Las herramientas son buenas, pero costosas, por lo que se puede comenzar con el proceso y establecer interacci\u00f3n y entendimiento entre el desarrollo y la seguridad. Desde el punto de vista de la seguridad, no es necesario \"detener\" todo, desde el punto de vista del desarrollo, si hay algo altamente cr\u00edtico, debe ser abordado y no ignorado.<\/p>\n<p><b>Calidad del producto<\/b>\u00a0<b>\u2014 un objetivo com\u00fan<\/b> tanto para la seguridad como para el desarrollo. Hacemos lo mismo, nos esforzamos para que todo funcione correctamente y no haya riesgos reputacionales ni p\u00e9rdidas financieras. Por eso promovemos un enfoque de DevSecOps, SecDevOps, para establecer comunicaci\u00f3n y hacer el producto de mayor calidad.<\/p>\n<p><b>Comience con lo que ya existe<\/b>: requisitos, arquitectura, verificaciones parciales, entrenamientos, gu\u00edas. No es necesario aplicar todas las pr\u00e1cticas de inmediato en todos los proyectos \u2014 <b>avancen de manera iterativa<\/b>. No hay un est\u00e1ndar \u00fanico \u2014 <b>experimente<\/b> y pruebe diferentes enfoques y soluciones.<\/p>\n<p><b>Entre los defectos en seguridad de la informaci\u00f3n y los defectos funcionales hay un signo de igualdad<\/b>.<\/p>\n<p><b>Automatice todo<\/b>, lo que se mueve. Todo lo que no se mueve, mu\u00e9valo y automat\u00edcelo. Si algo se hace manualmente, no es una buena parte del proceso. Quiz\u00e1s valga la pena revisarlo y tambi\u00e9n automatizarlo.<\/p>\n<p>Si el tama\u00f1o del equipo de seguridad de la informaci\u00f3n es peque\u00f1o \u2014 <b>utilice Champions de Seguridad<\/b>.<\/p>\n<p>Es posible que lo que he mencionado no sea adecuado para usted y que invente algo propio \u2014 y eso est\u00e1 bien. Pero\u00a0<b>elija herramientas seg\u00fan los requisitos de su propio proceso<\/b>. No preste atenci\u00f3n a lo que dice la comunidad, que esta herramienta es mala y aquella es buena. Puede que en su producto sea todo lo contrario.<\/p>\n<p><b>Requisitos para las herramientas.<\/b><\/p>\n<ul>\n<li>Bajo nivel de falsos positivos.\n<\/li>\n<li>Tiempo de an\u00e1lisis adecuado.\n<\/li>\n<li>Facilidad de uso.\n<\/li>\n<li>Disponibilidad de integraciones.\n<\/li>\n<li>Comprensi\u00f3n de la hoja de ruta del desarrollo del producto.\n<\/li>\n<li>Capacidad de personalizaci\u00f3n de las herramientas.\n<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p>La presentaci\u00f3n de Yuri fue seleccionada como una de las mejores en DevOpsConf 2018. Para conocer m\u00e1s ideas interesantes y casos pr\u00e1cticos, venga el 27 y 28 de mayo a Skolkovo en\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow-rit\/2019\">DevOpsConf<\/a><\/noindex> el marco de <noindex><a rel=\"nofollow\" href=\"https:\/\/ritfest.ru\/2019\">el festival RIT++<\/a><\/noindex>. Y a\u00fan mejor, si est\u00e1 dispuesto a compartir su experiencia, entonces <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/lectures\/propose\/?conference=dc2019-rit\">env\u00ede su solicitud<\/a><\/noindex> para la presentaci\u00f3n hasta el 21 de abril.<\/p><\/blockquote>\n<p>Fuente: <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\/es\/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=\"es_ES\" \/>\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\/es\/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\udd47Miedo y odio en DevSecOps | ProHoster","description":"Tuvimos 2 analizadores de c\u00f3digo, 4 herramientas para pruebas din\u00e1micas, nuestros propios desarrollos y 250 scripts.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/strah-i-nenavist-devsecops","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/31852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=31852"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/31852\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/23720"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=31852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=31852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=31852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}