په Python کې زیانمنتیا کله چې په ډولونو کې د غیر تایید شوي جزوي شمیرو اداره کول

د Python پروګرامینګ ژبې 3.7.10 او 3.6.13 اصلاحي خپرونه شتون لري، کوم چې یو زیانمنونکي (CVE-2021-3177) حل کوي کوم چې کولی شي د کوډ اجرا کولو المل شي کله چې په هینډلرونو کې د غیر تایید شوي فلوټینګ پوائنټ شمیرې پروسس کوي چې د ctypes میکانیزم په کارولو سره د C فنکشن ته زنګ ووهي. . ستونزه د Python 3.8 او 3.9 څانګو باندې هم اغیزه کوي ، مګر د دوی لپاره تازه معلومات لاهم د خوشې کیدو نوماند حالت کې دي (د مارچ 1 لپاره ټاکل شوی خوشې کول).

ستونزه د ctypes فنکشن PyCArg_repr() کې د بفر اوور فلو له امله رامینځته شوې ، کوم چې د سپرینټف غیر خوندي کارونې له امله رامینځته کیږي. په ځانګړې توګه، د بدلون پایله پروسس کولو لپاره 'sprintf(بفر، " ", self->tag, self->value.b)' د 256 بایټس جامد بفر تخصیص کړی ("چار بفر[256]")، پداسې حال کې چې پایله کیدای شي له دې ارزښت څخه زیاته وي. د دې لپاره چې د غوښتنلیکونو زیانمنتیا وڅیړئ، تاسو کولی شئ د "1e300" ارزښت تیرولو هڅه وکړئ، کوم چې کله چې د c_double.from_param میتود لخوا پروسس کیږي، د حادثې لامل کیږي، ځکه چې پایله شوې شمیره 308 حروف لري او په یوه کې مناسب ندي. 256-بایټ بفر. د ستونزې لرونکي کوډ بیلګه: د وارداتو ډولونه؛ x = ctypes.c_double.from_param(1e300); repr(x)

ستونزه په Debian، Ubuntu او FreeBSD کې ناڅرګنده پاتې ده، مګر دمخه په آرچ لینکس، فیډورا، SUSE کې حل شوې. په RHEL کې، زیانمنتیا په FORTIFY_SOURCE حالت کې د بسته بندۍ له امله نه پیښیږي، کوم چې د سټینګ په کارونو کې د دې ډول بفر اوور فلو مخه نیسي.

سرچینه: opennet.ru

Add a comment