Kwetsberens yn Python by it behanneljen fan net-validearre fraksjenûmers yn ctypes

Korrigearjende releases fan de Python-programmearring taal 3.7.10 en 3.6.13 binne beskikber, dy't reparearje in kwetsberens (CVE-2021-3177) dy't koe liede ta koade-útfiering by it ferwurkjen fan net-validearre driuwende puntnûmers yn handlers dy't C-funksjes neame mei it ctypes-meganisme . It probleem hat ek ynfloed op de Python 3.8 en 3.9 tûken, mar updates foar harren binne noch yn release kandidaat status (release pland foar maart 1).

It probleem wurdt feroarsake troch in buffer oerlêst yn de ctypes funksje PyCArg_repr (), dat optreedt troch ûnfeilich gebrûk fan sprintf. Benammen om it resultaat te ferwurkjen fan 'e transformaasje 'sprintf(buffer, " ", self->tag, self->value.b)' tawiisd in statyske buffer fan 256 bytes ("char buffer[256]"), wylst it resultaat dizze wearde kin oertreffe. Om de kwetsberens fan applikaasjes foar de kwetsberens te kontrolearjen, kinne jo besykje de wearde "1e300" troch te jaan, dy't, as ferwurke troch de metoade c_double.from_param, sil liede ta in crash, om't it resultearjende nûmer 308 tekens befettet en net past yn in 256-byte buffer. Foarbyld fan problematyske koade: ymportearje ctypes; x = ctypes.c_double.from_param(1e300); repr(x)

It probleem bliuwt net fêst yn Debian, Ubuntu en FreeBSD, mar is al fêst yn Arch Linux, Fedora, SUSE. Yn RHEL komt de kwetsberens net foar troch pakket gearstalling yn FORTIFY_SOURCE modus, dy't blokkearret sokke buffer oerstreamingen yn string funksjes.

Boarne: opennet.ru

Add a comment