Programeri mobilnog operativnog sistema AuroraOS (vilica operativnog sistema Sailfish, koju je razvila kompanija Open Mobile Platform) je podijelio ispravak za ranjivost koje su otkrili u memcpy. Uklanjanje kritične ranjivosti (CVE-2020-6096) Glibc, koji se manifestira samo na ARMv7 platformi.
Informacije o ranjivosti otkrivene su u maju, ali do posljednjih nekoliko dana ispravci nisu bili dostupni, iako je ranjivosti dodijeljen visok nivo opasnosti i postoji radni prototip eksploatacije koji omogućava organizaciju izvršavanja koda.
Eksploatacija pripremljena djeluje tijekom obrade u funkcijama memcpy () i memmove () za određene formatirane podatke.
Važnost Glibca je u tome što ova biblioteka definira sistemske pozive i druge osnovne funkcije, pored toga što ih koriste gotovo svi programi.
O problemu
Očitovana ranjivost u implementaciji memcpy () i memmove () na asemblerskom jeziku za ARMv7 a uzrokovana je nepravilnom obradom negativnih vrijednosti parametra koji određuje veličinu područja.
Počeli su problemi s razvojem zakrpa kada su SUSE i Red Hat objavili da njihove platforme nisu pogođene zbog problema, jer se nisu kompajlirali za 7-bitne ARMv32 sisteme i nisu sudjelovali u kreiranju zakrpe.
Programeri mnogih ugrađenih distribucija očito su vjerovali Glibc timu, a također nisu aktivno sudjelovali u pripremi zakrpe.
Rešenja
Huawei je ponudio opciju za flaster da odmah blokira problem, koja je pokušala zamijeniti asemblerske upute koje djeluju na potpisane operande (bge i blt) s nepotpisanim analogima (blo i bhs).
Održavači Glibca razvili su testni paket za testiranje različitih uslova za pojavu greške, nakon što se pokazalo da Huaweijeva zakrpa ne odgovara i ne obrađuje sve moguće kombinacije ulaznih podataka.
Od tada AuroraOS ima 32-bitnu verziju za ARM, tvoje programeri su odlučili sami zatvoriti ranjivost i predložiti rješenje zajednici.
Teškoća je bila u tome što je bilo potrebno napisati efikasnu implementaciju asembler funkcije i razmotrite nekoliko opcija za ulazne argumente.
Implementacija je prepisana koristeći nepotpisane upute. Ispostavilo se da je zakrpa mala, ali glavno pitanje bilo je održavanje brzine izvršavanja i uklanjanje pogoršanja performansi iz memcpy i memmove funkcija, uz održavanje kompatibilnosti sa svim kombinacijama ulaznih vrijednosti.
Početkom juna pripremljena su dva rješenja, prolazak Glibcovog okvira za testiranje održavanja i Aurorine interne pakete za testiranje. 3. juna izabrana je i predata jedna od opcija na Glibc mailing listu.
Tjedan dana kasnije, predložen je još jedan sličan pristup, koji je riješio problem u multiarch implementaciji, što je Huawei ranije pokušao riješiti. Mjesec dana je trebalo testiranje i legalizaciju s obzirom na važnost zakrpe.
8. jula popravci su prihvaćeni u glavnoj grani nadolazećeg izdanja glibc 2.32. Aplikacija uključuje dvije zakrpe:
- Prva za Multiarch aplikaciju za uspostavljanje memorije za ARMv7
- Druga za uobičajenu implementaciju asemblera memcpy () i memmove () za ARM.
Problem pogađa milione ARMv7 Linux uređaja i bez odgovarajućeg ažuriranja, vlasnici riskiraju da ih povežu s mrežom (usluge i aplikacije dostupne na mreži koje prihvaćaju unos bez ograničenja veličine mogu biti napadnute).
Na primjer, pripremljeni exploit istraživači koji Otkrivena ranjivost pokazuje kako napasti http server integriran u informativni sistem automobila prenošenjem vrlo velikog GET zahtjeva i dobivanjem root pristupa sistemu.
Paketna rješenja za Debian i Ubuntu još nisu objavljena y ranjivost ostaje neispravljena gotovo dva mjeseca od trenutka javnog objavljivanja i pet mjeseci od trenutka kada su programeri Glibc-a bili obaviješteni.