Korrigerande versioner av programmeringssprÄket Python 3.7.10 och 3.6.13 Àr tillgÀngliga, dÀr en sÄrbarhet (CVE-2021-3177) har ÄtgÀrdats, vilket kan leda till kodexekvering vid hantering av icke kontrollerade flyttal i funktioner som anropar C-funktioner via ctypes-mekanismen. Problemet pÄverkar Àven versioner av Python 3.8 och 3.9, men uppdateringar för dessa Àr Ànnu i kandidatstatus (lansering planerad till den 1 mars).
Problemet orsakas av en buffertöverskridning i ctypes-funktionen PyCArg_repr(), som uppstĂ„r pĂ„ grund av osĂ€ker anvĂ€ndning av sprintf. Specifikt tilldelades ett statiskt buffert utrymme om 256 byte (âchar buffer[256]â) för att hantera resultatet av konverteringen âsprintf(buffer, ââ, self->tag, self->value.b)â, nĂ€r resultatet kunde överskrida detta vĂ€rde. För att kontrollera om applikationer Ă€r sĂ„rbara kan man försöka överföra vĂ€rdet â1e300â, vilket med c_double.from_param kommer att orsaka krasch eftersom det resulterande talet innehĂ„ller 308 tecken och inte fĂ„r plats i en 256-byte buffert. Exempel pĂ„ problematisk kod: import ctypes; x = ctypes.c_double.from_param(1e300); repr(x)
Problemet kvarstÄr olöst i Debian, Ubuntu och FreeBSD, men har redan ÄtgÀrdats i Arch Linux, Fedora, SUSE. I RHEL upptrÀder inte sÄrbarheten pÄ grund av paketbygge i FORTIFY_SOURCE-lÀge, vilket blockerar sÄdana buffertöverskridningar i strÀngfunktioner.
KĂ€lla: opennet.ru
