Vulnerabilidades en paquetes ZIP utilizados en Flutter y Swift
Vulnerabilidades en paquetes ZIP utilizados en Flutter y Swift

Vulnerabilidades en paquetes ZIP utilizados en Flutter y Swift

Investigaciones recientes han identificado graves vulnerabilidades presentes en paquetes ZIP empleados en entornos de desarrollo como Dart (Flutter) y Swift. Estas debilidades ponen en riesgo la seguridad de miles de aplicaciones y desarrolladores, lo que ha generado preocupación en la comunidad tecnológica.

Los paquetes ZIP son archivos comprimidos que permiten agrupar múltiples elementos como recursos, bibliotecas y componentes necesarios para el funcionamiento de una aplicación. Aunque ofrecen eficiencia y facilidad de uso, también pueden ser aprovechados por actores malintencionados para explotar posibles brechas en la seguridad.

Vulnerabilidades identificadas

  • ZIP Path Traversal: Conocida como Zip Slip, esta vulnerabilidad surge cuando una aplicación no valida adecuadamente los nombres de los archivos durante la extracción. Esto permite a un atacante sobrescribir datos confidenciales o incluso provocar la ejecución de código si se modifica el archivo objeto compartido.
  • Suplantación de nombre de archivo ZIP: En este caso, existe una discrepancia entre los nombres de archivos almacenados en la entrada del directorio central y el encabezado del archivo local. Si un analizador lee el nombre del archivo del encabezado local pero lo extrae según la ruta del directorio central, puede suplantar un archivo.
  • ZIP symlink path traversal: Los enlaces simbólicos ZIP permiten apuntar a archivos fuera del directorio de extracción. Esta característica puede ser explotada para sobrescribir datos confidenciales o archivos de objetos compartidos, lo que podría resultar en la ejecución de código.
  • Bomba ZIP: Un archivo ZIP de pequeño tamaño que contiene una gran cantidad de datos comprimidos. Al extraerse, puede expandirse hasta alcanzar tamaños muy grandes o consumir recursos del sistema, lo que podría provocar un ataque de denegación de servicio (DoS).

Paquetes ZIP a analizar

Archive

«Archive» es un paquete popular en Flutter para manejar archivos comprimidos. Implementa formatos de archivo comúnmente utilizados en Dart sin depender de paquetes nativos como java.util.zip o ZIPFoundation.

Flutter_archive

Flutter_Archive es otro paquete para archivos ZIP que se basa en el paquete java.util.zip, aprovechando la funcionalidad de MethodChannel de Flutter.

ZIPFoundation

ZIPFoundation es una biblioteca escrita en Swift para crear, leer y modificar archivos ZIP. Se basa en libcompression de Apple para lograr un alto rendimiento y eficiencia energética.

ZIP

ZIP es un framework escrito en Swift para comprimir y descomprimir archivos. Es rápido y sencillo de usar, construido sobre minizip.

ZIPArchive (SSZIPArchive)

ZipArchive es una clase simple para comprimir y descomprimir archivos en plataformas como iOS, macOS y tvOS.