Vulnerabilitatea în XFS care permite citirea datelor brute ale dispozitivului bloc

O vulnerabilitate (CVE-2021-4155) a fost identificată în codul sistemului de fișiere XFS care permite unui utilizator local neprivilegiat să citească datele de bloc neutilizate direct de pe un dispozitiv de blocare. Toate versiunile majore ale nucleului Linux mai vechi de 5.16 care conțin driverul XFS sunt afectate de această problemă. Remedierea a fost inclusă în versiunea 5.16, precum și în actualizările kernelului 5.15.14, 5.10.91, 5.4.171, 4.19.225 etc. Starea actualizărilor generate pentru a remedia problema în distribuții poate fi urmărită pe aceste pagini: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Vulnerabilitatea este cauzată de comportamentul incorect al a două ioctl(XFS_IOC_ALLOCSP) și ioctl(XFS_IOC_FREESP) specifice XFS, care sunt un analog funcțional al apelului de sistem fallocate() la nivelul întregului nucleu. Când crește dimensiunea unui fișier care nu este aliniat la bloc, ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP nu resetează octeții de coadă la zero până la următoarea limită a blocului. Astfel, pe XFS cu o dimensiune standard de bloc de 4096 de octeți, un atacator poate citi până la 4095 de octeți de date scrise anterioare din fiecare bloc. Aceste zone pot conține date din fișiere șterse, fișiere defragmentate și fișiere cu blocuri deduplicate.

Vă puteți testa sistemul pentru problema folosind un prototip simplu de exploatare. Dacă, după executarea secvenței propuse de comenzi, este posibil să citiți textul lui Shakespeare, atunci driverul FS este vulnerabil. Montarea inițială a unei partiții XFS pentru demonstrație necesită privilegii de root.

Deoarece ioctl(XFS_IOC_ALLOCSP) și ioctl(XFS_IOC_FREESP) sunt practic aceleași ca funcționalitate cu fallocate() standard, iar singura lor diferență este scurgerea de date, prezența lor este similară cu o ușă din spate. În ciuda politicii generale de a nu schimba interfețele existente în nucleu, la sugestia lui Linus, s-a decis eliminarea completă a acestor ioctl-uri în versiunea următoare.

Sursa: opennet.ru

Adauga un comentariu