ctypes рдордзреНрдпреЗ рдЕрдкреНрд░рдорд╛рдгрд┐рдд рдЕрдВрд╢рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рд╣рд╛рддрд╛рд│рддрд╛рдирд╛ Python рдордзреНрдпреЗ рднреЗрджреНрдпрддрд╛

рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓рдБрдЧреНрд╡реЗрдЬ 3.7.10 рдЖрдгрд┐ 3.6.13 рдЪреЗ рд╕реБрдзрд╛рд░рд╛рддреНрдордХ рдкреНрд░рдХрд╛рд╢рди рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗрдд, рдЬреЗ рдЕрд╕реБрд░рдХреНрд╖рд╛ (CVE-2021-3177) рджреБрд░реБрд╕реНрдд рдХрд░рддрд╛рдд рдЬреНрдпрд╛рдореБрд│реЗ ctypes рдореЗрдХреЕрдирд┐рдЭрдо рд╡рд╛рдкрд░реВрди C рдлрдВрдХреНрд╢рдиреНрд╕ рдХреЙрд▓ рдХрд░рдгрд╛рд▒реНрдпрд╛ рд╣рдБрдбрд▓рд░реНрд╕рдордзреНрдпреЗ рдЕрдкреНрд░рдорд╛рдгрд┐рдд рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдирдВрдмрд░рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛рдирд╛ рдХреЛрдбрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╣реЛрдК рд╢рдХрддреЗ. . рд╕рдорд╕реНрдпрд╛ Python 3.8 рдЖрдгрд┐ 3.9 рд╢рд╛рдЦрд╛рдВрдирд╛ рджреЗрдЦреАрд▓ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ, рдкрд░рдВрддреБ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рдЕрджреНрдпрддрдиреЗ рдЕрджреНрдпрд╛рдк рд░рд┐рд▓реАрдЭ рдЙрдореЗрджрд╡рд╛рд░ рд╕реНрдерд┐рддреАрдд рдЖрд╣реЗрдд (1 рдорд╛рд░реНрдЪ рд░реЛрдЬреА рд░рд┐рд▓реАрдЬ рд╢реЗрдбреНрдпреВрд▓ рдХреЗрд▓реЗрд▓реЗ).

рд╕рдорд╕реНрдпрд╛ ctypes рдлрдВрдХреНрд╢рди PyCArg_repr() рдордзреНрдпреЗ рдмрдлрд░ рдУрд╡реНрд╣рд░рдлреНрд▓реЛрдореБрд│реЗ рдЙрджреНрднрд╡рддреЗ, рдЬреА sprintf рдЪреНрдпрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд╛рдкрд░рд╛рдореБрд│реЗ рдЙрджреНрднрд╡рддреЗ. рд╡рд┐рд╢реЗрд╖рддрдГ, рдкрд░рд┐рд╡рд░реНрддрдирд╛рдЪреНрдпрд╛ рдкрд░рд┐рдгрд╛рдорд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА 'sprintf(рдмрдлрд░, " ", self->tag, self->value.b)' рдиреЗ 256 рдмрд╛рдЗрдЯреНрд╕ ("рдЪрд╛рд░ рдмрдлрд░[256]") рдЪреЗ рд╕реНрдерд┐рд░ рдмрдлрд░ рд╡рд╛рдЯрдк рдХреЗрд▓реЗ, рддрд░ рдкрд░рд┐рдгрд╛рдо рдпрд╛ рдореВрд▓реНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЕрд╕реВ рд╢рдХрддреЛ. рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреА рднреЗрджреНрдпрддрд╛ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА тАЬ1e300тАЭ рдореВрд▓реНрдп рдкрд╛рд╕ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВ рд╢рдХрддрд╛, рдЬреНрдпрд╛рд╡рд░ c_double.from_param рдкрджреНрдзрддреАрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реНрдпрд╛рд╡рд░ рдХреНрд░реЕрд╢ рд╣реЛрдИрд▓, рдХрд╛рд░рдг рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдЦреНрдпреЗрдордзреНрдпреЗ 308 рд╡рд░реНрдг рдЖрд╣реЗрдд рдЖрдгрд┐ рддреНрдпрд╛рдд рдмрд╕рдд рдирд╛рд╣реАрдд. 256-рдмрд╛рдЗрдЯ рдмрдлрд░. рд╕рдорд╕реНрдпрд╛рдкреНрд░рдзрд╛рди рдХреЛрдбрдЪреЗ рдЙрджрд╛рд╣рд░рдг: рдЖрдпрд╛рдд рдкреНрд░рдХрд╛рд░; x = ctypes.c_double.from_param(1e300); repr(x)

рдбреЗрдмрд┐рдпрди, рдЙрдмрдВрдЯреВ рдЖрдгрд┐ рдлреНрд░реАрдмреАрдПрд╕рдбреАрдордзреНрдпреЗ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛рдпрдо рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЖрд░реНрдХ рд▓рд┐рдирдХреНрд╕, рдлреЗрдбреЛрд░рд╛, SUSE рдордзреНрдпреЗ рдЖрдзреАрдЪ рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ. RHEL рдордзреНрдпреЗ, FORTIFY_SOURCE рдореЛрдбрдордзреНрдпреЗ рдкреЕрдХреЗрдЬ рдЕрд╕реЗрдВрдмреНрд▓реАрдореБрд│реЗ рднреЗрджреНрдпрддрд╛ рдЙрджреНрднрд╡рдд рдирд╛рд╣реА, рдЬреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ рдЕрд╢рд╛ рдмрдлрд░ рдУрд╡реНрд╣рд░рдлреНрд▓реЛрд▓рд╛ рдмреНрд▓реЙрдХ рдХрд░рддреЗ.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛