Pagkahuyang sa Python kung nagdumala sa dili balido nga fractional nga mga numero sa ctypes

Ang corrective releases sa Python programming language 3.7.10 ug 3.6.13 anaa, nga nag-ayo sa usa ka vulnerability (CVE-2021-3177) nga mahimong mosangpot sa code execution sa pagproseso sa dili balido nga floating point nga mga numero sa mga handler nga nagtawag sa C function gamit ang ctypes nga mekanismo . Ang problema makaapekto usab sa Python 3.8 ug 3.9 nga mga sanga, apan ang mga update alang kanila anaa pa sa release nga kandidato status (release naka-iskedyul sa Marso 1).

Ang problema tungod sa usa ka buffer overflow sa ctypes function PyCArg_repr(), nga mahitabo tungod sa dili luwas nga paggamit sa sprintf. Sa partikular, aron maproseso ang resulta sa pagbag-o 'sprintf(buffer, " ", self->tag, self->value.b)' naggahin ug static buffer nga 256 bytes ("char buffer[256]"), samtang ang resulta mahimong molapas niini nga bili. Aron masusi ang pagkahuyang sa mga aplikasyon sa pagkahuyang, mahimo nimong sulayan ang pagpasa sa kantidad nga "1e300", nga, kung giproseso sa c_double.from_param nga pamaagi, mosangput sa pagkahagsa, tungod kay ang sangputanan nga numero adunay 308 nga mga karakter ug dili mohaum sa usa ka 256-byte nga buffer. Pananglitan sa problemadong kodigo: import ctypes; x = ctypes.c_double.from_param(1e300); repr(x)

Ang problema nagpabilin nga wala masulbad sa Debian, Ubuntu ug FreeBSD, apan naayo na sa Arch Linux, Fedora, SUSE. Sa RHEL, ang kahuyang dili mahitabo tungod sa package assembly sa FORTIFY_SOURCE mode, nga nagbabag sa maong buffer overflows sa string functions.

Source: opennet.ru

Idugang sa usa ka comment