Vulnerabilità in Python quandu si tratta di numeri fraccionari invalidati in ctypes

E versioni currettivi di u linguaghju di prugrammazione Python 3.7.10 è 3.6.13 sò dispunibuli, chì risolvenu una vulnerabilità (CVE-2021-3177) chì puderia guidà à l'esekzione di codice durante u processu di numeri in virgule flottante invalidati in i gestori chì chjamanu funzioni C cù u mecanismu ctypes. . U prublema afecta ancu i rami Python 3.8 è 3.9, ma l'aghjurnamenti per elli sò sempre in u statutu di candidatu di liberazione (liberazione prevista per l'1 di marzu).

U prublema hè causatu da un buffer overflow in a funzione ctypes PyCArg_repr (), chì si trova per via di l'usu inseguru di sprintf. In particulare, per processà u risultatu di a trasfurmazioni 'sprintf(buffer, " ", self->tag, self->value.b)' hà attribuitu un buffer staticu di 256 bytes ("char buffer[256]"), mentri u risultatu puderia superà stu valore. Per verificà a vulnerabilità di l'applicazioni à a vulnerabilità, pudete pruvà à passà u valore "1e300", chì, quandu trattatu da u metudu c_double.from_param, portarà à un crash, postu chì u numeru resultanti cuntene 308 caratteri è ùn si mette micca in un. Buffer di 256 byte. Esempiu di codice problematicu: import ctypes; x = ctypes.c_double.from_param(1e300); repr (x)

U prublema ùn resta micca riparatu in Debian, Ubuntu è FreeBSD, ma hè digià risoltu in Arch Linux, Fedora, SUSE. In RHEL, a vulnerabilità ùn si trova micca per l'assemblea di u pacchettu in u modu FORTIFY_SOURCE, chì blucca tali buffer overflows in funzioni di stringa.

Source: opennet.ru

Add a comment