Në USB Gadget, nën-sistemi i kernelit Linux, që ofron një ndërfaqe programore për krijimin e pajisjeve USB kliente dhe simulimin programatik të pajisjeve USB, është zbuluar një vulnerabilitet (CVE-2021-39685) që mund të çojë në rrjedhje informacioni nga kernel, dështim ose ekzekutim të kodit të arbitr për nivelin e kernelit. Sulmi kryhet nga një përdorues lokal pa privilegje përmes manipulimeve me klasat e ndryshme të pajisjeve, të implementuara mbi API-në e USB Gadget, si rndis, hid, uac1, uac1_legacy dhe uac2.
Problemi është zgjidhur në azhurnimet e sapo-publikura të kernelit Linux 5.15.8, 5.10.85, 5.4.165, 4.19.221, 4.14.258, 4.9.293 dhe 4.4.295. Në distro, problemi ende mbetet i pazgjidhur (Debian, Ubuntu, RHEL, SUSE, Fedora, Arch). Një prototip eksploitues është përgatitur për të demonstruar vulnerabilitetin.
Problemi shkaktohet nga mbushja e tepërt e buffers në trajtuesit e kërkesave për transferim të të dhënave në drejtuesit e gadgeteve rndis, hid, uac1, uac1_legacy dhe uac2. Si pasojë e shfrytëzimit të vulnerabilitetit, një sulmues pa privilegje mund të fitojë akses në memorien e kernelit duke dërguar një kërkesë të veçantë kontrolluese me vlerën e fushës wLength që tejkalon madhësinë e buffers statik, për të cilin gjithmonë rezervohen 4096 byte (USB_COMP_EP0_BUFSIZ). Gjatë sulmit, është e mundur që të lexohen ose shkruhen deri në 65 KB të dhënash në memorien e kernelit nga një proces pa privilegje në hapësirën e përdoruesit.
Burimi: opennet.ru
