Corrección proactiva de vulnerabilidades para mantener la seguridad de Java y la higiene de los proyectos con Snyk
Lee Turner
16 de noviembre de 2021
0 minutos de lecturaComo desarrollador, paso mucho tiempo en mi cuenta de GitHub. Creo aplicaciones, pequeñas utilidades y pruebas de concepto cuando estoy aprendiendo algo nuevo. Me gusta pensar que, como paso mucho tiempo en GitHub, la salud general de mi cuenta es bastante buena. Presto atención a aspectos importantes, como tener activada la autenticación de dos factores basada en Yubikey en mi cuenta, asegurarme de no confirmar secretos ni archivos confidenciales y revisar periódicamente mi cuenta para seguir las buenas prácticas de seguridad de GitHub para proyectos de código abierto.
¡Punto de control! ¿Activaste la autenticación de dos factores en tu repositorio de código fuente? Otra forma de mejorar tus habilidades como referente de seguridad es seguir las revisiones de código seguro.
Sin embargo, al igual que la salud y la higiene de cualquier sistema, estas no dependen únicamente de las acciones que realizamos de forma activa, sino también de aspectos que quizá no percibimos con tanta facilidad. Esto es especialmente importante en los repositorios en los que ya no trabajamos. Aunque el código permanezca estático y quizá no sea nuestro foco principal, el mundo que nos rodea sigue avanzando, y personas a las que nunca hemos conocido encontrarán esos repositorios y posiblemente usarán nuestro código para aprender o como base para el código que escriben hoy.
Por eso, como desarrolladores, tenemos la responsabilidad de asegurarnos de que el código que escribimos sea lo mejor posible, no solo cuando lo escribimos, sino durante todo el tiempo que esté disponible en nuestros repositorios.
Como mencioné antes, el mundo sigue avanzando mientras nuestro código permanece. Se lanzan nuevas versiones de las dependencias que usamos y se descubren problemas de seguridad en versiones antiguas de los frameworks y las bibliotecas de las que dependemos. Aunque actualizar siempre a las versiones más recientes puede traer sus propios inconvenientes, necesitamos encontrar una forma de que estos cambios estén siempre visibles para poder darles a nuestros repositorios el cuidado que necesitan para mantenerse actualizados y seguros.
Consejo: Si te gustan GitHub Actions y la seguridad integrada para los cambios de código de tu repositorio, quizá te interese leer sobre GitHub Security Code Scanning.
La gestión de vulnerabilidades es un campo propio, con procesos, estándares y herramientas que ayudan a mejorar la postura de seguridad de las organizaciones. Si te interesa conocer más detalles sobre cómo lograrlo en los proyectos Java heredados que mantienes, así como mejorar tu panorama de seguridad, te recomendamos leer sobre el proceso de corrección de vulnerabilidades.
Cómo encontrar y corregir vulnerabilidades en proyectos Java heredados
Aquí es donde entra Snyk. Snyk hace visible y accionable lo que de otro modo sería invisible. Al permitir que Snyk monitoree tus repositorios, ya sea en GitHub, GitLab, Bitbucket o Azure, obtienes la información que necesitas para tomar medidas y mantener tu código seguro. Esto se logra de varias maneras:
Genera informes sobre las vulnerabilidades encontradas en los frameworks y las bibliotecas de los que dependemos
Nos notifica cuando hay nuevas versiones de las dependencias que usamos
Conectar Snyk a tu cuenta puede abrirte los ojos. Empecé con el plan gratuito de Snyk y lo ejecuté en algunos de mis repositorios. De inmediato, me mostró varios problemas de gravedad alta y media en algunas de mis aplicaciones Spring Boot más antiguas. La única razón de estos problemas era que las aplicaciones estaban compiladas con una versión antigua de Spring Boot y no había tenido motivos para actualizarlas.

Por suerte, la solución consistía simplemente en actualizar la versión de Spring Boot que usaba, volver a probar la aplicación y enviar el cambio.
Por supuesto, sería ideal poder mantener actualizadas las dependencias de nuestras aplicaciones de forma habitual. Aquí es donde Snyk nos ayuda con el segundo punto mencionado antes. Snyk no solo nos informa cuando encuentra una nueva versión de una dependencia, sino que también puede crear un pull request en nuestros repositorios para que lo revisemos y probemos:

Solo podemos mejorar la salud y la seguridad de nuestras cuentas de GitHub si tenemos visibilidad de todos los factores que influyen en ellas. Cuando lo invisible se vuelve visible, podemos tomar medidas correctivas y mantenerlas durante todo el ciclo de vida de nuestro código. Snyk lo hace posible al integrarse con las herramientas que usamos a diario y brindarnos los conocimientos necesarios para decidir qué medidas tomar, mientras automatiza todo lo que se puede automatizar.
Más recursos sobre seguridad de Java
Espero que esta publicación te haya sido útil para mantener tus proyectos antiguos y protegerlos. Si desarrollas en Java y quieres mejorar tus habilidades de seguridad, aquí tienes algunos recursos que te resultarán útiles:
10 prácticas recomendadas para crear un contenedor Java con Docker
Brian Vermeer y Jim Manico, de OWASP, escribieron esta excelente guía de 10 prácticas recomendadas de seguridad para Java
Por último, ¿sigues prácticas de codificación para una deserialización segura? Si no tienes la certeza, te recomendamos leer el artículo de Vermeer: Serialización y deserialización en Java: explicación de la vulnerabilidad de deserialización de Java.
Empieza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag viendo nuestro taller virtual introductorio a pedido.



