S'ha revelat una tècnica per explotar una vulnerabilitat al subsistema tty del nucli Linux

Els investigadors de l'equip Google Project Zero van publicar un mètode per explotar una vulnerabilitat (CVE-2020-29661) en la implementació del controlador ioctl TIOCSPGRP del subsistema tty del nucli de Linux, i també van examinar en detall els mecanismes de protecció que podrien bloquejar aquest tipus de vulnerabilitat. vulnerabilitats.

L'error que causava el problema es va solucionar al nucli Linux el 3 de desembre de l'any passat. El problema apareix als nuclis fins a la versió 5.9.13, però la majoria de distribucions han solucionat el problema en les actualitzacions dels paquets del nucli que es van oferir l'any passat (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Una vulnerabilitat similar (CVE-2020-29660) es va trobar simultàniament en la implementació de la crida TIOCGSID ioctl, però també s'ha solucionat a tot arreu.

El problema és causat per un error en establir bloquejos, que va provocar una condició de carrera al codi drivers/tty/tty_jobctrl.c, que es va utilitzar per crear condicions d'ús després de lliure explotades des de l'espai de l'usuari mitjançant manipulacions ioct cridant a TIOCSPGRP. S'ha demostrat un exploit que funciona per a l'escalada de privilegis a Debian 10 amb el nucli 4.19.0-13-amd64.

Al mateix temps, l'article publicat no se centra tant en la tècnica de creació d'un exploit de treball, sinó en quines eines existeixen al nucli per protegir-se d'aquestes vulnerabilitats. La conclusió no és reconfortant; mètodes com la segmentació de la memòria al munt i el control de l'accés a la memòria després d'alliberar-la no s'utilitzen a la pràctica, ja que condueixen a una disminució del rendiment, i la protecció basada en CFI (Control Flow Integrity), que bloqueja les explotacions en les etapes posteriors d'un atac, necessita millora.

A l'hora de considerar què marcaria la diferència a llarg termini, un que destaca és l'ús d'analitzadors estàtics avançats o l'ús de llenguatges segurs per a la memòria com els dialectes Rust i C amb anotacions riques (com Checked C) per comprovar estat durant la fase de construcció: bloquejos, objectes i punters. Els mètodes de protecció també inclouen activar el mode panic_on_oops, canviar les estructures del nucli al mode de només lectura i restringir l'accés a les trucades del sistema mitjançant mecanismes com seccomp.

Font: opennet.ru

Afegeix comentari