Vulnerabilidades de seguridad recientes del núcleo de Linux
Se han encontrado varias vulnerabilidades de seguridad en el kernel de Linux de gravedad media a alta. Este artículo examina varias vulnerabilidades descubiertas y explora la eficacia de los parches en vivo del kernel como estrategia de mitigación de estas vulnerabilidades.
Puntuación de gravedad alta
Se descubrió una vulnerabilidad "use after free" en la función prepare_to_relocate dentro de fs/brtfs/relocation.c del sistema de archivos btrfs. Este fallo surge cuando se invoca la función brtfs_ioctl_balance() antes de llamar a btrfs_ioctl_defrag().
Se ha encontrado una vulnerabilidad en el código de registro de búferes fijos del kernel de Linux en el componente io_uring (io_sqe_buffer_register en io_uring/rsrc/c). Como resultado, se produce un acceso fuera de límites a la memoria física más allá del final de los búferes, lo que conduce a una escalada de privilegios local completa.
Se ha descubierto una vulnerabilidad en el subsistema de red del kernel Linx relacionada con el manejo del protocolo RPL. Esta falla surge debido a una falta de manejo apropiado de los datos suministrados por el usuario, lo que potencialmente resulta en una falla de aserción. Un atacante remoto no autenticado tiene la capacidad de causar una condición de denegación de servicio en el sistema vulnerable en caso de explotación.
Se ha encontrado una vulnerabilidad relacionada con el subsistema ntfs3 en el kernel de Linux anterior a la versión 6.2. Como el subsistema ntfs3 no comprobaba adecuadamente la corrección durante las lecturas de disco, podía provocar una lectura fuera de los límites en ntfs_set_ea in fs/ntfs3/xattr.c
.
Puntuación de gravedad media
Se ha encontrado una referencia de punto nulo en el kernel de Linux f2fs_write_end_io
en fs/f2fs/data.c
que podría permitir a un usuario local causar un problema de denegación de servicio.
Se ha descubierto una vulnerabilidad en la implementación de sockets HCI del kernel de Linux debido a una comprobación de capacidad omitida en net/bluetooth/hci_sock.c. Un atacante puede utilizar este fallo para ejecutar comandos de gestión no autorizados.
En las versiones de 64 bits del núcleo Linux, Copy_from_user
no utiliza el __uaccess_begin_nospec
que permite a los usuarios saltarse la comprobación "access_ok" y pasar un puntero del kernel a copy_from_user()
. Por lo tanto, un atacante puede explotar esta vulnerabilidad para filtrar información sensible.
Se descubrió una vulnerabilidad de uso después de libre en el sistema de archivos ext4 del kernel de Linux, específicamente en cómo se maneja el tamaño extra del inodo para atributos extendidos. Un usuario local puede utilizar este fallo para provocar un bloqueo del sistema u otros comportamientos indefinidos.
Un archivo af_netrom.c en el directorio net/netrom/
contiene una vulnerabilidad use-after-free, donde la operación accept también está permitida para un socket AF_NETROM conectado con éxito. Sin embargo, para que un atacante explote esta vulnerabilidad, el sistema debe tener configurado el enrutamiento netrom o el atacante debe poseer la capacidad CAP_NET_ADMIN.
Se ha descubierto una vulnerabilidad use-after-free en hfsplus_put_super del kernel de Linux en fs/hfsplus/super.c. Así, un usuario local puede utilizar este fallo para provocar también un problema de denegación de servicio.
Live Patching como solución para la seguridad del núcleo de Linux
En conclusión, es crucial parchear estas vulnerabilidades para proteger su sistema de ataques DoS y fugas de información sensible. Una solución que facilita el despliegue automatizado de parches es KernelCare Enterprise. Le permite aplicar parches de seguridad sin necesidad de reiniciar el sistema ni sufrir interrupciones operativas, y puede desplegarlos en cuanto estén disponibles.
KernelCare Enterprise es compatible con la aplicación de parches en vivo para varias distribuciones populares de Linux, como Debian, RHEL, Ubuntu, CentOS, AlmaLinux y Raspberry PI OS.
Para más información sobre cómo funciona la aplicación de parches en directo, consulte esta guía.
Las fuentes de este artículo incluyen un artículo de stack.watch.