Vundebleco en Python dum traktado de nevalidigitaj frakciaj nombroj en ctipoj

Estas disponeblaj korektaj eldonoj de la programlingvo Python 3.7.10 kaj 3.6.13, kiuj riparas vundeblecon (CVE-2021-3177) kiu povus konduki al koda ekzekuto dum prilaborado de nevalidigitaj glitkomaj nombroj en pritraktiloj kiuj vokas C-funkciojn uzante la mekanismon ctypes. . La problemo ankaŭ influas la branĉojn Python 3.8 kaj 3.9, sed ĝisdatigoj por ili ankoraŭ estas en eldonkandidata statuso (eldono planita por la 1-a de marto).

La problemo estas kaŭzita de bufra superfluo en la ctypes-funkcio PyCArg_repr(), kiu okazas pro nesekura uzo de sprintf. Aparte, por prilabori la rezulton de la transformo 'sprintf(buffer, " ", mem->tag, mem->valoro.b)' asignis senmovan bufron de 256 bajtoj ("char bufro[256]"), dum la rezulto povus superi ĉi tiun valoron. Por kontroli la vundeblecon de aplikoj al la vundebleco, vi povas provi pasi la valoron "1e300", kiu, procesite per la metodo c_double.from_param, kondukos al kraŝo, ĉar la rezulta nombro enhavas 308 signojn kaj ne taŭgas en 256-bajta bufro. Ekzemplo de problema kodo: import ctypes; x = ctypes.c_double.from_param(1e300); repr(x)

La problemo restas nesolvita en Debian, Ubuntu kaj FreeBSD, sed jam estis riparita en Arch Linux, Fedora, SUSE. En RHEL, la vundebleco ne okazas pro pakaĵaro en FORTIFY_SOURCE-reĝimo, kiu blokas tiajn bufro-superfluojn en kordaj funkcioj.

fonto: opennet.ru

Aldoni komenton