Hoch

virtualenv-Aktivierungsskripte führen Code aus einem Pfad aus, der einen Platzhalternamen enthält

  • Veröffentlicht: 21.10.2026
  • Aktualisiert: 21.10.2026 19:21

Auswirkungen

ViaTemplateActivator.instantiate_template ersetzt die Platzhalter in einer Aktivierungsvorlage nacheinander schlüsselweise über den gesamten Text. Wenn ein bereits ersetzter und in Anführungszeichen gesetzter Wert den Namen eines späteren Platzhalters enthält, überschreibt der nachfolgende Durchlauf diesen Namen innerhalb des Literals in Anführungszeichen. Der eingefügte Wert bringt eigene Anführungszeichen mit, die das äußere Literal schließen, wodurch der Rest des Pfades als Code ausgeführt wird, sobald ein Benutzer die Umgebung aktiviert.

__VIRTUAL_NAME__ enthält den Verzeichnisnamen der Umgebung, sodass ein Ziel wie A__VIRTUAL_NAME__B/x'$(touch PWNED)'y genügt. Im Standard-activate für Bash wird die Zeile VIRTUAL_ENV wie folgt dargestellt:

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

Das Ausführen (Sourcen) dieses Skripts führt touch PWNED aus. Dieselbe Nutzlast in einem Pfad ohne den Platzhalternamen führt nichts aus. activate.fish führt den Befehl auf die gleiche Weise aus, und der Finder demonstrierte zudem die Ausführung von Python-Code über activate.xsh und bin/activate_this.py. In activate.csh führt ein Verzeichnis, das nach einem Prompt-Anzeigeplatzhalter benannt ist, wie etwa __VIRTUAL_PROMPT_DISPLAY_TCSH__, dazu, dass das Skript mit Unmatched ''' abbricht.

Keine Änderung an quote() kann dies verhindern, da die Umschreibung erfolgt, nachdem quote() ausgeführt wurde; dies umgeht sowohl shlex.quote als auch repr().

Ein Angreifer muss den Zielpfad oder --prompt beeinflussen können: etwa über einen CI-Job oder ein Wrapper-Tool, das den Pfad aus einem Branch- oder Projektnamen generiert, oder über ein Verzeichnis in einem geklonten Repository oder entpackten Archiv.

Der Fehler betrifft die Versionen 20.26.6 bis 21.14.1. Version 20.26.6 hat Vorlagenwerte erstmals in Anführungszeichen gesetzt (#2768) und die Schleife pro Schlüssel eingeführt.

Danksagung

Kevin Stubbings (@Kwstubbs) vom GitHub Security Lab hat dieses Problem gemeldet.

Was zu tun ist

Patches

Behoben in 21.14.2. Aktivierungsskripte belassen Platzhalternamen im Pfad oder Prompt der Umgebung nun als Klartext, und das Aktivieren des obigen Beispiels führt nichts aus. Fix: https://github.com/pypa/virtualenv/commit/602b26623a724827ff171bf11fef4ad186d01f74

Umgehungen

Erstellen Sie keine Umgebung, deren Pfad oder --prompt einen Platzhalternamen wie __VIRTUAL_NAME__, __VIRTUAL_ENV__ oder __VIRTUAL_PROMPT__ enthält, und überprüfen Sie das generierte Aktivierungsskript, bevor Sie ein Skript sourcen, das Sie nicht selbst erstellt haben.

Betroffene Software

Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.

PlattformPaketAnfällige VersionenBehoben in
Python (PyPI) virtualenv >= 20.26.6, < 21.14.2 21.14.2

Verweise

CVSS-Wert 7.8/10
CVSS-Vektor
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Schwäche (CWE)
CWE-78, CWE-94
Plattform
Python (PyPI)
Paket
virtualenv
Veröffentlicht
21.10.2026
Aktualisiert
21.10.2026 19:21

Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.

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

Schwachstellenhistorie: virtualenv

Alle veröffentlichten Schwachstellen dieses Pakets (Python (PyPI)), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.

Alle (9) im Archiv
Einträge insgesamt
9
Erste → letzte
12.2011 10.2026
Ohne Fix
0
In Angriffen ausgenutzt
0

Verteilung nach Schweregrad

  • Hoch 6
  • Mittel 3

Veröffentlichungen pro Jahr

  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

früher: 1

Schweregrad:
  1. virtualenv-Aktivierungsskripte führen Code aus einem Pfad aus, der einen Platzhalternamen enthält dieser Eintrag
    Hoch · 7.8 CVE-2026-113776 >= 20.26.6, < 21.14.2 21.14.2

Erkennen Sie Schwachstellen in Ihrer Anwendung

Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.

Anwendung verbinden
DockRay Newsletter

Anwendungssicherheit in Ihrem Postfach

Wichtige Schwachstellen, konkrete Empfehlungen und praktische Tipps für Ihre Anwendungen. Wählen Sie Ihre Technologien und verfolgen Sie, was für Ihr Projekt relevant ist.

  • Eine tägliche Zusammenfassung neuer Schwachstellen, auch kritischer.
  • Benachrichtigungen über wichtige Updates.
  • Praktische Tipps zur Sicherheit und Überwachung von Anwendungen.

Leer lassen, um Meldungen zu allen Technologien zu erhalten.

Kostenlos anmelden. In jeder E-Mail mit einem Klick abmelden.