Te whakaraerae i roto i te Python i te wa e whakahaere ana i nga tau hautau kaore i whakamanahia i roto i nga momo c

Ko nga putanga whakatika o te reo papatono Python 3.7.10 me te 3.6.13 e waatea ana, e whakatika ana i te whakaraeraetanga (CVE-2021-3177) ka arahi ki te mahi waehere i te wa e tukatuka ana i nga tau ira maanu kore mana i roto i nga kaikawe e karanga ana i nga mahi C ma te whakamahi i nga momo ctypes. . Ka pa ano te raru ki nga manga Python 3.8 me 3.9, engari kei te noho tonu nga whakahoutanga mo ratou ki te tuunga kaitono (te tuku i whakaritea mo te Maehe 1).

Ko te raru i puta mai i te puhake putunga i roto i te mahi ctypes PyCArg_repr(), ka puta na te kore haumaru o te whakamahi i te sprintf. Ina koa, ki te tukatuka i te hua o te huringa 'sprintf(buffer, " ", self->tag, self->value.b)' i tohatohahia he parepare pateko o te 256 paita ("char buffer[256]"), i te mea ka nui ake te hua i tenei uara. Hei tirotiro i te whakaraeraetanga o nga tono ki te whakaraeraetanga, ka taea e koe te ngana ki te tuku i te uara "1e300", ka tukuna e te tikanga c_double.from_param, ka puta he tukinga, na te mea kei te 308 nga tohu ka puta mai, kaore e uru ki roto. 256-paita parepare. Tauira o te waehere raruraru: kawemai ctypes; x = ctypes.c_double.from_param(1e300); repr(x)

Ko te raruraru kei te noho tonu i Debian, Ubuntu me FreeBSD, engari kua whakatikahia i Arch Linux, Fedora, SUSE. I roto i te RHEL, karekau te whakaraeraetanga e puta mai na te huihuinga o te kete i roto i te aratau FORTIFY_SOURCE, e aukati ana i te puhaketanga o te parare i roto i nga mahi aho.

Source: opennet.ru

Tāpiri i te kōrero