Alta

Los scripts de activación de virtualenv ejecutan código desde una ruta que contiene un nombre de marcador de posición

  • Publicada: 21.10.2026
  • Actualizado: 21.10.2026 19:21

Impacto

ViaTemplateActivator.instantiate_template reemplaza los marcadores de posición en una plantilla de activación clave por clave a lo largo de todo el texto. Cuando un valor que ya ha sido sustituido y entrecomillado contiene el nombre de un marcador de posición posterior, la pasada posterior reescribe ese nombre dentro del literal entre comillas. El valor insertado aporta sus propias comillas, las cuales cierran el literal externo, y el resto de la ruta se ejecuta como código cuando un usuario activa el entorno.

__VIRTUAL_NAME__ contiene el nombre del directorio del entorno, por lo que un destino como A__VIRTUAL_NAME__B/x'$(touch PWNED)'y es suficiente. En el activate predeterminado para bash, la línea VIRTUAL_ENV se genera como:

bash
VIRTUAL_ENV='/tmp/t/A'x'"'"'$(touch PWNED)'"'"'y'B/x'"'"'$(touch PWNED)'"'"'y'

Al cargar el script mediante source se ejecuta touch PWNED. La misma carga útil en una ruta sin el nombre del marcador de posición no ejecuta nada. activate.fish ejecuta el comando de la misma manera, y quien reportó el fallo también demostró la ejecución de código Python a través de activate.xsh y bin/activate_this.py. En activate.csh, un directorio cuyo nombre coincide con un marcador de posición de visualización del prompt, como __VIRTUAL_PROMPT_DISPLAY_TCSH__, rompe el script con Unmatched '''.

Ningún cambio en quote() puede detener esto, debido a que la reescritura ocurre después de que quote() se haya ejecutado; elude tanto a shlex.quote como a repr().

Un atacante necesita influir en la ruta de destino o en --prompt: un trabajo de CI o una herramienta envoltorio (wrapper) que construya la ruta a partir de un nombre de rama o proyecto, o un directorio en un repositorio clonado o archivo descomprimido.

El error afecta a las versiones desde la 20.26.6 hasta la 21.14.1. La versión 20.26.6 fue la primera en entrecomillar valores de plantilla (#2768) e introdujo el bucle por clave.

Créditos

Kevin Stubbings (@Kwstubbs) de GitHub Security Lab reportó este problema.

Qué hacer

Parches

Corregido en 21.14.2. Los scripts de activación ahora conservan los nombres de los marcadores de posición en la ruta o en el prompt del entorno como texto plano, y la activación del ejemplo anterior no ejecuta nada. Corrección: https://github.com/pypa/virtualenv/commit/602b26623a724827ff171bf11fef4ad186d01f74

Mitigaciones provisionales

No cree un entorno cuya ruta o --prompt contenga un nombre de marcador de posición como __VIRTUAL_NAME__, __VIRTUAL_ENV__ o __VIRTUAL_PROMPT__, e inspeccione el script de activación generado antes de cargar uno que no haya creado usted.

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Python (PyPI) virtualenv >= 20.26.6, < 21.14.2 21.14.2

Referencias

Puntuación CVSS 7.8/10
Vector CVSS
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Debilidad (CWE)
CWE-78, CWE-94
Plataforma
Python (PyPI)
Paquete
virtualenv
Publicada
21.10.2026
Actualizado
21.10.2026 19:21

Fuentes y licencias · Editado o traducido por DockRay; se mantienen los derechos y las licencias de las fuentes.

OSV / GitHub Advisory Database - GHSA-8rjx-v5ww-45pp - CC BY 4.0

Historial de vulnerabilidades: virtualenv

Todas las vulnerabilidades publicadas de este paquete (Python (PyPI)), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Todas (9) en el archivo
Entradas en total
9
Primera → última
12.2011 10.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Alta 6
  • Media 3

Divulgaciones por año

  1. 2017: 0
  2. 2018: 0
  3. 2019: 0
  4. 2020: 0
  5. 2021: 0
  6. 2022: 0
  7. 2023: 0
  8. 2024: 1
  9. 2025: 0
  10. 2026: 7

antes: 1

Gravedad:
  1. Los scripts de activación de virtualenv ejecutan código desde una ruta que contiene un nombre de marcador de posición esta entrada
    Alta · 7.8 CVE-2026-113776 >= 20.26.6, < 21.14.2 21.14.2

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.