Python fejlesztők figyelmébe: az urllib.parse könyvtár 3.11 előtti verziói távoli kódfuttatást (RCE) tehetnek lehetővé illetéktelenek számára.
A sérülékenységről a Carnegie Mellon Egyetem CERT-je adott ki biztonsági közleményt.
Az urllib.parse a Python alapcsolmag részét képző, széles körben használt URL parszoló könyvtár. A most felfedezett sebezhetőség az urlsplit()
és urlparse()
API-k nem megfelelő bemenet ellenőrzéséből fakad, hibaüzenet helyett üres karaktereket vagy akár kódrészeket adhatnak vissza. Ez akkor fordulhat elő, amennyiben olyan URL-t kapnak inputként, ami üres karakterekkel kezdődik.
A sebezhetőség miatt a támadók megkerülhetnek minden blokklistával megvalósított domain vagy protokollszűrési módszert. A protokollszűrési hibák tetszőleges fájlolvasáshoz, tetszőleges parancsvégrehajtáshoz, SSRF támadáshoz és potenciálisan további problémákhoz vezethetnek. A domainnév-szűrés megkerülése a blokkolt veszélyes webhelyek újbóli eléréséhez vagy a CSRF referer-alapú védelem megkerüléséhez vezethet, stb.
A sebezhetőség az alábbi verziókban javításra került, vagy megkerülő megoldásként a strip()
függvény is használható.
fixed in >= 3.12
fixed in 3.11.x >= 3.11.4
fixed in 3.10.x >= 3.10.12
fixed in 3.9.x >= 3.9.17
fixed in 3.8.x >= 3.8.17
fixed in 3.7.x >= 3.7.17
A CERT Coordination Center további javaslata, hogy az ilyen API-k esetében a fejlesztők mindig végezzenek némi szűrést a visszaadott értékeken.