Nëna e sigurisë nga Cisco detajet () në implementimin e ofruar në funksionin memcpy() të Glibc për platformën 32-bit ARMv7. Problemi shkaktohet nga përpunimi i gabuar i vlerave negative të parametrave që përcaktojnë përmasën e zonës së kopjimit, për shkak të përdorimit të optimizimeve asambleje që manipulojnë numrat e plotë 32-bit me shenjë. Thirrja memcpy() në sistemet ARMv7 me një madhësi negative shkakton krahasim të gabuar të vlerave dhe shkruan në zona jashtë kufijve të tamponit të caktuar.
Vulnerabiliteti mund të shfrytëzohet për të ekzekutuar kod në situatën kur një sulmues mund të organizojë formimin e një vlerë negative për një variabël, përmes së cilës përcaktohet madhësia e të dhënave të kopjuara (për shembull, ndodhi dhe kalimi në minus do të jetë kur dërgoni më shumë se 2 GB të dhënash, por gjatë sulmit, për të dalë jashtë kufijve të tamponit, duhet të dërgoni të paktën 4 GB). Funksioni memcpy() përdoret gjerësisht në aplikacione dhe procesorët ARMv7 janë të zakonshëm në sistemet automobilistike, të mobiljeve, industriale, konsumatorëve, komunikimit dhe pajisjeve të integruara, të cilat potencialisht mund të bëhen objekte të sulmeve që përdorin Bluetooth, HD Radio/DAB, USB, CAN bus, Wi-Fi dhe burime të tjera të dhënash të jashtme (për shembull, shërbimet dhe aplikacionet e aksesueshme përmes rrjetit që pranojnë të dhëna pa kufizime të madhësisë mund të sulmohen).
Si një shembull, merret krijimi i një eksploituesi funksional për sulmin ndaj serverit http të integruar në sistemet informacionit automobilistik, të aksesueshëm përmes rrjetit Wi-Fi të automobilit. Një sulmues i huaj mund të shfrytëzojë e metën në memcpy në këtë server duke dërguar një kërkesë GET me një madhësi shumë të madhe dhe të fitojë akses root në sistem.
Në sistemet 32-bit x86, problemi nuk manifestohet, pasi implementimi i memcpy për këtë arkitekturë interpreton siç duhet variablën me përmasa si një vlerë të plotë pa shenjë me tipin size_t (në asamblien e shkruar për ARMv7, në vend të size_t ajo përpunsohet si numër i plotë me shenjë). Një riparim është në dispozicion për momentin në formën e , i cili do të hyjë në përditësimin e gushtit të Glibc 2.32.
Riparimi konsiston në zëvendësimin e përdorimit të instrukcioneve asambleje që punojnë me operand me shenjë (bge dhe blt) me analoge pa shenjë (blo dhe bhs).
Problemi ende nuk është zgjidhur në (në Debian 8 nuk manifestohet), , , OpenEmbedded, Tizen (përdor glibc). dhe problemi nuk e preku, pasi ata nuk mbështesin sistemet 32-bit ARMv7. Android nuk është i ndjeshëm ndaj kësaj vulnerabiliteti, pasi përdor një implementim të vetin libc (Bionic). Në si parazgjedhje në shumicën e ndërtimëve përdoret Musl, por në depo është në dispozicion edhe glibc.
Burimi: opennet.ru
