CVE-2026-102938
ŚrednieCVSS 5.8Streszczenie
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.
Ocena ryzyka
Atakujący może doprowadzić do użycia złośliwego interpretera bazowego lub uszkodzenia metadanych środowiska, co może prowadzić do wykonania niezaufanego kodu. Wymaga to jednak wpływu na dane wejściowe prompt spoza granicy zaufania operatora.
Rekomendacja
Zaktualizuj virtualenv do wersji 21.7.11 lub nowszej. Unikaj przekazywania niezaufanych danych wejściowych do opcji --prompt lub VIRTUALENV_PROMPT.
Inne podatności w virtualenv
Zobacz wszystkie- 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.
- 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.11, PyEnvCfg.write() writes prompt values verbatim to the line-oriented pyvenv.cfg format while PyEnvCfg._read_values() parses the file with str.splitlines() and accepts the last value for duplicate keys. An attacker who influences --prompt, VIRTUALENV_PROMPT, or configuration input can insert a recognized line boundary and additional keys, including home, causing consumers to use an attacker-selected base interpreter or corrupted environment metadata. The security impact requires prompt input from outside the operator's trust boundary; directly supplied prompt content primarily corrupts the operator's own environment. This issue is fixed in version 21.7.11.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

