Zraniteľnosť v Pythone, ktorá sa prejavuje pri spracovaní nekontrolovaných desatinných čísel v ctypes

Sú dostupné opravy programovacieho jazyka Python 3.7.10 a 3.6.13, v ktorých bola odstránená zraniteľnosť (CVE-2021-3177), ktorá môže viesť k vykonaniu kódu pri spracovaní neoverených čísiel s plávajúcou desatinnou čiarkou v spracovateľoch, ktoré vyvolávajú funkcie v jazyku C pomocou mechanizmu ctypes. Problém sa týka aj vetví Python 3.8 a 3.9, ale aktualizácie pre ne sú zatiaľ v stave kandidátov na vydanie (vydanie je naplánované na 1. marca).

Problém je spôsobený pretečením vyrovnávacej pamäte v ctypes-funkcii PyCArg_repr(), ktoré vzniká z dôvodu nebezpečného používania sprintf. Konkrétne, na spracovanie výsledku konverzie ‘sprintf(buffer, „“, self->tag, self->value.b)’ bol alokovaný statický buffer s veľkosťou 256 bajtov („char buffer[256]“), pričom výsledok mohol presiahnuť túto hodnotu. Na overenie zraniteľnosti aplikácií môžete vyskúšať odoslať hodnotu „1e300“, ktorá pri spracovaní metódou c_double.from_param spôsobí pád, keďže výsledné číslo obsahuje 308 znakov a nezmestí sa do 256-bajtového buffera. Príklad problémového kódu: import ctypes; x = ctypes.c_double.from_param(1e300); repr(x)

Problém zostáva neopravený v Debian, Ubuntu a FreeBSD, ale už bol odstránený v Arch Linux, Fedora a SUSE. V RHEL sa zraniteľnosť neprejavuje kvôli zostaveniu balíkov v režime FORTIFY_SOURCE, ktorý blokuje takéto pretečenia vyrovnávacej pamäte v reťazcových funkciách.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster