Kritika vundebleco en la efektivigo de la memcpy-funkcio por ARMv7 de Glibc

Esploristoj pri Sekurecaj Cisco malkovrita la detaloj vundeblecoj (CVE-2020-6096) en la efektivigo de la Glibc-provizita memcpy () funkcio por la 32-bita ARMv7-platformo. La problemo estas kaŭzita de malĝusta uzado de negativaj valoroj de la parametro, kiu determinas la grandecon de la kopiita areo, pro la uzo de asembleaj optimumoj, kiuj manipulas signitajn 32-bitajn entjerojn. Voki memcpy () sur ARMv7-sistemoj kun negativa grandeco rezultigas malĝustan komparon de valoroj kaj skribas en areo ekster la limoj de la specifita bufro.

La vundebleco povas esti ekspluatata por ekzekuti kodon en situacio kie la atakanto povas organizi la formadon de negativa valoro de la variablo tra kiu la grandeco de la kopiitaj datumoj estas transdonita (ekzemple, ĝi estos negativa kiam transdono de pli ol 2 GB de datumoj, sed dum la atako, por iri preter la bufrolimoj, vi devas translokigi almenaŭ 4GB). La memcpy() funkcio estas vaste uzata en aplikoj, kaj ARMv7-procesoroj estas oftaj en aŭtaj sistemoj, poŝtelefonaj, industriaj, konsumantoj, komunikadoj kaj enkonstruitaj aparatoj, kiuj eble estas submetataj al atakoj per Bluetooth, HD Radio/DAB, USB, CAN-buso, Wi-Fi Fi kaj aliaj eksteraj datumfontoj (ekzemple, servoj kaj aplikoj alireblaj tra la reto, kiuj akceptas enigajn datumojn sen grandecaj limigoj, povas esti atakitaj).

Ekzemplo estas la kreado de funkcianta ekspluato por ataki HTTP-servilon konstruitan en aŭtajn informsistemojn, alireblajn per la aŭtomobila WiFi-reto. Ekstera atakanto povus ekspluati memcpy-vunereblecon sur ĉi tiu servilo sendante tre grandan GET-peton kaj akiri radikan aliron al la sistemo.

Kritika vundebleco en la efektivigo de la memcpy-funkcio por ARMv7 de Glibc

Sur 32-bitaj x86-sistemoj, la problemo ne aperas, ĉar la memcpy-efektivigo por ĉi tiu arkitekturo ĝuste interpretas la grandvariablon kiel sensigna entjera valoro de tipo size_t (en asembla lingvo efektivigo por ARMv7 ĝi estas traktata kiel signita entjero anstataŭ size_t). La riparo estas nuntempe havebla kiel flikaĵo, kiu estos inkluzivita en la ĝisdatigo de aŭgusto Glibc 2.32.
La riparo konsistas en anstataŭigi la uzon de asembleaj instrukcioj kiuj funkcias sur subskribitaj operandoj (bge kaj blt) kun nesubskribitaj ekvivalentoj (blo kaj bhs).

La problemo ankoraŭ ne estis solvita Debian 9 kaj 10 (ne videbla en Debian 8), Fedora, ubuntu, OpenEmbedded, Tizen (uzata de glibc). RELO и SUSE La problemo ne estas tuŝita ĉar ili ne subtenas 32-bitajn ARMv7-sistemojn. Android ne estas tuŝita de la vundebleco ĉar ĝi uzas sian propran efektivigon de libc (Bionic). EN OpenWRT Defaŭlte, plej multaj konstruaĵoj uzas Musl, sed glibc ankaŭ haveblas en la deponejo.

fonto: opennet.ru

Aldoni komenton