Vulnerabilidad de escalamiento de privilegios en Linux

Linux ha publicado una actualización de seguridad que subsana una vulnerabilidad en su kernel, que permitiría realizar un escalamiento de privilegios al usuario root.

La vulnerabilidad CVE-2022-0492 de severidad alta, sin puntuación asignada aún. Esta se debe a una falla lógica en la función kernel/cgroup/cgroup-v1.c de la funcionalidad de grupos de control (cgroups) del kernel de Linux. Linux no verificó que el proceso que configura el archivo ‎‎release_agent‎‎ tenga privilegios administrativos (capacidad ‎‎de CAP_SYS_ADMIN‎‎), permitiendo así a un atacante obtener un escalamiento de privilegios y así escapar del control aislamiento del espacio de nombres.‎

Los contenedores que se ejecutan con AppArmor o SELinux están protegidos. Dicho esto, si ejecutan contenedores sin hardening de mejores prácticas o con privilegios adicionales, puede estar en riesgo.

Prisma Cloud detecta y alerta sobre hosts que ejecutan una versión vulnerable del kernel. La plataforma también genera alertas de cumplimiento en contenedores que no están protegidos por Seccomp y en aquellos que no se ejecutan con AppArmor ni SELinux.‎

CVE-2022-0492 es la tercera ‎‎vulnerabilidad del kernel en los últimos meses‎‎ que permite que los contenedores maliciosos escapen.

El siguiente enlace enumera las configuraciones de contenedores vulnerables y proporciona instrucciones sobre cómo probar si un entorno de contenedor es vulnerable:

Recomendamos actualizar a la última versión del kernel de Linux (de su respectiva distribución). Para los casos en los que no sea posible la actualización, recomendamos implementar una de las mitigaciones expuestas en los siguientes enlaces para protección contra contenedores maliciosos:

AppArmor o SELinux:

Seccomp:

‎Adicionalmente, para protegerse contra los procesos de host malintencionados que intenten escalamiento de privilegios (en escenarios en los que la actualización no es posible) recomendamos:

1. ‎Deshabilitar los espacios de nombres de usuario sin privilegios mediante el siguiente comando:

‎‎sudo sysctl -w kernel.unprivileged_userns_clone=0‎‎

Nota: tener en cuenta que algunos servicios como ‎‎Podman‎‎ se basan en espacios de nombres de usuario sin privilegios y es posible que no funcionen según lo previsto.‎

2. Evitar que los procesos establezcan el ‎‎release_agent‎‎ en cualquier montaje de cgroup mediante el siguiente script:

#!/bin/bash

set -e

mask_dir=/var/lib/cve_2022_0492_release_agent_mask

cgroup_dir=/sys/fs/cgroup

if [ ! -z «$1» ]; then cgroup_dir=$1 ; fi

echo «[+] Creating mask at $mask_dir/mask»

sudo mkdir -p $mask_dir

sudo mount -t tmpfs release_agent_mask $mask_dir

sudo touch $mask_dir/mask

sudo mount -o remount,ro $mask_dir

for release_agent in $(find $cgroup_dir -name ‘release_agent’) ;do

echo «[+] Mounting read-only mask over $release_agent»

sudo mount –bind $mask_dir/mask $release_agent

done

Finalmente, recomendamos a los usuarios de Prisma Cloud que revisen ‎‎Compute/Monitor/Compliance‎‎ y determinen si alguno de sus contenedores se ejecuta sin Seccomp. Los usuarios también pueden optar por bloquear los contenedores que se ejecutan sin Seccomp.

Referencias:

Compartir: