Kerentanan ing Python nalika nangani nomer pecahan sing ora valid ing ctypes

Rilis korektif saka basa pemrograman Python 3.7.10 lan 3.6.13 kasedhiya, sing ndandani kerentanan (CVE-2021-3177) sing bisa nyebabake eksekusi kode nalika ngolah nomer floating point sing ora valid ing panangan sing nelpon fungsi C nggunakake mekanisme ctypes . Masalah uga mengaruhi Python 3.8 lan 3.9 cabang, nanging nganyari kanggo wong-wong mau isih ing status calon release (rilis dijadwal kanggo 1. mars).

Masalah kasebut disebabake kebanjiran buffer ing fungsi ctypes PyCArg_repr (), sing kedadeyan amarga nggunakake sprintf sing ora aman. Utamane, kanggo ngolah asil transformasi 'sprintf(buffer, " ", self-> tag, self-> value.b)' diparengake buffer statis 256 bita ("char buffer [256]"), nalika asil bisa ngluwihi nilai iki. Kanggo mriksa kerentanan aplikasi kanggo kerentanan, sampeyan bisa nyoba ngliwati nilai "1e300", sing, nalika diproses kanthi metode c_double.from_param, bakal nyebabake kacilakan, amarga nomer asil ngemot 308 karakter lan ora cocog karo a 256-bait buffer. Conto kode masalah: ngimpor ctypes; x = ctypes.c_double.from_param(1e300); repr(x)

Masalah kasebut tetep ora diatasi ing Debian, Ubuntu lan FreeBSD, nanging wis diatasi ing Arch Linux, Fedora, SUSE. Ing RHEL, kerentanan ora kedadeyan amarga perakitan paket ing mode FORTIFY_SOURCE, sing ngalangi buffer overflows ing fungsi string.

Source: opennet.ru

Add a comment