Se ha identificado una vulnerabilidad en el código del subsistema iSCSI del núcleo de Linux (CVE-2021-27365) que permite a un usuario local no privilegiado ejecutar código a nivel de núcleo y obtener privilegios de root en el sistema. Se dispone de un prototipo funcional del exploit para realizar pruebas. La vulnerabilidad ha sido corregida en las actualizaciones del núcleo 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 de paquetes con el núcleo están disponibles en las distribuciones Debian, Ubuntu, SUSE/openSUSE, Arch Linux y Fedora. Para RHEL, las correcciones aún no han sido publicadas.
El problema es causado por 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 adecuadas de tamaño, algunos atributos de cadena de iSCSI, como hostname o username, pueden superar el valor de PAGE_SIZE (4 KB). La vulnerabilidad puede ser explotada mediante el envío de mensajes Netlink por un usuario no privilegiado, estableciendo los atributos de iSCSI en valores que exceden PAGE_SIZE. Al leer estos datos de atributos a través de sysfs o seqfs, se invoca un código que pasa los atributos a la función sprintf para copiarlos en un búfer de tamaño PAGE_SIZE.
La explotación de la vulnerabilidad en las distribuciones depende del soporte de carga automática del módulo del núcleo scsi_transport_iscsi al intentar crear un socket NETLINK_ISCSI. En las distribuciones donde este módulo se carga automáticamente, el ataque puede llevarse a cabo independientemente del uso de la funcionalidad iSCSI. Para aplicar con éxito el exploit, también se requiere registrar al menos un transporte iSCSI. A su vez, para registrar el transporte, se puede utilizar el módulo del núcleo ib_iser, que se carga automáticamente al intentar crear un socket NETLINK_RDMA por un usuario no privilegiado.
La carga automática de los módulos necesarios para la explotación es compatible con CentOS 8, RHEL 8 y Fedora al instalar en el sistema el paquete rdma-core, que es una dependencia para algunos paquetes populares y que se instala por defecto en las configuraciones para estaciones de trabajo, sistemas de servidor con GUI y entornos de virtualización. Sin embargo, rdma-core no se instala al usar la versión del servidor que funciona solo en modo consola, y si 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 propensos a este problema, ya que el paquete rdma-core carga los módulos del kernel necesarios para el ataque solo si hay hardware RDMA disponible.

Como una solución alternativa a la protección, se puede prohibir la carga automática del módulo libiscsi: echo "install libiscsi /bin/true" >> /etc/modprobe.d/disable-libiscsi.conf
Además, se han corregido otras dos vulnerabilidades menos críticas en el subsistema iSCSI que podrían conducir a la fuga de datos desde el kernel: CVE-2021-27363 (fuga de información sobre el descriptor de transporte iSCSI a través de sysfs) y CVE-2021-27364 (lectura desde fuera de los límites del búfer). Estas vulnerabilidades pueden ser utilizadas para interactuar a través del socket netlink con el subsistema iSCSI sin tener los privilegios necesarios. Por ejemplo, un usuario no privilegiado puede conectarse a iSCSI y enviar el comando "end a session" para romper la sesión.
Fuente: opennet.ru
