Ir al contenido principal
BlogSeguridadLinode Boletín de seguridad del 7 al 14 de marzo de 2022

Resumen de seguridad de Linode del 7 al 14 de marzo de 2022

Linode Security Digest

Esta semana, hablaremos de las vulnerabilidades de alta gravedad en el kernel de Linux.

Dirty Pipe - Escalada de privilegios local de Linux

CVE-2022-0847 permite a un usuario de Linux sin privilegios sobrescribir cualquier archivo arbitrario de sólo lectura. Un usuario podría aprovechar esta vulnerabilidad inyectando código en procesos root y escalar sus privilegios hasta convertirse en usuario root. 

Al igual que la omnipresente vulnerabilidad "DirtyCow", un atacante puede ejecutar el exploit Dirty Pipe y escribir texto en un archivo. Lo que hace que Dirty Pipe sea un fallo más fácil de explotar es que un usuario puede escribir texto en cualquier archivo arbitrario y, en algunos casos, puede escalar privilegios fácilmente a través de binarios SUID

Causa de la vulnerabilidad- La vulnerabilidad Dirty Pipe es causada por una variable pipe_buffer.flags no inicializada. Las tuberías son herramientas utilizadas para la comunicación entre procesos, un extremo empuja los datos a él mientras que el otro extremo puede tirar de esos datos. Un commit hizo que los búferes de tubería no inicializados sean una vulnerabilidad de alta gravedad. Al inyectar PIPE_BUF_FLAG_CAN_MERGE en una referencia de caché de página, es posible sobrescribir datos en la caché de página, simplemente escribiendo nuevos datos en la tubería preparada de forma especial.

Hay algunas advertencias sobre esta vulnerabilidad: 

  • El atacante debe tener permisos de lectura para el archivo
  • El desplazamiento no debe estar en un límite de página 
  • La escritura no puede cruzar un límite de página 
  • El archivo no puede ser redimensionado 

Actualmente, no existen mitigaciones para esta vulnerabilidad. Si estás en una versión del kernel de Linux superior a la 5.8, el proveedor recomienda parchear a las siguientes versiones: 5.16.11, 5.15.25 y 5.10.102.

Actualizado el 14 de marzo de 2022: Está disponible el último kernel Linode , que corrige Dirty Pipe.

Escape de contenedores mediante cgroups

Los grupos de control, o cgroups, son una característica del kernel de Linux que asigna y adjudica el uso de recursos informáticos a los procesos. En algunos casos, estos procesos se organizan en grupos jerárquicos en los que la asignación de recursos se basa en el grupo.

Los Cgroups se utilizan comúnmente en los contenedores de Linux porque hay múltiples procesos que se ejecutan en un contenedor que necesitan ser agrupados. 

CVE-2022-0492 es una vulnerabilidad de escape del contenedor en la que un usuario puede escapar del contenedor y pivotar a la máquina anfitriona. Esto solo afecta a la arquitectura cgroup v1

Causa de la vulnerabilidad - La vulnerabilidad involucra al archivo release_agent, que es una característica de cgroups v1. El archivo release_agent permite a los administradores configurar un "agente de liberación" que se ejecuta cuando un proceso en el cgroup termina. El release_agent sólo es visible en el directorio del cgroup raíz y afecta a todos sus cgroups hijos. Cada vez que un proceso muere, el kernel comprueba si su notifiy_on_release está habilitado, y si lo está, entonces generará el binario release_agent configurado. El escape del contenedor ocurre porque Linux no comprobó si el proceso que configura el archivo release_agent tiene privilegios administrativos (por ejemplo, la capacidad CAP_SYS_ADMIN ). 

Esta vulnerabilidad se puede mitigar haciendo lo siguiente:

  • Activación de los perfiles de seguridad de AppArmor, SELinux o Seccomp 
  • Desactivar los espacios de nombres de los usuarios sin privilegios si no es necesario
  • Ejecutar el contenedor como un usuario sin privilegios

Los investigadores de seguridad de Palo Alto han creado una prueba para determinar si su entorno de contenedores es vulnerable a CVE-2022-0492:

Hay algunas advertencias detrás de esta vulnerabilidad. Para poder explotar con éxito esta vulnerabilidad es necesario cumplir las siguientes condiciones para que la explotación sea exitosa: 

  • Un contenedor necesita ser ejecutado como un usuario con privilegios (root o un usuario con la bandera no_new_privs )
  • AppArmor, SELinux o Seccomp deben estar desactivados
  • El host necesita habilitar los espacios de nombres de los usuarios sin privilegios
  • Un contenedor tendrá que estar en un cgroup v1 raíz 

Escalada de privilegios local de Netfilter a través de una escritura fuera de los límites de la pila

Netfilter es un marco de trabajo del kernel de Linux que permite realizar varias operaciones relacionadas con la red. Permite el filtrado de paquetes, la traducción de direcciones de red (y puertos), el registro de paquetes y la puesta en cola de paquetes en el espacio de usuario. También puede construir cortafuegos de Internet basados en el filtrado de paquetes sin estado y con estado. 

CVE-2022-25636, es una vulnerabilidad en la que un usuario local puede realizar una escritura fuera de límites en la función nft_fwd_dup_netdev_offload (nf_dup_netdev.c) y ganar privilegios. Esta vulnerabilidad afecta actualmente a las versiones del kernel 5.4-rc1 hasta la 5.6.10. 

Causa raíz - En la función nft_fwd_dup_netdev_offload, ctx->num_actions++ se utiliza para compensar en la matriz flow->rule->action.entries(nf_dup_netdev.c:67) cuando se configuran reglas de flujo dup o fwd en una cadena con la descarga de hardware habilitada. El desajuste se produce entre el número que se llama al incremento y el número de entradas asignadas. El tamaño de la matriz asignada se basa en el número de expresiones nftables que tienen expr.offload_flags&NFT_OFFLOAD_F_ACTION(nf_tables_offload.c:97), pero sólo el tipo de expresión inmediata tiene esto (no dup o fwd). Esta discrepancia permite a alguien crear una regla con expresiones dup/fwd sin una inmediata correspondiente/precedente, lo que lleva a un array de entradas de tamaño insuficiente, y a un número arbitrario de escrituras en el array fuera de los límites. Alguien podría escribir un script y realizar una escritura OOB que puede convertirse en un ROP del Kernel / escalada de privilegios locales.

Se recomienda parchear el kernel a la última versión. 


Comentarios

Dejar una respuesta

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *.