Kriitiline haavatavus memcpy funktsiooni rakenduses ARMv7 Glibc koostises.

Turvauuringute ekspert Cisco ettevõttest avalikustas üksikasjad haavatavusest (CVE-2020-6096) Glibc funktsiooni memcpy() rakenduses 32-bitisel ARMv7 platvormil. Probleem tuleneb parameetri negatiivsete väärtuste vale käitlemise tõttu, mis määrab kopeeritava ala suuruse, seoses assembleri optimeerimistega, mis manipuleerivad 32-bitiste allkirjastatud täisarvudega. memcpy() kutsumine ARMv7 süsteemides negatiivse suurusega põhjustab vale väärtuste võrdlemise ja kirjutamise väljaspool määratud puhvri piire.

Haavatavust saab ära kasutada koodi täitmiseks olukordades, kus ründaja suudab organiseerida muutujate negatiivsete väärtuste genereerimise, mille kaudu edastatakse kopeeritavate andmete suurus (näiteks lähevad negatiivseks, kui edastatakse rohkem kui 2 GB andmeid, kuid rünnaku käigus, et viia bufri piirist üle, tuleb edastada vähemalt 4 GB). Funktsiooni memcpy() kasutatakse laialdaselt rakendustes ning ARMv7 protsessorid on levinud autotööstuses, mobiilses, tööstuslikus, tarbijate, side- ja sisseehitatud seadmetes, mis võivad potentsiaalselt saada Bluetoothi, HD Radio/DAB, USB, CAN buss, Wi-Fi ja muude väliste andmeallikate (näiteks võivad rünnakuobjektideks olla võrgus ligipääsetavad teenused ja rakendused, mis võtavad sisendeid ilma suuruse piiranguteta) rünnakute sihtmärgiks.

Näidisena tuuakse välja töö эксплоита loomine rünnakuks auto info- ja meelelahutussüsteemide http-serverile, mis on ligipääsetav auto Wi-Fi võrgu kaudu. Kolmas isik saab ära kasutada serveris olevaid haavatavusi memcpy kaudu, edastades väga suure GET-päringu ning teenides endale root-juurdepääsu süsteemile.

Kriitiline haavatavus memcpy funktsiooni rakenduses ARMv7 Glibc koostises.

32-bitistel x86 süsteemidel probleem ei ilmne, kuna memcpy teostus selle arhitektuuri jaoks interpreteerib mõõtmuutuja õigesti kui märketa täisarv suuruse tüübiga size_t (asm keeles kirjutatud). rakenduste ARMv7 puhul töödeldakse seda signed integerina). Parandus on hetkel saadaval kujul, patšmis kuulub augustis ilmuvasse Glibc 2.32 uuendusse.
Parandus seisneb assembleri käskude asendamises, mis töötavad märgiga operandide (bge ja blt) asemele märketa analoogidega (blo ja bhs).

Probleem ei ole veel lahendatud Debian 9 ja 10 (Debian 8-s ei ilmne), Fedora, Ubuntu, OpenEmbedded, Tizen (kasutatakse glibc). RHEL ja SUSE probleem ei mõjuta, kuna nad ei toeta 32-bitiseid ARMv7 süsteeme. Android ei ole haavatav, kuna kasutab oma libc (Bionic) rakendust. V OpenWRT vaikimisi enamikus kooslustes kasutatakse Musli, kuid hoidlas on ka glibc.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster