Vulnerabilidad en el subsistema iSCSI del kernel de Linux que permite escalar sus privilegios

Se ha identificado una vulnerabilidad (CVE-2021-27365) en el código del subsistema iSCSI del kernel de Linux, que permite a un usuario local sin privilegios ejecutar código a nivel del kernel y obtener privilegios de root en el sistema. Un prototipo funcional del exploit está disponible para pruebas. La vulnerabilidad se solucionó en las actualizaciones del kernel de Linux 5.11.4, 5.10.21, 5.4.103, 4.19.179, 4.14.224, 4.9.260 y 4.4.260. Las actualizaciones del paquete del kernel están disponibles en las distribuciones Debian, Ubuntu, SUSE/openSUSE, Arch Linux y Fedora. Aún no se han publicado correcciones para RHEL.

El problema se debe a un error en la función iscsi_host_get_param() del módulo libiscsi, introducido en 2006 durante el desarrollo del subsistema iSCSI. Debido a la falta de comprobaciones de tamaño adecuadas, algunos atributos de cadena iSCSI, como el nombre de host o el nombre de usuario, pueden exceder el valor PAGE_SIZE (4 KB). La vulnerabilidad puede ser explotada por un usuario sin privilegios que envíe mensajes Netlink que establezcan atributos iSCSI en valores mayores que PAGE_SIZE. Cuando estos atributos se leen a través de sysfs o seqfs, se llama al código que pasa los atributos a la función sprintf para copiarlos en un búfer cuyo tamaño es PAGE_SIZE.

La explotación de la vulnerabilidad en las distribuciones depende de la compatibilidad con la carga automática del módulo del kernel scsi_transport_iscsi al intentar crear un socket NETLINK_ISCSI. En distribuciones donde este módulo se carga automáticamente, el ataque se puede realizar independientemente del uso de la funcionalidad iSCSI. Al mismo tiempo, para utilizar con éxito el exploit, también se requiere el registro de al menos un transporte iSCSI. A su vez, para registrar un transporte, puede utilizar el módulo del kernel ib_iser, que se carga automáticamente cuando un usuario sin privilegios intenta crear un socket NETLINK_RDMA.

La carga automática de módulos necesarios para la aplicación de exploit es compatible con CentOS 8, RHEL 8 y Fedora al instalar el paquete rdma-core en el sistema, que es una dependencia de algunos paquetes populares y se instala de forma predeterminada en configuraciones para estaciones de trabajo, sistemas de servidor con Virtualización de entornos GUI y host. Sin embargo, rdma-core no se instala cuando se utiliza un ensamblaje de servidor que funciona solo en modo consola y cuando se instala una imagen de instalación mínima. Por ejemplo, el paquete está incluido en la distribución base de Fedora 31 Workstation, pero no está incluido en Fedora 31 Server. Debian y Ubuntu son menos susceptibles al problema porque el paquete rdma-core carga los módulos del kernel necesarios para el ataque sólo si hay hardware RDMA presente.

Vulnerabilidad en el subsistema iSCSI del kernel de Linux que permite escalar sus privilegios

Como solución alternativa de seguridad, puede desactivar la carga automática del módulo libiscsi: echo “install libiscsi /bin/true” >> /etc/modprobe.d/disable-libiscsi.conf

Además, en el subsistema iSCSI se han solucionado dos vulnerabilidades menos peligrosas que podrían provocar una fuga de datos del kernel: CVE-2021-27363 (fuga de información del descriptor de transporte iSCSI a través de sysfs) y CVE-2021-27364 (búfer fuera de límites). leer). Estas vulnerabilidades se pueden utilizar para comunicarse a través de un socket netlink con el subsistema iSCSI sin los privilegios necesarios. Por ejemplo, un usuario sin privilegios podría conectarse a iSCSI y emitir el comando "finalizar una sesión" para finalizar la sesión.

Fuente: opennet.ru

Añadir un comentario