Podatność typu dependency confusion w narzędziu pipreqs (wersje v0.3.0 do v0.4.11) umożliwia atakującemu wykonanie dowolnego kodu na maszynie ofiary. Wysoki wynik CVSS 9.8 i brak wymagań uwierzytelnienia czynią tę podatność szczególnie niebezpieczną dla środowisk deweloperskich i CI/CD.
▸ Pokaż oryginał (EN)
A dependency confusion in pipreqs v0.3.0 to v0.4.11 allows attackers to execute arbitrary code via uploading a crafted PyPI package to the chosen repository server.
Atak typu dependency confusion polega na przesłaniu spreparowanego pakietu PyPI o nazwie odpowiadającej wewnętrznej zależności wykrytej przez pipreqs w analizowanym projekcie. Narzędzie pipreqs, generując plik requirements.txt, może pobrać pakiet ze zdalnego repozytorium zamiast z wewnętrznego źródła, jeśli atakujący opublikuje pakiet o wyższym numerze wersji w publicznym rejestrze. W efekcie złośliwy pakiet jest instalowany i jego kod wykonywany w środowisku docelowym bez wiedzy użytkownika.
Atakujący może wykonać dowolny kod (RCE) w kontekście procesu instalującego pakiet, co prowadzi do pełnego przejęcia kontroli nad systemem — naruszenia poufności, integralności oraz dostępności danych i zasobów.
Należy zaktualizować pipreqs do wersji wyższej niż v0.4.11. Szczegóły poprawki dostępne są w pull requeście producenta: https://github.com/bndr/pipreqs/pull/364. Dodatkowo zaleca się konfigurację środowisk Python tak, aby instalacja pakietów odbywała się wyłącznie z zaufanych, wewnętrznych repozytoriów z jawnym wskazaniem źródła (np. flaga --index-url lub --extra-index-url z weryfikacją).
pipreqs w wersjach od v0.3.0 do v0.4.11 (projekt Pipreqs autorstwa bndr)
Proof of concept dla tej podatności został opublikowany przez użytkownika 'adeadfed' w serwisie GitHub Gist (https://gist.github.com/adeadfed/ccc834440af354a5638f889bee34bafe).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HPipreqs Project Pipreqs
APPPipreqs Project0.3.0 – 0.4.11