Forskere fra Google Project Zero har offentliggjort en metode til udnyttelse af en sårbarhed (CVE-2020-29661) i implementeringen af ioctl-handleren TIOCSPGRP fra tty-subsystemet i Linux-kernen, samt en detaljeret gennemgang af beskyttelsesmekanismerne, der kunne blokere sådanne sårbarheder.
Den problematiske fejl blev rettet i Linux-kernen den 3. december sidste år. Problemet optræder i kerner op til version 5.9.13, men de fleste distributioner har rettet fejlen i kernelopdateringer, der blev tilbudt sidste år (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). En lignende sårbarhed (CVE-2020-29660) blev samtidig fundet i implementeringen af ioctl-kaldet TIOCGSID, men den er også allerede blevet omfattende rettet.
Problemet skyldes en fejl i låsesætningen, der fører til en raced condition i koden drivers/tty/tty_jobctrl.c, som udnyttes til at skabe forhold, hvor hukommelse tilgås efter at være frigivet (use-after-free), udnyttet fra brugerrummet via manipulation med ioctl-kaldet TIOCSPGRP. Et fungerende exploit er demonstreret for privileghethatning i Debian 10 med kernen 4.19.0-13-amd64.
Den offentliggjorte artikel lægger dog ikke så meget vægt på teknikken til at skabe et fungerende exploit, men mere på, hvilke værktøjer der findes i kernen til at beskytte mod sådanne sårbarheder. Konklusionen er ikke opmuntrende; metoder som hukommelsessegmentering i bunken og kontrol over adgang til hukommelse efter frigivelse anvendes ikke i praksis, da de nedsætter ydeevnen, og beskyttelsen baseret på CFI (Control Flow Integrity), der blokerer exploits i de senere faser af angrebet, kræver yderligere arbejdet.
Når man overvejer, hvad der kunne ændre situationen på lang sigt, fremhæves brugen af avancerede statiske analyser eller anvendelse af sprog, der sikrer sikker hukommelseshåndtering, såsom Rust og C-dialekter med udvidede annotationer (f.eks. Checked C), på byggefasen til at kontrollere låsesituationer, objekter og pegepinde. Metoder til beskyttelse nævner også aktivering af panic_on_oops-tilstand, konvertering af kernen strukturer til kun-læse modus, og begrænsning af adgang til systemopkald ved hjælp af sådanne mekanismer som seccomp.
Kilde: opennet.ru
