Kerentanan dina Python nalika nanganan angka pecahan anu teu valid dina ctypes

Kaluaran koréksi tina basa pamrograman Python 3.7.10 sareng 3.6.13 sayogi, anu ngalereskeun kerentanan (CVE-2021-3177) anu tiasa nyababkeun palaksanaan kode nalika ngolah angka floating point anu teu valid dina pawang anu nyauran fungsi C nganggo mékanisme ctypes. . Masalahna mangaruhan ogé Python 3.8 jeung 3.9 cabang, tapi apdet pikeun aranjeunna masih dina status calon release (pelepasan dijadwalkeun pikeun 1. Mars).

Masalahna disababkeun ku panyangga mudal dina ctypes fungsi PyCArg_repr (), nu lumangsung alatan pamakéan unsafe of sprintf. Khususna, pikeun ngolah hasil transformasi 'sprintf(buffer, " ", self-> tag, self-> value.b) 'dialokasikan panyangga statik 256 bait ("char panyangga [256]"), bari hasilna bisa ngaleuwihan nilai ieu. Pikeun mariksa kerentanan aplikasi kana kerentanan, anjeun tiasa nyobian ngalangkungan nilai "1e300", anu, nalika diolah ku metode c_double.from_param, bakal ngakibatkeun kacilakaan, sabab jumlah anu dihasilkeun ngandung 308 karakter sareng henteu cocog kana a 256-bait panyangga. Conto kode masalah: impor ctypes; x = ctypes.c_double.from_param(1e300); repr (x)

Masalahna tetep teu dibenerkeun dina Debian, Ubuntu sareng FreeBSD, tapi parantos dibenerkeun dina Arch Linux, Fedora, SUSE. Dina RHEL, kerentanan henteu kajantenan kusabab pangumpulan pakét dina modeu FORTIFY_SOURCE, anu ngahalangan panyangga sapertos kitu dina fungsi senar.

sumber: opennet.ru

Tambahkeun komentar