La importancia de las actualizaciones de software
En @sodepsa desarrollamos software. Es nuestra principal actividad y lo que más nos gusta hacer, pese a que sabemos que sólo sentarse frente a un IDE para crear soluciones, no basta para que un proyecto tenga éxito.
Durante el proceso de creación de software, desde que el desarrollador considera que "está listo", hasta que el cliente lo acepta, el usuario se acostumbra y le sirve al negocio; existen varios otros desafíos en el camino.
Mantener el sistema, es uno de los más grandes desafíos.
Como desarrolladores, sabemos que un sistema necesita mantenimiento, que lo clasificamos por lo general en:
-
Mantenimiento correctivo: Alguna funcionalidad no cumple con lo especificado, o bajo ciertas circunstancias no se comporta de una manera que le sirva al negocio. Los famosos BUGs.
-
Mantenimiento perfectivo: El sistema funciona como se esperaba; pero por el camino se descubrieron nuevas funcionalidades que pueden aportar mucho para que el usuario se sienta más a gusto; o el negocio rinda más.
Utilizamos la palabra negocio, desde una de sus definiciones de la RAE:
Aquello que es objeto o materia de una ocupación lucrativa o de interés.
Existen negocios lucrativos, y negocios que generan otro tipo de beneficios que no son precisamente económicos. Nuestro objetivo como aliado tecnológico de nuestros clientes, es ayudarles a ser más eficientes en sus respectivos negocios.
Dentro del mantenimiento correctivo existen por lo general dos tipos de actualizaciones para los sistemas:
- Actualizaciones de seguridad
- Actualizaciones generales (bugfixes, pequeñas mejoras, etc.)
En Sodep tenemos una frecuencia de actualizaciones para servidores expuestos a Internet (o de frontera), y otra para servidores que no tienen acceso externo.
También recomendamos actualizaciones periódicas para las estaciones de trabajo, para prevenir entre otra cosas bugs como #IAmRoot, sin dudas uno de los más vergonzosos de todos los tiempos, que afectó al Mac OS Sierra.
Desde el 2016 conocimos nuevos mecanismos para estar alerta; producto de ello recomendamos a nuestros clientes que realicen también un checkeo de Vulnerabilidades Heredadas.
Por lo general, los desarrollos hoy en día incluyen múltiples librerías de terceros. Si utilizas librerías Open Source; tienes la oportunidad de hacer auditoría del código fuente; disponiendo de los recursos necesarios.
Una solución intermedia, es utilizar una herramienta que permita analizar librerías de terceros. En el caso de Java EE, se utiliza un número elevado de dependencias de librerías de terceros, muchas de ellas proveídas por los fabricantes (drivers de Base de Datos, generador de reportes, etc.), y varias otras provenientes de proyectos Open Source (Ej. Apache, Spring, Eclipse, etc.).
Cada proyecto de desarrollo propio o tercerizado a otros proveedores debería al menos verificar cuál es su índice de riesgo heredado.
¿Qué estoy metiendo a mi sistema y cuál es su grado de confiabilidad?
OWASP una organización neutral dedicada a la seguridad de aplicaciones WEB, desarrolló un conjunto de herramientas que permite explorar el nivel de riesgo heredado de dependencias para aplicaciones JEE, llamado Dependency Check.
Para que se hagan una idea de la importancia de este tipo de herramientas, si Equifax hubiera tenido esta disciplina; no hubiera sido hackeado de esa manera. Estaban utilizando una librería de Apache, con vulnerabilidades conocidas y resueltas por el fabricante.
En uno de nuestros clientes que confió en esta modalidad, y dónde implementamos el Desarrollo Seguro, encontramos la necesidad de optimizar cierta parte del funcionamiento de esta herramienta (Dependency Check). Gracias a que OWASP lo disponibiliza mediante Github y con licencia Apache 2.0; pudimos realizar el estudio del código fuente, encontrar el problema de performance y resolverlo.
Luego de conversaciones con el maintainer principal, y dos pull requests; hemos conseguido que esta semana; sean aceptados nuestros cambios; los cuales formarán parte del plugin Dependency Check, en sus próximas ediciones.
Orgullosos de poder aportar con código abierto; a hacer los desarrollos más seguros.
Te invitamos también a conocer más de nuestros proyectos Open Source, al que dimos en nombre: Joko Framework.
En la Wiki de Joko podrás encontrar instrucciones de cómo integrar el OWASP Dependency Check, a tus procesos de integración continua con Jenkins.
¡Larga vida al Open Source!