Hoch

virtualenv activate.fish führt Befehle aus einem Pfad oder Prompt mit einem Backslash vor einem Anführungszeichen aus

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

Auswirkungen

FishActivator definiert kein quote() und erbt daher ViaTemplateActivator.quote, welches shlex.quote(string) zurückgibt. Diese Funktion folgt den POSIX-sh-Regeln, bei denen ein Backslash innerhalb einfacher Anführungszeichen ein literales Zeichen bleibt. fish interpretiert \' innerhalb einfacher Anführungszeichen jedoch als maskiertes Anführungszeichen und \\ als maskierten Backslash. Ein Wert mit einem Backslash vor einem Anführungszeichen beendet das Literal daher an einer anderen Stelle als von shlex.quote vorgesehen, woraufhin fish die nachfolgende Befehlssubstitution ausführt.

Der Umgebungspfad gelangt in set -gx VIRTUAL_ENV, und --prompt oder VIRTUALENV_PROMPT gelangt in set -gx VIRTUAL_ENV_PROMPT. Für --prompt "x\'\$(touch PWNED)'\'" enthält die generierte activate.fish:

fish
set -gx VIRTUAL_ENV_PROMPT 'x\'"'"'$(touch PWNED)'"'"'\'"'"''

source bin/activate.fish führt touch PWNED aus, und fish gibt keinen Fehler aus. Dieselbe Nutzlast als Verzeichnisname wird über VIRTUAL_ENV ausgeführt. --prompt . übernimmt den Namen des aktuellen Verzeichnisses, sodass das Ausführen von virtualenv in einem von jemand anderem benannten Verzeichnis ausreicht. Ohne den Backslash führt die Nutzlast nichts aus, und unter bash wird sie ebenfalls nicht ausgeführt.

virtualenv generiert standardmäßig activate.fish. Eine angreifende Person muss den Umgebungspfad oder Prompt beeinflussen können: etwa über einen CI-Job oder ein Wrapper-Tool, das einen Branch-, Projekt- oder Jobnamen durchreicht, oder ein Verzeichnis in einem geklonten Repository bzw. entpackten Archiv.

Der Fehler betrifft jede Version bis einschließlich 21.14.1, die activate.fish ausliefert. Der Fix für GHSA-p58f-9548-mpm2 in 21.7.13 verschob die Platzhalter nach außerhalb ihrer Anführungszeichen, behielt jedoch shlex.quote bei.

Bereinigungen

Behoben in 21.14.2. activate.fish maskiert Backslashes und einfache Anführungszeichen nun so, wie fish sie liest, sodass das obige Beispiel nichts ausführt und den Prompt wie angegeben anzeigt. Fix: https://github.com/pypa/virtualenv/commit/3bddeaf8d02c3ee7f576503efb082f8f494cfcab

Problemumgehungen

Erstellen Sie keine Umgebung, deren Pfad oder Prompt einen Backslash enthält, und überprüfen Sie activate.fish, bevor Sie eine nicht selbst erstellte Umgebung laden (source).

Danksagung

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

Was zu tun ist

Aktualisieren Sie auf Version 21.14.2 oder höher. Beachten Sie dazu den Fix: https://github.com/pypa/virtualenv/commit/3bddeaf8d02c3ee7f576503efb082f8f494cfcab.

Als Workaround sollten keine Umgebungen erstellt werden, deren Pfad oder Prompt einen Backslash enthält. Zudem sollte activate.fish vor dem Ausführen (source) überprüft werden, wenn die Umgebung nicht selbst erstellt wurde.

Betroffene Software

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

PlattformPaketAnfällige VersionenBehoben in
Python (PyPI) virtualenv < 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-116, CWE-78
Plattform
Python (PyPI)
Paket
virtualenv
Veröffentlicht
21.10.2026
Aktualisiert
21.10.2026 19:24

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

OSV / GitHub Advisory Database - GHSA-c947-3pg5-gm8q - 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 activate.fish führt Befehle aus einem Pfad oder Prompt mit einem Backslash vor einem Anführungszeichen aus dieser Eintrag
    Hoch · 7.8 CVE-2026-113732 < 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.