CVE-2026-102937
WysokieCVSS 7.3Streszczenie
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.
Ocena ryzyka
Atakujący może wykonać dowolne polecenia z uprawnieniami użytkownika aktywującego środowisko, co prowadzi do przejęcia kontroli nad systemem. Wymaga to wpływu na wartość promptu, co może być możliwe w niektórych scenariuszach wdrożeniowych.
Rekomendacja
Zaktualizować virtualenv do wersji 21.7.12 lub nowszej. Unikać używania niezaufanych wartości promptu i weryfikować integralność generowanych skryptów aktywacyjnych.
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-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.
- CVE-2026-102925Wysokie
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.
Oryginalny opis (angielski, źródło NVD)
virtualenv is a tool for creating isolated virtual python environments. Prior to 21.7.12, BatchActivator.quote() returns prompt text unchanged before activate.bat inserts it into a cmd.exe set "VAR=value" statement. An attacker who influences --prompt, VIRTUALENV_PROMPT, or the corresponding configuration value can include a double quote that closes the assignment and leaves following cmd.exe operators as executable syntax. When a user activates the generated Windows environment, the injected commands run with that user's privileges. This issue is fixed in version 21.7.12.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

