Error del kernel de Linux abre la puerta a ciberataques más amplios

La falla de divulgación de información permite que KASLR omita y descubra vulnerabilidades adicionales sin parchear en dispositivos ARM.

Se ha descubierto una vulnerabilidad de seguridad de divulgación de información en el kernel de Linux, que puede explotarse para exponer información en la memoria de la pila del kernel de dispositivos vulnerables.

Específicamente, el error ( CVE-2020-28588 ) existe en la funcionalidad / proc / pid / syscall de dispositivos ARM de 32 bits que ejecutan Linux, según Cisco Talos, que descubrió la vulnerabilidad. Surge de una conversión incorrecta de valores numéricos al leer el archivo.

Con unos pocos comandos, los atacantes pueden generar 24 bytes de memoria de pila no inicializada, que se puede usar para evitar la aleatorización del diseño del espacio de direcciones del kernel (KASLR). KASLR es una técnica anti-exploit que coloca varios objetos al azar para evitar patrones predecibles que los adversarios pueden adivinar.

Los ataques también serían «imposibles de detectar en una red de forma remota», explicó la firma. Y, «si se utiliza correctamente, un atacante podría aprovechar esta filtración de información para explotar con éxito vulnerabilidades adicionales de Linux sin parchear».

Detalles del error del kernel

Proc es un pseudo-sistema de archivos especial en sistemas operativos similares a Unix que se utiliza para acceder dinámicamente a los datos del proceso que se encuentran en el kernel. Presenta información sobre procesos y otra información del sistema en una estructura jerárquica similar a un archivo. Por ejemplo, contiene subdirectorios / proc / [pid], cada uno de los cuales contiene archivos y subdirectorios que exponen información sobre procesos específicos, legibles mediante el uso del ID de proceso correspondiente. En el caso del archivo «syscall», es un archivo legítimo del sistema operativo Linux que contiene registros de las llamadas al sistema utilizadas por el kernel.

Un atacante podría aprovechar la vulnerabilidad leyendo / proc / <pid> / syscall. «Podemos ver la salida en cualquier sistema Linux dado cuyo kernel se configuró con CONFIG_HAVE_ARCH_TRACEHOOK», según el informe de error de Cisco , divulgado públicamente el martes.

“Este archivo expone el número de llamada al sistema y los registros de argumentos de la llamada al sistema que el proceso está ejecutando actualmente, seguidos de los valores del puntero de la pila y los registros del contador del programa”, explicó la firma. «Se exponen los valores de los seis registros de argumentos, aunque la mayoría de las llamadas al sistema utilizan menos registros».

Los comandos de shell que desencadenan la vulnerabilidad son:

  • # echo 0> / proc / sys / kernel / randomize_va_space (# solo se necesita para una salida más limpia)
  • $ mientras sea verdadero; hacer cat / proc / self / syscall; hecho | uniq (# espera cambios)
  • $ mientras sea verdadero; hacer gratis &> / dev / null; hecho (# desencadena cambios)

Actualizaciones de parches de seguridad disponibles

Los investigadores de Cisco Talos descubrieron por primera vez el problema en un dispositivo Azure Sphere (versión 20.10), un dispositivo ARM de 32 bits que ejecuta un kernel de Linux parcheado. Ha estado presente desde v5.1-rc4 del kernel.

«Se anima a los usuarios a actualizar estos productos afectados lo antes posible: versiones del kernel de Linux 5.10-rc4, 5.4.66 y 5.9.8», según el aviso. «Talos probó y confirmó que estas versiones del kernel de Linux podrían ser explotadas por esta vulnerabilidad».

Los errores del kernel de Linux son raros, pero ocurren. Por ejemplo, en octubre pasado, Google e Intel advirtieron sobre la falla de alta gravedad «BleedingTooth» en BlueZ , la pila de protocolos Bluetooth de Linux que brinda soporte para capas y protocolos centrales de Bluetooth para dispositivos de Internet de las cosas (IoT) basados ​​en Linux. Podría explotarse en un ataque de «clic cero» y potencialmente permitir privilegios escalados en los dispositivos afectados.