Athari kubwa katika utekelezaji wa chaguo za kukokotoa za memcpy kwa ARMv7 kutoka Glibc

Watafiti wa Usalama wa Cisco kufunuliwa maelezo udhaifu (CVE-2020-6096) katika utekelezaji wa kitendakazi cha memcpy() kinachotolewa na Glibc kwa jukwaa la 32-bit ARMv7. Shida husababishwa na utunzaji usio sahihi wa maadili hasi ya paramu ambayo huamua saizi ya eneo lililonakiliwa, kwa sababu ya utumiaji wa uboreshaji wa kusanyiko ambao hudhibiti nambari 32-bit zilizosainiwa. Kupigia simu memcpy() kwenye mifumo ya ARMv7 yenye saizi hasi husababisha ulinganisho usio sahihi wa maadili na huandika katika eneo nje ya mipaka ya bafa iliyobainishwa.

Athari inaweza kutumika kutekeleza msimbo katika hali ambapo mshambulizi anaweza kupanga uundaji wa thamani hasi ya kigezo ambamo saizi ya data iliyonakiliwa hupitishwa (kwa mfano, itaenda hasi wakati wa kuhamisha zaidi ya GB 2 ya data, lakini wakati wa mashambulizi, kwenda zaidi ya mipaka ya buffer, unahitaji kuhamisha angalau 4GB). Kitendaji cha memcpy() kinatumika sana katika programu, na wasindikaji wa ARMv7 ni wa kawaida katika mifumo ya magari, simu, viwanda, watumiaji, mawasiliano na vifaa vilivyopachikwa, ambavyo vinaweza kushambuliwa kwa kutumia Bluetooth, HD Radio/DAB, USB, basi la CAN, Wi-Fi Fi na vyanzo vingine vya data vya nje (kwa mfano, huduma na programu zinazoweza kufikiwa kupitia mtandao zinazokubali data ya uingizaji bila vikwazo vya ukubwa zinaweza kushambuliwa).

Mfano ni uundaji wa matumizi mazuri ya kushambulia seva ya HTTP iliyojengwa ndani ya mifumo ya habari ya gari, inayopatikana kupitia mtandao wa gari wa Wi-Fi. Mshambulizi kutoka nje anaweza kutumia athari ya memcpy kwenye seva hii kwa kutuma ombi kubwa sana la GET na kupata ufikiaji wa mizizi kwenye mfumo.

Athari kubwa katika utekelezaji wa chaguo za kukokotoa za memcpy kwa ARMv7 kutoka Glibc

Kwenye mifumo ya 32-bit x86, shida haionekani, kwani utekelezaji wa memcpy wa usanifu huu hutafsiri kwa usahihi utofauti wa saizi kama nambari kamili isiyo na saini ya aina size_t (katika lugha ya kusanyiko. utekelezaji kwa ARMv7 inachukuliwa kama nambari kamili iliyotiwa saini badala ya size_t). Marekebisho kwa sasa yanapatikana kama kiraka, ambayo itajumuishwa katika sasisho la Agosti Glibc 2.32.
Marekebisho hayo yanatokana na kuchukua nafasi ya utumiaji wa maagizo ya mkusanyiko ambayo yanafanya kazi kwenye operesheni zilizotiwa saini (bge na blt) na zingine ambazo hazijasainiwa (blo na bhs).

Tatizo bado halijatatuliwa Debian 9 na 10 (haionekani katika Debian 8), Fedora, Ubuntu, OpenEmbedded, Tizen (inatumiwa na glibc). RHEL ΠΈ SUSA Tatizo halijaathiriwa kwa sababu haziauni mifumo ya 32-bit ARMv7. Android haiathiriwi na athari kwa sababu hutumia utekelezaji wake wa libc (Bionic). KATIKA OpenWRT Kwa chaguo-msingi, miundo mingi hutumia Musl, lakini glibc inapatikana pia kwenye ghala.

Chanzo: opennet.ru

Kuongeza maoni