{"id":76,"date":"2020-04-19T23:50:42","date_gmt":"2020-04-19T22:50:42","guid":{"rendered":"https:\/\/www.julianmejio.com\/blog\/?p=76"},"modified":"2020-09-11T16:39:36","modified_gmt":"2020-09-11T15:39:36","slug":"acerca-de-los-repositorios-cloud-la-gestion-del-riesgo-y-la-seguridad-de-la-informacion","status":"publish","type":"post","link":"https:\/\/www.julianmejio.com\/blog\/2020\/04\/19\/acerca-de-los-repositorios-cloud-la-gestion-del-riesgo-y-la-seguridad-de-la-informacion\/","title":{"rendered":"Acerca de los repositorios cloud, la gesti\u00f3n del riesgo y la seguridad de la informaci\u00f3n"},"content":{"rendered":"\n<p>Aun recuerdo la primera vez que borr\u00e9 de manera accidental el trabajo que deb\u00eda entregar ese mismo d\u00eda. Sucedi\u00f3 aproximadamente 15 a\u00f1os atr\u00e1s. Yo trabajaba en <a href=\"https:\/\/es.wikipedia.org\/wiki\/Adobe_Flash\">Flash<\/a>, hac\u00eda contenido interactivo para el sector de la educaci\u00f3n y para ese entonces me hab\u00edan solicitado hacer un men\u00fa que ir\u00eda como parte de un <a href=\"https:\/\/es.wikipedia.org\/wiki\/SCORM\">SCORM<\/a>. El men\u00fa era sencillo: los datos del \u00edndice se cargaban desde un archivo XML local y enlazaban al contenido que ir\u00eda dentro del paquete. Hab\u00eda terminado el prototipo y lo hab\u00eda exportado. Alcanc\u00e9 a mostr\u00e1rselo a mis jefes y cuando todo estuvo bien proced\u00ed a limpiar el espacio de trabajo. Yo me acostumbr\u00e9 a borrar de manera permanente los archivos. Estaba borrando los archivos intermedios y temporales, adem\u00e1s de los archivos con versiones alternativas del men\u00fa. Luego, en un segundo, me di cuenta que hab\u00eda seleccionado el que era el archivo final y sin embargo presion\u00e9 <em>Ctrl<\/em> + <em>Shift<\/em> + <em>Supr<\/em>, luego <em>Enter<\/em>, y ah\u00ed acab\u00f3 todo. Media jornada de trabajo hab\u00eda desaparecido y deb\u00eda recuperarla ahora en tiempo r\u00e9cord. Nada funcion\u00f3, solo volverlo a hacer desde cero. Para mi fortuna era un trabajo que ya hab\u00eda aprendido a hacer, y pude entregarlo luego sin tanta demora.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>En ese entonces no sab\u00eda ni en teor\u00eda qu\u00e9 era un control de versiones. Lo vine a saber un par de a\u00f1os m\u00e1s tarde cuando me top\u00e9 por accidente con <a href=\"https:\/\/es.wikipedia.org\/wiki\/Subversion_(software)\">Subversion<\/a>. En ese entonces eran muy pocas las plataformas que ofrec\u00edan un servicio de control de versiones y <a href=\"https:\/\/es.wikipedia.org\/wiki\/GitHub\">Github<\/a> ni siquiera hab\u00eda nacido. As\u00ed que opt\u00e9 por instalar en un equipo en desuso una del paquete de CollabNet llamado Subversion Edge. Jugu\u00e9 un poco con la configuraci\u00f3n, las caracter\u00edsticas e inmediatamente lo apliqu\u00e9 a mi trabajo. En poco tiempo hab\u00eda pasado de <a href=\"http:\/\/www.dosisdiarias.com\/2006\/12\/blog-post_14.html\">llenarme de archivos ZIP con versiones de trabajos redundantes<\/a> y sin una trazabilidad clara a tener un espacio de trabajo ordenado y a prueba de eliminaciones accidentales.<\/p>\n\n\n\n<p>10 a\u00f1os despu\u00e9s y despu\u00e9s de reflexionar mucho en el asunto, decid\u00ed migrar los proyectos en los que segu\u00eda trabajando a git. Ahora s\u00ed exist\u00edan servicios de versionamiento en la nube por montones y con diferentes motores; y con esta gran oferta de servicios tambi\u00e9n hab\u00eda muchas dudas sobre la seguridad de la informaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lo que debes tener en cuenta si usas un servicio <em>cloud<\/em> de manera profesional<\/h2>\n\n\n\n<p>Un servicio en la nube del estilo <em>reg\u00edstrate en 5 minutos y empieza a usarlo<\/em> esconde una variedad de dudas respecto a c\u00f3mo son tratados los datos que subes a esta misma. \u00bfCumplen con un est\u00e1ndar de seguridad? \u00bfexiste la privacidad? \u00bfqu\u00e9 tal es la integridad? \u00bfhay vulnerabilidades en los servicios? \u00bfson confiables los trabajadores dentro de la plataforma que ni siquiera conoces? \u00bfc\u00f3mo aplican las leyes sobre tus datos? \u00bfen d\u00f3nde est\u00e1n almacenados fisicamente?<\/p>\n\n\n\n<p>Podemos inferir que un servicio <em>cloud<\/em> es m\u00e1s propenso a ser atacado que uno autogestionado. La principal causa es la popularidad del servicio. Hace unos d\u00edas <a href=\"https:\/\/nakedsecurity.sophos.com\/2020\/04\/17\/github-users-targetted-by-sawfish-phishing-campaign\/\">los usuarios de Github notificaron de un ataque tipo <em>phising<\/em><\/a> que incluso burlaba la autenticaci\u00f3n de dos factores a nivel de software. Una cuenta comprometida puede configurarse de tal modo que aunque se cambie la contrase\u00f1a, el atacante aun siga teniendo control de la misma, por ejemplo, con <a href=\"https:\/\/developer.github.com\/v3\/auth\/#basic-authentication\">tokens de acceso<\/a>. Por supuesto hay diferentes mecanismos de monitoreo como el env\u00edo de correos electr\u00f3nicos cuando una caracter\u00edstica de seguridad es actualizada, sin embargo esto no mitiga el da\u00f1o causado.<\/p>\n\n\n\n<p>Cuando trabajas en un c\u00f3digo cerrado quieres que el mismo sea confidencial, que no haya filtraci\u00f3n de informaci\u00f3n ni de secretos empresariales. Como desarrollador tambi\u00e9n debes garantizar esto al cliente. La cuesti\u00f3n es que no todos los clientes se preocupan por este punto ya que no alcanzan a comprender ni imaginar el impacto negativo que una fuga de este tipo puede ocasionar al negocio. \u00bfQu\u00e9 ocurrir\u00eda si se libera el c\u00f3digo fuente de Airbnb, o de los productos de Adobe? Estas empresas con un esfuerzo grande pueden mitigar las consecuencias, pero como siempre, el da\u00f1o ya est\u00e1 hecho. Ahora bien, \u00bfqu\u00e9 pasar\u00eda si el c\u00f3digo de tu cliente es expuesto publicamente en internet? \u00bfTienes la manera de mitigar el da\u00f1o causado?<\/p>\n\n\n\n<p>El c\u00f3digo fuente es un activo muy preciado no solo en empresas TIC. Hoy en d\u00eda el software es el pegamento empresarial. Est\u00e1 presente en todos los niveles y en todas las cadenas de todos los procesos de negocio. Una empresa con visi\u00f3n no puede concebirse sin una plataforma tecnol\u00f3gica que ordene y procese los datos. Este software en su mayor\u00eda puede ser hecho a la medida, y muchas veces contiene los secretos empresariales que pueden llevar al \u00e9xito un negocio. Estamos hablando de dinero en juego, algo apetecible por muchas personas malintencionadas.<\/p>\n\n\n\n<p>En seguridad inform\u00e1tica se dice que es eslab\u00f3n m\u00e1s d\u00e9bil de la cadena en el ser humano. Incluso una persona con ojo entrenado contra mensajes fraudulentos puede caer facilmente y entregar sus credenciales de manera inocente. Un servicio vulnerable puede exponer datos personales, pero este no es el caso y seguro hablar\u00e9 de las vulnerabilidades m\u00e1s f\u00e1ciles de explotar en software hecho a la medida. Esta vez nos quedaremos con que hoy en d\u00eda no basta un usuario, una contrase\u00f1a y una autenticaci\u00f3n de dos pasos.<\/p>\n\n\n\n<p>En seguridad inform\u00e1tica se habla del <a href=\"https:\/\/tools.ietf.org\/html\/rfc2904\">protocolo AAA<\/a>, refiri\u00e9ndose a las garant\u00edas en la autenticaci\u00f3n (una persona dice quien dice ser), autorizaci\u00f3n (una persona cuenta con los permisos para acceder a determinado recurso), y <em>accounting<\/em> (contabilidad, el consumo de recursos de una persona). Este tipo de protocolo es b\u00e1sico e inflexible en un servicio cloud, por lo que no puedes protegerlo adecuadamente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfConsumir o no consumir servicios <em>cloud<\/em>?<\/h2>\n\n\n\n<p>Tal vez la seguridad de un servicio de repositorio cloud baste para tu trabajo. No hay que ser paranoico. Una cuenta Github bien configurada, un perfil de equipos \u2013que ahora son gratuitos\u2013 y un control de acceso privado y b\u00e1sico es suficiente para satisfacer las necesidades del negocio. No est\u00e1 de m\u00e1s tomar algunas precauciones en caso que se pueda y se quiera hacer.<\/p>\n\n\n\n<p>Aplicar algunas t\u00e9cnicas de protecci\u00f3n requiere de instalar un servicio autogestionado como Gitlab, Gogs, Gerrit, entre otros. Dependiendo de la t\u00e9cnica a usar y las necesidades del equipo se escoge la arquitectura a aplicar.<\/p>\n\n\n\n<p>Por ejemplo: una empresa puede limitar el acceso a sus repositorios con credenciales b\u00e1sicas usuario-contrase\u00f1a, y adicional puede forzar el acceso por medio de VPN. Puede a\u00f1adir a la capa una implementaci\u00f3n AAA como RADIUS, y restringir acceso a ciertos tipos de recursos dependiendo de la ubicaci\u00f3n f\u00edsica de la persona.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Innecesario\u2026 hasta que ocurre<\/h2>\n\n\n\n<p>A manera de conclusi\u00f3n quiero compartir unas an\u00e9cdotas que les ocurrieron a dos conocidos. El objetivo es despertar en el lector la <strong>necesidad de preocuparse<\/strong> en la seguridad de la informaci\u00f3n. Ambas ocurrieron entre los a\u00f1os 2018 y 2019. Uno <em>pec\u00f3<\/em> por buena fe y otro por la falsa seguridad.<\/p>\n\n\n\n<p>Un amigo me llama y me comenta que algo extra\u00f1o le pasaba a los computadores de la oficina. Aparec\u00edan mensajes en ingl\u00e9s que le dec\u00edan que estaba infectado y que deb\u00eda pagar para desinfectarse, pero no pod\u00eda pagar porque no sab\u00eda c\u00f3mo hacerlo y no aparec\u00eda ning\u00fan tel\u00e9fono a qu\u00e9 llamar. Yo ya estaba casi seguro por d\u00f3nde iba el asunto. Le pregunt\u00e9 de inmediato si ten\u00eda copias de seguridad de los archivos. \u00c9l me respondi\u00f3 que s\u00ed, que ten\u00eda unos CD de los que le enviaba a sus clientes con los trabajos finales y una copia de una base de datos del programa de contabilidad que usaba. Lo que m\u00e1s le preocupaba era perder los datos de la contabilidad \u2013y con raz\u00f3n\u2013. Luego me dijo lo que confirmar\u00eda mis sospechas: sus archivos de Office no abr\u00edan, el nombre era raro ahora y no ten\u00edan m\u00e1s los \u00edconos de Word ni de Excel. Yo le respond\u00ed que hab\u00eda sido v\u00edctima de un ransomware, y que dependiendo de qu\u00e9 lo hubiera infectado habr\u00eda m\u00e1s o menos probabilidad de recuperar los datos. Tambi\u00e9n le expliqu\u00e9 por qu\u00e9 pagar era una mala idea y que lo mejor que pod\u00eda hacer era intentar restaurar todo lo posible con las copias de seguridad que ten\u00eda.<\/p>\n\n\n\n<p>Al final hablamos un poco sobre qu\u00e9 acciones pod\u00eda tomar en la empresa para que esto no volviera a suceder. Adem\u00e1s de instalar un buen antivirus y hacer copias de seguridad periodicamente era necesario educar a los trabajadores. Seg\u00fan parece hab\u00edan sido v\u00edctimas de un correo con un archivo adjunto malintencionado que a manera de gusano hab\u00eda infectado una gran parte de los computadores dela oficina, incluido el computador que usaban como servidor. Una red de computadores en LAN con caracter\u00edsticas de red insuficientes hab\u00eda permitido la propagaci\u00f3n del gusano. La causa principal fue un cliente que prefiri\u00f3 la comodidad de hacer doble clic y que abriera la carpeta sin m\u00e1s, a minimamente aprenderse una contrase\u00f1a para acceder al otro computador. Pero esto no lo entendi\u00f3 hasta que le pas\u00f3.<\/p>\n\n\n\n<p>La otra an\u00e9cdota empieza con un software no optimizado que se congelaba cuando se ejecutaban consultas grandes. Me llamaron para auditar el software y proponer un plan de optimizaci\u00f3n. En esa primera llamada le coment\u00e9 acerca de los problemas comunes que pod\u00edan desencadenar en un software mal optimizado, y Entre ellos el de no tener un estilo ni est\u00e1ndar claro en el equipo de trabajo. Se volv\u00eda muy complejo hacer mantenimiento a un c\u00f3digo heterog\u00e9neo, sin una identidad clara y sin documentaci\u00f3n. Cuando empec\u00e9 a revisar el c\u00f3digo me top\u00e9 con que en el repositorio ten\u00edan ramas incompletas y que no segu\u00edan ning\u00fan est\u00e1ndar. Yo extra\u00f1ado le pregunt\u00e9 al cliente para que eran esas ramas. \u00c9l me respondi\u00f3 con un tono un tanto molesto, que las ramas las hab\u00edan tenido que hacer porque hac\u00eda unos meses hab\u00edan contratado a un programador el cual tuvo acceso a todo el c\u00f3digo, le hab\u00eda sacado copia y hab\u00eda empezado a vender el software por aparte. No es \u00e9tico, sin embargo no puedes percibir la \u00e9tica de alguien a trav\u00e9s de entrevistas ni perfiles sicol\u00f3gicos.<\/p>\n\n\n\n<p>Aunque este problema no se podr\u00eda haber evitado de una manera f\u00e1cil, podr\u00eda haberse detectado de manera temprana si se hubiera usado un repositorio autogestionado con una implementaci\u00f3n de protocolo AAA y otras t\u00e9cnicas como CI\/CD y staging.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Adelantarse al evento como filosof\u00eda para la prevenci\u00f3n de riesgos<\/h2>\n\n\n\n<p>Este es el pilar de la norma ISO 27001. Se deben identificar los incidentes que podr\u00edan ocurrir. De esta manera se puede garantizar la seguridad de la informaci\u00f3n.<\/p>\n\n\n\n<p>Este es el pegamento con el que se unen todas las piezas: cuando est\u00e1s estudiando el impacto que tiene implementar o no t\u00e9cnicas y protocolos como AAA, ya sea por razones t\u00e9cnicas o comodidad-compatibilidad, te das cuenta que los servicios cloud presentan incompatibilidades y todo aquello que hagas para pasar la certificaci\u00f3n es probablemente una soluci\u00f3n artificial e inestable que a final de cuentas no cumplir\u00e1 su verdadero objetivo.<\/p>\n\n\n\n<p>Entonces la conclusi\u00f3n es que, si crees que tu c\u00f3digo es sensible y cr\u00edtico para tu empresa o tus clientes, deber\u00e1s protegerlo de manera adicional implementado tu propio servicio autgestionado, y configurando el nivel de acceso dependiendo de los requisitos del equipo de trabajo.<\/p>\n\n\n\n<p>En caso de ser freelance sin colaboradores puede ser un contenedor local.<\/p>\n\n\n\n<p>Y obviamente: es mejor prevenir que lamentar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un servicio en la nube del estilo \u00abreg\u00edstrate en 5 minutos y empieza a usarlo\u00bb esconde una variedad de dudas respecto a c\u00f3mo son tratados los datos que subes a esta misma.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Acerca de los repositorios \u00abcloud\u00bb, la gesti\u00f3n del riesgo y la seguridad de la informaci\u00f3n.","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[8],"tags":[21,11,23,22,24],"class_list":["post-76","post","type-post","status-publish","format-standard","hentry","category-desarrollo-de-software","tag-github","tag-gitlab","tag-iso27001","tag-repositorio","tag-riesgo"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/posts\/76","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/comments?post=76"}],"version-history":[{"count":3,"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/posts\/76\/revisions"}],"predecessor-version":[{"id":147,"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/posts\/76\/revisions\/147"}],"wp:attachment":[{"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/media?parent=76"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/categories?post=76"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/tags?post=76"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}