Linux ha sido durante mucho tiempo sinónimo de estabilidad y seguridad, especialmente en entornos empresariales donde la confiabilidad es esencial. Sin embargo, ni siquiera los sistemas más sólidos están exentos de vulnerabilidades ocultas.
Investigadores de seguridad han identificado una brecha crítica en el entorno de ejecución de Linux relacionada con io_uring, una interfaz moderna diseñada para optimizar las operaciones de entrada/salida del kernel. Esta debilidad permite que los rootkits se oculten con eficacia, operando bajo el radar sin ser detectados por soluciones de seguridad avanzadas.
Para demostrar la viabilidad de este vector de ataque, los investigadores desarrollaron un rootkit de prueba de concepto llamado “Curing”, que explota las estructuras internas de io_uring para mantenerse activo incluso después de eliminarse sus rastros visibles del sistema.
El hallazgo no solo compromete la integridad del sistema, sino que plantea un desafío directo a muchas de las herramientas tradicionales de detección. Comprender cómo funciona esta vulnerabilidad (y qué se puede hacer para mitigarla) se ha convertido en una prioridad urgente para administradores de sistemas y profesionales de TI comprometidos con la seguridad real de sus entornos Linux.
¿Qué es io_uring?
io_uring es una interfaz moderna introducida en 2019 en el kernel de Linux (a partir de la versión 5.1) diseñada para mejorar el rendimiento de operaciones de entrada/salida (I/O). Fue creada por Jens Axboe, desarrollador principal de block I/O en Linux, y permite que las aplicaciones realicen operaciones I/O asincrónicas sin los altos costos de contexto y bloqueo que tienen las llamadas tradicionales del sistema. Ventajas clave de io_uring:
-
Operaciones I/O más rápidas.
-
Menor uso de CPU.
-
Ideal para aplicaciones de alto rendimiento como servidores web, bases de datos y sistemas de archivos.
En lugar de usar las típicas llamadas al sistema, que suelen ser lentas y pueden frenar los procesos, io_uring hace las cosas de forma mucho más eficiente. Lo que hace es usar unos "buffers en forma de anillo" que se comparten entre el programa y el núcleo de Linux. Así, las solicitudes de entrada/salida (como leer o escribir archivos) se van poniendo en cola y se procesan de forma asíncrona, sin bloquear nada. Eso le permite al programa seguir funcionando sin interrupciones mientras el sistema se encarga del resto en segundo plano.
Pero como todo componente de bajo nivel en el kernel, si no se gestiona adecuadamente, puede convertirse en un punto de entrada crítico para ataques sofisticados.
Podría interesarte leer: Protección contra Rootkits con Wazuh
El descubrimiento del punto ciego de seguridad
El gran problema con esta vulnerabilidad en Linux es que muchas de las herramientas de seguridad actuales se enfocan en monitorear llamadas al sistema y técnicas conocidas como ptrace
o seccomp
. ¿El detalle preocupante? Todo lo que pasa por io_uring queda fuera de su radar. Es como si tuvieran un punto ciego justo donde más podrían estar ocurriendo cosas peligrosas.
Lo más alarmante es que io_uring no es una simple interfaz: admite más de 60 tipos de operaciones, desde lectura y escritura de archivos, conexiones de red, ejecución de procesos, cambios de permisos, hasta lectura de directorios. Básicamente, todo lo necesario para que un rootkit funcione sin levantar sospechas.
De hecho, el riesgo es tan real que Google decidió desactivar io_uring por defecto en Android y ChromeOS, sistemas que también se basan en el kernel de Linux. Eso ya dice bastante.
Para demostrar lo grave del asunto, se desarrolló un rootkit llamado Curing. Este pequeño programa se conecta con un servidor remoto, recibe instrucciones y las ejecuta directamente a través de io_uring, todo sin activar ninguna alerta en los sistemas de monitoreo tradicionales.
¿Y qué pasó cuando se probaron varias herramientas de seguridad conocidas? La mayoría no logró detectar absolutamente nada.
Por ejemplo:
-
Falco no vio nada, ni siquiera usando reglas personalizadas para intentar identificar el comportamiento.
-
Tetragon, bajo su configuración predeterminada, tampoco marcó nada sospechoso.
Eso sí, los responsables de Tetragon aclararon que su plataforma es flexible y que se puede configurar para detectar este tipo de ataques. También compartieron una publicación técnica interesante sobre cómo abordar el problema, aunque por defecto no ofrece esa protección.
Además, al probar herramientas de seguridad comerciales (cuyos nombres no fueron revelados), se confirmó que muchas tampoco lograron detectar la actividad maliciosa relacionada con io_uring. En resumen: si el malware no usa llamadas al sistema clásicas, la mayoría de las defensas actuales no lo ve venir.
¿La buena noticia? El rootkit Curing está disponible en GitHub, por si quieres hacer pruebas tú mismo y evaluar si tu entorno está expuesto.
Y como solución a largo plazo, se sugiere empezar a usar tecnologías como KRSI (Kernel Runtime Security Instrumentation), que permiten enganchar programas eBPF directamente a eventos del kernel relacionados con la seguridad. Esto abriría la puerta a un monitoreo mucho más completo, incluso para componentes como io_uring.