A fost dezvăluită o tehnică pentru exploatarea unei vulnerabilități în subsistemul tty al nucleului Linux

Cercetătorii echipei Google Project Zero au publicat o metodă de exploatare a unei vulnerabilități (CVE-2020-29661) în implementarea handler-ului TIOCSPGRP ioctl din subsistemul tty al nucleului Linux și, de asemenea, au examinat în detaliu mecanismele de protecție care ar putea bloca astfel de vulnerabilități.

Eroarea care a cauzat problema a fost remediată în nucleul Linux pe 3 decembrie anul trecut. Problema apare în nuclee până la versiunea 5.9.13, dar majoritatea distribuțiilor au remediat problema în actualizările pachetelor de kernel oferite anul trecut (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). O vulnerabilitate similară (CVE-2020-29660) a fost găsită simultan în implementarea apelului TIOCGSID ioctl, dar a fost deja rezolvată peste tot.

Problema este cauzată de o eroare la setarea blocărilor, ducând la o condiție de cursă în codul drivers/tty/tty_jobctrl.c, care a fost folosit pentru a crea condiții de utilizare după liberă exploatate din spațiul utilizatorului prin manipulări ioct. apelarea TIOCSPGRP. A fost demonstrată o exploatare funcțională pentru escaladarea privilegiilor pe Debian 10 cu nucleul 4.19.0-13-amd64.

În același timp, articolul publicat se concentrează nu atât pe tehnica de creare a unui exploit de lucru, cât mai degrabă pe ce instrumente există în nucleu pentru a proteja împotriva unor astfel de vulnerabilități. Concluzia nu este reconfortantă; metode precum segmentarea memoriei în heap și controlul accesului la memorie după ce aceasta este eliberată nu sunt folosite în practică, deoarece duc la o scădere a performanței și protecția bazată pe CFI (Control Flow Integrity), care blochează exploatările în etapele ulterioare ale unui atac, necesită îmbunătățiri.

Când luăm în considerare ceea ce ar face diferența pe termen lung, unul care iese în evidență este utilizarea de analizoare statice avansate sau utilizarea de limbi sigure pentru memorie, cum ar fi dialectele Rust și C cu adnotări bogate (cum ar fi Checked C) pentru a verifica stare în timpul fazei de construire.lacăre, obiecte și pointere. Metodele de protecție includ, de asemenea, activarea modului panic_on_oops, comutarea structurilor kernelului în modul numai citire și restricționarea accesului la apelurile de sistem folosind mecanisme precum seccomp.

Sursa: opennet.ru

Adauga un comentariu