CVE-2026-102925
WysokieCVSS 7.8Streszczenie
W virtualenv przed wersją 21.7.13 generowane skrypty activate (bash i zsh) oraz activate.fish umieszczają wartości już zabezpieczone przez shlex.quote wewnątrz dodatkowego kontekstu cytowania. W skrypcie bash i zsh spreparowana ścieżka środowiska wirtualnego trafia do __VIRTUAL_ENV__, gdy zapisany katalog przeniesionego środowiska jest nieobecny; w skrypcie fish spreparowane ścieżki bibliotek Tcl lub Tk trafiają do __TCL_LIBRARY__ lub __TK_LIBRARY__. Nadmiarowe cudzysłowy mogą zakończyć ciąg tylko danych i pozostawić metaznaki powłoki jako polecenia podczas źródłowania skryptu aktywacyjnego, umożliwiając wykonanie kodu z uprawnieniami użytkownika.
Ocena ryzyka
Atakujący może wykonać dowolne polecenia z uprawnieniami użytkownika źródłującego skrypt aktywacyjny, co prowadzi do przejęcia kontroli nad systemem. Wymaga to spreparowanej ścieżki środowiska lub bibliotek, co może być możliwe w niektórych scenariuszach.
Rekomendacja
Zaktualizować virtualenv do wersji 21.7.13 lub nowszej. Unikać źródłowania skryptów aktywacyjnych z niezaufanych środowisk i weryfikować integralność generowanych skryptów.
Inne podatności w virtualenv
Zobacz wszystkie- CVE-2026-102938Średnie
virtualenv to narzędzie do tworzenia izolowanych środowisk Pythona. Przed wersją 21.7.11 funkcja PyEnvCfg.write() zapisuje wartości prompt dosłownie do formatu pyvenv.cfg, podczas gdy PyEnvCfg._read_values() parsuje plik za pomocą str.splitlines() i akceptuje ostatnią wartość dla zduplikowanych kluczy. Atakujący mogący wpłynąć na --prompt, VIRTUALENV_PROMPT lub konfigurację może wstawić granicę linii i dodatkowe klucze, w tym home, powodując użycie przez konsumentów wybranego przez atakującego interpretera bazowego lub uszkodzenie metadanych środowiska.
- CVE-2026-102937Wysokie
W virtualenv przed wersją 21.7.12 metoda BatchActivator.quote() zwraca tekst zachęty bez zmian, zanim activate.bat wstawi go do instrukcji set "VAR=value" w cmd.exe. Atakujący mogący wpłynąć na --prompt, VIRTUALENV_PROMPT lub odpowiednią wartość konfiguracji może umieścić podwójny cudzysłów, który zamyka przypisanie i pozostawia następujące operatory cmd.exe jako wykonywalną składnię. Gdy użytkownik aktywuje wygenerowane środowisko Windows, wstrzyknięte polecenia są wykonywane z jego uprawnieniami.
- CVE-2026-102930Wysokie
W virtualenv przed wersją 21.7.12 funkcja download_wheel() akceptuje koła seed pip i setuptools pobierane do okresowych aktualizacji lub opcji --download bez sprawdzania ich bajtów względem autorytatywnego skrótu równoważnego weryfikacji BUNDLE_SHA256 wbudowanych kół. Zmanipulowany indeks, nieaktualne lustro lub przechwycone połączenie TLS mogą podstawić inne koło pod żądaną dystrybucję, wersję i nazwę pliku, po czym virtualenv buforuje i wstawia kontrolowane przez atakującego koło do później tworzonych środowisk. Weryfikacja dotyczy domyślnej ścieżki PyPI i jest celowo pomijana, gdy PIP_INDEX_URL, PIP_EXTRA_INDEX_URL lub konfiguracja PIP_INDEX wskazują niestandardowy indeks.
Oryginalny opis (angielski, źródło NVD)
virtualenv is a tool for creating isolated virtual python environments. Prior to 21.7.13, the generated activate (bash and zsh) and activate.fish scripts place values already escaped by shlex.quote inside an additional quoted context. In the bash and zsh script, a crafted virtual environment path reaches __VIRTUAL_ENV__ when a relocated environment's recorded directory is absent; in the fish script, crafted Tcl or Tk library paths reach __TCL_LIBRARY__ or __TK_LIBRARY__. The surplus quotes can terminate the data-only quoted run and leave shell metacharacters parsed as commands when a user sources the activation script, allowing code execution with that user's privileges. This issue is fixed in version 21.7.13.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

