Ny vulnerability amin'ny Python rehefa mitantana isa fractional tsy voamarina amin'ny ctypes

Misy ny famoahana fanitsiana ny fiteny fandaharana Python 3.7.10 sy 3.6.13, izay mamaha ny vulnerability (CVE-2021-3177) izay mety hitarika amin'ny famonoana kaody rehefa manodina ny laharana mitsingevana tsy voamarina amin'ny mpitantana izay miantso ny asa C mampiasa ny ctypes mekanika. . Ny olana dia misy fiantraikany amin'ny sampana Python 3.8 sy 3.9 ihany koa, fa ny fanavaozana ho azy ireo dia mbola eo amin'ny satan'ny kandidà (famoahana voalahatra amin'ny 1 martsa).

Ny olana dia vokatry ny fihoaran'ny buffer ao amin'ny ctypes function PyCArg_repr(), izay mitranga noho ny fampiasana tsy azo antoka ny sprintf. Indrindra indrindra, ny fanodinana ny vokatry ny fanovana 'sprintf(buffer, " ", self->tag, self->value.b)' dia nanome buffer static 256 bytes ("char buffer[256]"), raha toa ka mety hihoatra io sanda io ny vokatra. Mba hanamarinana ny fahalemen'ny fampiharana amin'ny vulnerability dia azonao atao ny manandrana mampita ny sanda "1e300", izay, rehefa karakarain'ny fomba c_double.from_param, dia hitarika fianjerana, satria misy tarehintsoratra 308 ny isa vokarina ary tsy mifanaraka amin'ny a 256-byte buffer. Ohatra amin'ny code manahirana: import ctypes; x = ctypes.c_double.from_param(1e300); repr(x)

Ny olana dia mbola tsy voavaha ao amin'ny Debian, Ubuntu ary FreeBSD, fa efa raikitra ao amin'ny Arch Linux, Fedora, SUSE. Ao amin'ny RHEL, tsy mitranga ny vulnerability noho ny fivorian'ny fonosana amin'ny fomba FORTIFY_SOURCE, izay manakana ny fihoaran'ny buffer toy izany amin'ny fiasan'ny string.

Source: opennet.ru

Add a comment