Wysoka

virtualenv activate.fish wykonuje polecenia ze ścieżki lub promptu z ukośnikiem odwrotnym przed cudzysłowem

  • Ujawniono: 21.10.2026
  • Aktualizacja: 21.10.2026 19:24

Wpływ

FishActivator nie definiuje quote(), przez co dziedziczy ViaTemplateActivator.quote, które zwraca shlex.quote(string). Funkcja ta stosuje reguły POSIX sh, w których ukośnik odwrotny (backslash) wewnątrz pojedynczych cudzysłowów pozostaje znakiem dosłownym. fish odczytuje jednak \' wewnątrz pojedynczych cudzysłowów jako cudzysłów modyfikowany (escaped), a \\ jako modyfikowany ukośnik odwrotny. Wartość z ukośnikiem odwrotnym przed cudzysłowem kończy więc literał w innym miejscu, niż wyznaczył shlex.quote, a fish dokonuje podstawienia polecenia (command substitution), które następuje po nim.

Ścieżka środowiska trafia do set -gx VIRTUAL_ENV, a --prompt lub VIRTUALENV_PROMPT trafia do set -gx VIRTUAL_ENV_PROMPT. Dla --prompt "x\'\$(touch PWNED)'\'" wygenerowany activate.fish zawiera:

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

source bin/activate.fish uruchamia touch PWNED, a fish nie wyświetla żadnego błędu. Ten sam ładunek jako nazwa katalogu wykonuje się poprzez VIRTUAL_ENV. --prompt . pobiera nazwę bieżącego katalogu, więc uruchomienie virtualenv w katalogu nazwanym przez kogoś innego jest wystarczające. Bez ukośnika odwrotnego ładunek niczego nie uruchamia; pod bash również nic się nie wykonuje.

virtualenv domyślnie generuje activate.fish. Atakujący musi mieć wpływ na ścieżkę środowiska lub prompt: na przykład poprzez zadanie CI lub narzędzie pośredniczące, które przekazuje nazwę gałęzi, projektu lub zadania, bądź poprzez katalog w sklonowanym repozytorium czy rozpakowanym archiwum.

Błąd dotyczy każdego wydania do wersji 21.14.1 włącznie, które zawiera activate.fish. Poprawka GHSA-p58f-9548-mpm2 w 21.7.13 przeniosła symbole zastępcze poza cudzysłowy, ale pozostawiła shlex.quote.

Poprawki

Naprawiono w 21.14.2. activate.fish obsługuje teraz ukośniki odwrotne i pojedyncze cudzysłowy w sposób, w jaki odczytuje je fish, dzięki czemu powyższy przykład niczego nie wykonuje i wyświetla prompt zgodnie z oczekiwaniem. Poprawka: https://github.com/pypa/virtualenv/commit/3bddeaf8d02c3ee7f576503efb082f8f494cfcab

Obejścia problemu

Nie twórz środowiska, którego ścieżka lub prompt zawiera ukośnik odwrotny, oraz sprawdź activate.fish przed załadowaniem środowiska (source), którego sam nie utworzyłeś.

Podziękowania

Kevin Stubbings (@Kwstubbs) z GitHub Security Lab zgłosił ten problem.

Co trzeba zrobić

Zaktualizuj do wersji 21.14.2 lub nowszej. Zobacz poprawkę: https://github.com/pypa/virtualenv/commit/3bddeaf8d02c3ee7f576503efb082f8f494cfcab.

Obejściem problemu jest unikanie tworzenia środowisk, których ścieżka lub prompt zawiera ukośnik odwrotny, oraz weryfikacja zawartości activate.fish przed wykonaniem (source), jeśli środowisko nie zostało utworzone samodzielnie.

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Python (PyPI) virtualenv < 21.14.2 21.14.2

Odnośniki

Ocena CVSS 7.8/10
Wektor CVSS
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Słabość (CWE)
CWE-116, CWE-78
Platforma
Python (PyPI)
Paczka
virtualenv
Ujawniono
21.10.2026
Aktualizacja
21.10.2026 19:24

Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.

OSV / GitHub Advisory Database - GHSA-c947-3pg5-gm8q - CC BY 4.0

Historia podatności: virtualenv

Wszystkie opisane podatności tej paczki (Python (PyPI)), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (9) w archiwum
Wszystkich wpisów
9
Pierwsza → ostatnia
12.2011 10.2026
Bez poprawki
0
Wykorzystywana w atakach
0

Rozkład istotności

  • Wysoka 6
  • Średnia 3

Ujawnienia w latach

  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

wcześniej: 1

Istotność:
  1. virtualenv activate.fish wykonuje polecenia ze ścieżki lub promptu z ukośnikiem odwrotnym przed cudzysłowem ten wpis
    Wysoka · 7.8 CVE-2026-113732 < 21.14.2 21.14.2
  2. Wysoka CVE-2026-102937 < 21.7.12 21.7.12

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.