เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเปƒเบ™ Python เป€เบกเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบ•เบปเบงเป€เบฅเบเป€เบชเบ”เบชเปˆเบงเบ™เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปƒเบ™ ctypes

ะ”ะพัั‚ัƒะฟะฝั‹ ะบะพั€ั€ะตะบั‚ะธั€ัƒัŽั‰ะธะต ะฒั‹ะฟัƒัะบะธ ัะทั‹ะบะฐ ะฟั€ะพะณั€ะฐะผะผะธั€ะพะฒะฐะฝะธั Python 3.7.10 ะธ 3.6.13, ะฒ ะบะพั‚ะพั€ั‹ั… ัƒัั‚ั€ะฐะฝะตะฝะฐ ัƒัะทะฒะธะผะพัั‚ัŒ (CVE-2021-3177), ัะฟะพัะพะฑะฝะฐั ะฟั€ะธะฒะตัั‚ะธ ะบ ะธัะฟะพะปะฝะตะฝะธัŽ ะบะพะดะฐ ะฟั€ะธ ะพะฑั€ะฐะฑะพั‚ะบะต ะฝะตะฟั€ะพะฒะตั€ะตะฝะฝั‹ั… ั‡ะธัะตะป ั ะฟะปะฐะฒะฐัŽั‰ะตะน ะทะฐะฟัั‚ะพะน ะฒ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะฐั…, ะฒั‹ะทั‹ะฒะฐัŽั‰ะธั… ั„ัƒะฝะบั†ะธะธ ะฝะฐ ัะทั‹ะบะต ะกะธ ะฟั€ะธ ะฟะพะผะพั‰ะธ ะผะตั…ะฐะฝะธะทะผะฐ ctypes. ะŸั€ะพะฑะปะตะผะฐ ั‚ะฐะบะถะต ะทะฐั‚ั€ะฐะณะธะฒะฐะตั‚ ะฒะตั‚ะบะธ Python 3.8 ะธ 3.9, ะฝะพ ะพะฑะฝะพะฒะปะตะฝะธั ะดะปั ะฝะธั… ะฟะพะบะฐ ะฝะฐั…ะพะดัั‚ัั ะฒ ัะพัั‚ะพัะฝะธะธ ะบะฐะฝะดะธะดะฐั‚ะฐ ะฒ ั€ะตะปะธะทั‹ (ั€ะตะปะธะท ะทะฐะฟะปะฐะฝะธั€ะพะฒะฐะฝ ะฝะฐ 1 ะผะฐั€ั‚ะฐ).

ะŸั€ะพะฑะปะตะผะฐ ะฒั‹ะทะฒะฐะฝะฐ ะฟะตั€ะตะฟะพะปะฝะตะฝะธะตะผ ะฑัƒั„ะตั€ะฐ ะฒ ctypes-ั„ัƒะฝะบั†ะธะธ PyCArg_repr(), ะฒะพะทะฝะธะบะฐัŽั‰ะตะผ ะธะท-ะทะฐ ะฝะตะฑะตะทะพะฟะฐัะฝะพะณะพ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั sprintf. ะ’ ั‡ะฐัั‚ะฝะพัั‚ะธ, ะฝะฐ ะพะฑั€ะฐะฑะพั‚ะบัƒ ั€ะตะทัƒะปัŒั‚ะฐั‚ะฐ ะฒั‹ะฟะพะปะฝะตะฝะธั ะฟั€ะตะพะฑั€ะฐะทะพะฒะฐะฝะธั โ€˜sprintf(buffer, ยซ<cparam โ€˜%cโ€™ (%d)>ยป, self->tag, self->value.b)โ€™ ะฒั‹ะดะตะปัะปัั ัั‚ะฐั‚ะธั‡ะตัะบะธะน ะฑัƒั„ะตั€ ั€ะฐะทะผะตั€ะพะผ 256 ะฑะฐะนั‚ (ยซchar buffer[256]ยป), ะฒ ั‚ะพ ะฒั€ะตะผั ะบะฐะบ ั€ะตะทัƒะปัŒั‚ะฐั‚ ะผะพะณ ะฟั€ะตะฒั‹ัˆะฐั‚ัŒ ะดะฐะฝะฝะพะต ะทะฝะฐั‡ะตะฝะธะต. ะ”ะปั ะฟั€ะพะฒะตั€ะบะธ ะฟะพะดะฒะตั€ะถะตะฝะฝะพัั‚ะธ ะฟั€ะธะปะพะถะตะฝะธะน ัƒัะทะฒะธะผะพัั‚ะธ ะผะพะถะฝะพ ะฟะพะฟั€ะพะฑะพะฒะฐั‚ัŒ ะฟะตั€ะตะดะฐั‚ัŒ ะทะฝะฐั‡ะตะฝะธะต ยซ1e300ยป, ะบะพั‚ะพั€ะพะต ะฟั€ะธ ะพะฑั€ะฐะฑะพั‚ะบะต ะผะตั‚ะพะดะพะผ c_double.from_param ะฟั€ะธะฒะตะดั‘ั‚ ะบ ะบั€ะฐั…ัƒ, ั‚ะฐะบ ะบะฐะบ ั€ะตะทัƒะปัŒั‚ะธั€ัƒัŽั‰ะธะต ั‡ะธัะปะพ ัะพะดะตั€ะถะธั‚ 308 ะทะฝะฐะบะพะฒ ะธ ะฝะต ัƒะผะตั‰ะฐะตั‚ัั ะฒ 256-ะฑะฐะนั‚ะฝั‹ะน ะฑัƒั„ะตั€. ะŸั€ะธะผะตั€ ะฟั€ะพะฑะปะตะผะฝะพะณะพ ะบะพะดะฐ: import ctypes; x = ctypes.c_double.from_param(1e300); repr(x)

ะŸั€ะพะฑะปะตะผะฐ ะพัั‚ะฐั‘ั‚ัั ะฝะตะธัะฟั€ะฐะฒะปะตะฝะฝะพะน ะฒ Debian, Ubuntu ะธ FreeBSD, ะฝะพ ัƒะถะต ัƒัั‚ั€ะฐะฝะตะฝะฐ ะฒ Arch Linux, Fedora, SUSE. ะ’ RHEL ัƒัะทะฒะธะผะพัั‚ัŒ ะฝะต ะฟั€ะพัะฒะปัะตั‚ัั ะธะท-ะทะฐ ัะฑะพั€ะบะธ ะฟะฐะบะตั‚ะพะฒ ะฒ ั€ะตะถะธะผะต FORTIFY_SOURCE, ะฑะปะพะบะธั€ัƒัŽั‰ะตะผ ะฟะพะดะพะฑะฝั‹ะต ะฟะตั€ะตะฟะพะปะฝะตะฝะธั ะฑัƒั„ะตั€ะฐ ะฒ ัั‚ั€ะพะบะพะฒั‹ั… ั„ัƒะฝะบั†ะธัั….

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™