virtualenv activate.fish führt Befehle aus einem Pfad oder Prompt mit einem Backslash vor einem Anführungszeichen aus
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:
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.
| Plattform | Paket | Anfällige Versionen | Behoben in |
|---|---|---|---|
| Python (PyPI) | virtualenv | < 21.14.2 | 21.14.2 |
Verweise
- 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.
- 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
- 2017: 0
- 2018: 0
- 2019: 0
- 2020: 0
- 2021: 0
- 2022: 0
- 2023: 0
- 2024: 1
- 2025: 0
- 2026: 7
früher: 1
-
virtualenv activate.fish führt Befehle aus einem Pfad oder Prompt mit einem Backslash vor einem Anführungszeichen aus dieser Eintrag
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.