Revelouse unha técnica para explotar unha vulnerabilidade no subsistema tty do núcleo Linux

Os investigadores do equipo Google Project Zero publicaron un método para explotar unha vulnerabilidade (CVE-2020-29661) na implementación do manejador ioctl TIOCSPGRP do subsistema tty do kernel Linux, e tamén examinaron en detalle os mecanismos de protección que poderían bloquear tales problemas. vulnerabilidades.

O erro que causaba o problema corrixiuse no núcleo de Linux o 3 de decembro do ano pasado. O problema aparece nos núcleos ata a versión 5.9.13, pero a maioría das distribucións solucionaron o problema nas actualizacións dos paquetes do núcleo ofrecidos o ano pasado (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Simultáneamente atopouse unha vulnerabilidade similar (CVE-2020-29660) na implementación da chamada TIOCGSID ioctl, pero tamén xa foi corrixida en todas partes.

O problema é causado por un erro ao establecer bloqueos, o que leva a unha condición de carreira no código drivers/tty/tty_jobctrl.c, que se utilizou para crear condicións de uso despois de libre explotadas desde o espazo do usuario mediante manipulacións de ioct chamando a TIOCSPGRP. Demostrouse un exploit que funciona para a escalada de privilexios en Debian 10 co núcleo 4.19.0-13-amd64.

Ao mesmo tempo, o artigo publicado céntrase non tanto na técnica de creación dun exploit que funcione, senón máis ben en que ferramentas existen no núcleo para protexerse contra tales vulnerabilidades. A conclusión non é reconfortante; métodos como a segmentación da memoria no montón e o control do acceso á memoria despois de liberarse non se usan na práctica, xa que conducen a unha diminución do rendemento, e a protección baseada en CFI (Control Flow Integrity), que bloquea os exploits nas fases posteriores dun ataque, necesita mellorar.

Ao considerar o que marcaría a diferenza a longo prazo, destaca o uso de analizadores estáticos avanzados ou o uso de linguaxes seguras para a memoria como os dialectos Rust e C con anotacións ricas (como Checked C) para comprobar estado durante a fase de construción: bloqueos, obxectos e punteiros. Os métodos de protección tamén inclúen activar o modo panic_on_oops, cambiar as estruturas do núcleo ao modo de só lectura e restrinxir o acceso ás chamadas do sistema mediante mecanismos como seccomp.

Fonte: opennet.ru

Engadir un comentario