Passibilitatem in Pythone cum tractantem unvalidatur numero fractorum in ctypes

Remissios emendativa Pythonis programmationis linguae 3.7.10 et 3.6.13 praesto sunt, quae vulnerabilitatem figere (CVE-2021-3177) quae ad supplicium ducere possent, cum punctorum numerorum in tractibus unvalidated dispensando nutantes, qui vocant C functiones, utentes mechanismum ctypes. . Problema etiam Pythonem 3.8 et 3.9 ramos afficit, sed updates pro eis adhuc in statu candidatorum emissiones sunt (in mense Martio emissio scheduled).

Problema causatur per quiddam redundantia in ctypes functionis PyCArg_repr(), quod accidit ob non tutum usum sprintf. Praesertim ut processus effectus mutationis "sprintf(buffer," ", self->tag, self->value.b)' collocavit quiddam staticum 256 bytes ("char quiddam[256]"), dum eventus hunc valorem excedere potuit. Ad vulnerabilitatem applicationum ad vulnerabilitatem reprimendam, experiri potes transire valorem "1e300", qui, cum processit per methodum c_double.from_param, ad fragorem ducet, quia numerus consequens numerus 308 characteribus continet et in locum non coaptantur. 256-byte quiddam. Exemplum codicis problematici: import ctypes; x = ctypes.c_double.from_param(1e300); repr(x)

Quaestio fixa manet in Debian, Ubuntu et FreeBSD, sed iam in Arch Linux, Fedora, SUSE fixa est. In RHE, vulnerabilitas non occurrit ob involucrum conventus in modo FORTIFY_SOURCE, qui tale quiddam scatet in functionibus chordis.

Source: opennet.ru