La reutilización de código mediante librerías y dependencias es muy cómoda y permite a los desarrolladores tardar menos en programar sus plataformas centrando sus esfuerzos en otras características y dejando el desarrollo de ciertas funciones a los responsables de dichas librerías. Sin embargo, esto también puede suponer un problema cuando se encuentra una vulnerabilidad en una librería en concreto, poniendo automáticamente en peligro a todos los proyectos que se basan en esta, como acaba de ocurrir con Zip Slip.
Expertos de seguridad daban a conocer hace algunas horas una nueva vulnerabilidad que afecta a una gran cantidad de proyectos de software, vulnerabilidad que ha recibido el nombre Zip Slip. Este fallo de seguridad se encuentra en una gran cantidad de librerías utilizadas en muchos proyectos, algunos de gran envergadura, proyectos escritos en lenguajes de programación como JavaScript, Ruby, Java, .NET y Go y desarrollados por grandes compañías como Google, Oracle, IBM, Apache, Amazon, Linkedin, Twitter, Alibaba, Eclipse, OWASP, ElasticSearch y JetBrains, entre otros.
Este fallo de seguridad permite sobrescribir cualquier archivo a través de un directorio transversal al extraer archivos desde una gran cantidad de formatos de empaquetado, como tar, jar, war, cpio, apk, rar y 7z. De esta manera, los piratas informáticos pueden comprometer un sistema con relativa facilidad y llegar a ejecutar código malicioso en él.
Este fallo de seguridad lleva existiendo desde hace varios años, aunque no hay indicios de que haya sido explotado hasta ahora, que se ha dado a conocer. La forma de explotar este fallo de seguridad no es nada complicada, y simplemente se debe utilizar un exploit muy básico que, cuando se intente extraer el contenido de un fichero comprimido, se encargue de suplantar uno de los ficheros extraídos por otro fichero modificado con el código malicioso para ejecutarlo en la memoria.
En la página del proyecto original de Zip Slip, en GitHub, podemos ver cómo algunas compañías ya han solucionado esta vulnerabilidad a lo largo del mes pasado, mientras que otras están en ello o simplemente, debido a otras medidas de seguridad incluidas en los proyectos, no son vulnerables.
Cómo puedo protegerme de Zip Slip
La verdad es que los usuarios poco podemos hacer, ya que se esto es más bien responsabilidad de los propios desarrolladores, tanto de los creadores de las librerías vulnerables como de los responsables que utilizan estas librerías. Lo único que debemos hacer nosotros es estar pendientes a las nuevas actualizaciones de las aplicaciones, servidores y proyectos que son vulnerables por utilizar este tipo de librerías y actualizarlos a sus últimas versiones de manera que se corrija Zip Slip.
Si somos desarrolladores y utilizamos en algún proyecto alguna de estas librerías vulnerables, entonces lo que debemos hacer es intentar actualizarlas para proteger los proyectos o añadir medidas de seguridad adicionales, como el Zip Slip Security Testing, para evitar que se extraiga código de manera transversal sin verificación.