En los últimos meses, investigadores de seguridad han descubierto un nuevo vector de ataque dirigido a los instaladores de paquetes de Python mediante ambigüedades en el formato de archivo ZIP.
Al explotar discrepancias entre los encabezados de los archivos locales y el directorio central, actores maliciosos pueden crear distribuciones de Wheel aparentemente inocuas que, al ser descomprimidas por instaladores vulnerables, introducen silenciosamente archivos no autorizados en el entorno objetivo.
Esta técnica aprovecha las características heredadas del estándar ZIP (desarrollado en 1989 para permitir actualizaciones incrementales en múltiples volúmenes de almacenamiento) y se aprovecha de la falta de validación cruzada estricta en muchos instaladores populares de Python.
Los informes iniciales surgieron cuando los encargados del instalador UV notaron que los archivos aparecían fuera de los directorios de paquetes previstos tras la extracción. Los analistas del blog Python Package Index identificaron que ciertos archivos Wheel contenían entradas RECORD y encabezados del directorio central no coincidentes, lo que provocaba que las herramientas de descompresión incluyeran cargas útiles extrañas durante la instalación.
El análisis de los 15.000 paquetes de Python más descargados revela problemas mínimos: de 13.468 proyectos de Wheel, 13.460 no presentan problemas de RECORD ni ZIP, y solo unos pocos presentan archivos faltantes, discrepancias o duplicados.
Si bien PyPI no ha detectado incidentes confirmados de explotación en el mundo real hasta la fecha, el aviso subraya la posibilidad de comprometer la cadena de suministro en uno de los repositorios de software más grandes.
Mecanismo de infección mediante la discrepancia en RECORD
El núcleo de este ataque radica en que el instalador no verifica las entradas de RECORD con el contenido real del ZIP antes de la extracción. Un programa malicioso puede listar solo archivos benignos en RECORD, como __init__.py y module.py, e incrustar cargas útiles adicionales bajo diferentes nombres de encabezado de archivo local.
Cuando un instalador lee primero el directorio central, confía en la lista de archivos para extraer; sin embargo, implementaciones equivalentes a unzip pueden procesar los encabezados de archivo locales secuencialmente, instalando inadvertidamente puertas traseras ocultas.
Prevención
PyPI ya emplea la detección de "bombas de compresión ZIP" durante las subidas de archivos, lo que refuerza aún más la seguridad. Para abordar esta amenaza emergente, PyPI está implementando una serie de rigurosas comprobaciones de validación en todos los archivos ZIP y Wheel cargados.
Se rechazarán los archivos Wheel con nombres de archivo duplicados entre los encabezados de archivo locales y el directorio central, así como los archivos con datos de encuadre o de seguimiento no válidos.
A partir del 1 de febrero de 2026, cualquier archivo Wheel cuyo contenido no coincida exactamente con el archivo de metadatos RECORD se bloqueará al cargar, tras un período de advertencia de seis meses.
Estas medidas buscan obligar tanto a los empaquetadores como a los proyectos de instalación a adoptar una lógica de análisis robusta y a aplicar comprobaciones cruzadas con las sumas de comprobación integradas.
Fuente: CyberSecurityNews