Vulnerabilidades no subsistema eBPF do núcleo Linux

Identificouse unha vulnerabilidade (CVE-2021-29154) no subsistema eBPF, que permite executar controladores para o rastrexo, a análise do funcionamento dos subsistemas e a xestión do tráfico, executados dentro do núcleo de Linux nunha máquina virtual especial con JIT, o que permite un usuario local para lograr a execución do seu código a nivel do núcleo. O problema aparece ata o lanzamento de 5.11.12 (inclusive) e aínda non se solucionou nas distribucións (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). A corrección está dispoñible como parche.

Segundo os investigadores que identificaron a vulnerabilidade, puideron desenvolver un prototipo funcional do exploit para sistemas x32 de 64 e 86 bits, que pode ser usado por un usuario sen privilexios. Non obstante, Red Hat sinala que a gravidade do problema depende de se o usuario pode acceder á chamada ao sistema eBPF. Por exemplo, en RHEL e na maioría das outras distribucións de Linux na configuración predeterminada, a vulnerabilidade pódese explotar se BPF JIT está activado e o usuario ten dereitos CAP_SYS_ADMIN. Como solución alternativa, recoméndase desactivar BPF JIT usando o comando: echo 0 > /proc/sys/net/core/bpf_jit_enable

O problema é causado por un erro ao calcular a compensación das instrucións de rama durante o proceso de xeración de código máquina do compilador JIT. En particular, á hora de xerar instrucións de rama, non se ten en conta que a compensación pode cambiar despois de pasar pola fase de optimización. Este fallo pódese usar para xerar código de máquina anómalo e executalo a nivel do núcleo.

Cabe destacar que esta non é a única vulnerabilidade do subsistema eBPF recentemente. A finais de marzo identificáronse dúas vulnerabilidades máis no núcleo (CVE-2020-27170, CVE-2020-27171), que permiten utilizar eBPF para evitar a protección contra vulnerabilidades da clase Spectre, que permiten determinar o contido da memoria do núcleo. como consecuencia da creación de condicións para a execución especulativa de determinadas operacións . O ataque Spectre require a presenza dunha determinada secuencia de comandos en código privilexiado que leva á execución especulativa de instrucións. En eBPF, atopáronse varias formas de xerar tales instrucións mediante manipulacións con programas BPF transmitidos para a súa execución.

A vulnerabilidade CVE-2020-27170 é causada pola manipulación do punteiro no verificador BPF que fai que as operacións especulativas accedan a unha área fóra dos límites do búfer. A vulnerabilidade CVE-2020-27171 débese a un erro de desbordamento de número enteiro ao traballar con punteiros, o que leva a un acceso especulativo a datos fóra do búfer. Estes problemas xa foron solucionados nas versións do núcleo 5.11.8, 5.10.25, 5.4.107, 4.19.182 e 4.14.227, e tamén se incluíron nas actualizacións do núcleo para a maioría das distribucións de Linux. Os investigadores prepararon un prototipo de exploit que permite a un usuario sen privilexios extraer datos da memoria do núcleo.

Fonte: opennet.ru

Engadir un comentario