Kërkuesit nga ekipi Google Project Zero publikuan një metodë eksploitimi të dobësisë (CVE-2020-29661) në implementimin e trajtuesit ioctl TIOCSPGRP nga nën-sistemi tty i bërthamës Linux, duke shqyrtuar gjithashtu mekanizmat e mbrojtjes që mund të parandalonin këso dobësish.
Problemi për shkak të gabimit u eliminua në bërthamën Linux më 3 dhjetor të vitit të kaluar. Problemi shfaqet në bërthama deri në versionin 5.9.13, por shumica e distribucioneve e kanë zgjidhur këtë ngjarje në azhurnimet e pakove të bërthamës të propozume që nga viti i kaluar (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Një dobësi e ngjashme (CVE-2020-29660) u gjet gjithashtu në implementimin e thirrjes ioctl TIOCGSID, por ajo gjithashtu është eliminuar gjerësisht.
Problemi është shkaktuar nga një gabim në vendosjen e bllokimeve, që çon në një gjendje garash në kodin drivers/tty/tty_jobctrl.c, e cila u shfrytëzua për të krijuar kushte të aksesit në memorie pas çlirimit të saj (use-after-free), të shfrytëzuar nga hapësira e përdoruesit nëpërmjet manipulimeve me thirrjen ioctl TIOCSPGRP. Një eksploitat punues është demonstruar për përmirësimin e privilegjeve në Debian 10 me bërthamën 4.19.0-13-amd64.
Në artikullin e publikuar, theksi nuk vihet aq shumë në teknikën e krijimit të një eksploiti punues, sa në të çfarë mjete ekzistojnë në bërthamë për të mbrojtur nga këto dobësi. Konkluzionet nuk janë të ngrohta; metodat si segmentimi i memories në heap dhe kontrolli mbi qasjen në memorie pas çlirimit të saj nuk aplikohen në praktikë, pasi çojnë në uljen e performancës, ndërsa mbrojtja e bazuar në CFI (Control Flow Integrity), e cila bllokon eksploitat në fazat e vona të sulmit, kërkon përmirësime.
Duke shqyrtuar se çfarë mund të ndryshonte situatën në një perspektivë afatgjatë, theksohet përdorimi i analizatorëve të avancuar statikë ose përdorimi i gjuhëve që sigurojnë një punë të sigurt me memorien, si Rust dhe dialektet e gjuhës C me anotacione të zgjeruara (p.sh., Checked C), në fazën e ndërtimit për të verifikuar gjendjen e bllokimeve, objekteve dhe treguesve. Metodat e mbrojtjes përfshijnë gjithashtu aktivizimin e mënyrës panic_on_oops, kalimin e strukturave të bërthamës në mënyrë vetëm për lexim dhe kufizimin e qasjes në thirrjet sistemike përmes mekanizmave si seccomp.
Burimi: opennet.ru
