Gwendid difrifol wrth weithredu'r swyddogaeth memcpy ar gyfer ARMv7 o Glibc

Ymchwilwyr Diogelwch Cisco dadorchuddio y manylion gwendidau (CVE-2020-6096) wrth weithredu'r swyddogaeth memcpy() a ddarperir gan Glibc ar gyfer y platfform ARMv32 7-did. Mae'r broblem yn cael ei achosi gan driniaeth anghywir o werthoedd negyddol y paramedr sy'n pennu maint yr ardal a gopΓ―wyd, oherwydd y defnydd o optimeiddiadau cynulliad sy'n trin cyfanrifau 32-did wedi'u llofnodi. Mae galw memcpy() ar systemau ARMv7 gyda maint negyddol yn arwain at gymharu gwerthoedd yn anghywir ac yn ysgrifennu mewn ardal y tu allan i ffiniau'r byffer penodedig.

Gellir manteisio ar y bregusrwydd i weithredu cod mewn sefyllfa lle gall yr ymosodwr drefnu ffurfio gwerth negyddol y newidyn y mae maint y data a gopΓ―wyd yn cael ei drosglwyddo trwyddo (er enghraifft, bydd yn mynd yn negyddol wrth drosglwyddo mwy na 2 GB o data, ond yn ystod yr ymosodiad, i fynd y tu hwnt i'r terfynau byffer, mae angen i chi drosglwyddo o leiaf 4GB). Defnyddir y swyddogaeth memcpy () yn eang mewn cymwysiadau, ac mae proseswyr ARMv7 yn gyffredin mewn systemau modurol, symudol, diwydiannol, defnyddwyr, cyfathrebu a dyfeisiau mewnosodedig, a allai fod yn destun ymosodiadau gan ddefnyddio Bluetooth, HD Radio / DAB, USB, bws CAN, Wi-Fi Fi a ffynonellau data allanol eraill (er enghraifft, gellir ymosod ar wasanaethau a chymwysiadau sy'n hygyrch dros y rhwydwaith sy'n derbyn data mewnbwn heb gyfyngiadau maint).

Un enghraifft yw creu ecsbloetio gweithredol i ymosod ar weinydd HTTP sydd wedi'i ymgorffori mewn systemau gwybodaeth ceir, sy'n hygyrch trwy'r rhwydwaith Wi-Fi ceir. Gallai ymosodwr allanol fanteisio ar fregusrwydd memcpy ar y gweinydd hwn trwy anfon cais GET mawr iawn a chael mynediad gwraidd i'r system.

Gwendid difrifol wrth weithredu'r swyddogaeth memcpy ar gyfer ARMv7 o Glibc

Ar systemau 32-bit x86, nid yw'r broblem yn ymddangos, gan fod gweithrediad memcpy ar gyfer y bensaernΓ―aeth hon yn dehongli'r newidyn maint yn gywir fel gwerth cyfanrif heb ei arwyddo o type size_t (mewn iaith cydosod gweithredu ar gyfer ARMv7 caiff ei drin fel cyfanrif wedi'i lofnodi yn lle size_t). Mae'r atgyweiriad ar gael ar hyn o bryd fel clwt, a fydd yn cael ei gynnwys yn y diweddariad Awst Glbc 2.32.
Mae'r atgyweiriad yn ymwneud Γ’ disodli'r defnydd o gyfarwyddiadau cydosod sy'n gweithredu ar operands wedi'u harwyddo (bge a blt) gyda chymheiriaid heb eu harwyddo (blo a bhs).

Nid yw'r broblem wedi'i datrys eto Debian 9 a 10 (ddim yn weladwy yn Debian 8), Fedora, Ubuntu, OpenEmbedded, Tizen (defnyddir gan glibc). RHEL ΠΈ SUSE Nid yw'r mater yn cael ei effeithio oherwydd nad ydynt yn cefnogi systemau ARMv32 7-bit. Nid yw Android yn cael ei effeithio gan y bregusrwydd oherwydd ei fod yn defnyddio ei weithrediad libc (Bionic) ei hun. YN OpenWRT Yn ddiofyn, mae'r rhan fwyaf o adeiladau yn defnyddio Musl, ond mae glibc hefyd ar gael yn y gadwrfa.

Ffynhonnell: opennet.ru

Ychwanegu sylw