Fugas silenciosas en Linux: Exfiltración de datos en entornos multiusuario

El investigador de seguridad Ionuț Cernica ha demostrado cómo atacantes sin privilegios de root o exploits de día cero pueden usar herramientas comunes de Linux para extraer datos confidenciales en entornos multiusuario. En su charla, «Fugas silenciosas: recolección de secretos de entornos Linux compartidos», explicó cómo credenciales de bases de datos, claves API y otros secretos pueden ser robados a simple vista mediante el uso de utilidades estándar como ps, el sistema de archivos /proc y el manejo de archivos temporales.

Vectores de ataque clave en el sistema de Linux

  1. Visibilidad del proceso: La transparencia de Linux permite que cualquier usuario inspeccione las líneas de comando de los procesos en ejecución a través de /proc/[pid]/cmdline y comandos como ps auxww. Aunque esto está diseñado para la depuración, también ofrece una ventaja de reconocimiento a los atacantes, permitiéndoles extraer información sensible como nombres de usuario y contraseñas de bases de datos. Cernica demostró que en plataformas de alojamiento compartido, las invocaciones de la CLI de WordPress y comandos de MySQL exponían credenciales en texto plano.
  2. Evasión de aislamiento: Muchos proveedores de alojamiento utilizan entornos aislados como chroot jails o CageFS. Sin embargo, Cernica demostró que estos sistemas pueden ser eludidos cuando los binarios privilegiados se ejecutan fuera de estos entornos restringidos. En una demostración, logró escapar de CageFS y ejecutar comandos a nivel de host al explotar un binario del panel de alojamiento y un comando no documentado en un administrador de archivos.
  3. Filtración a través de registros compartidos: Un canal de fuga sorprendente fue descubierto en los registros de errores compartidos del servidor web LiteSpeed. Al leer el archivo stderr.log global a través de /proc/self/fd/2, Cernica capturó resultados de errores de scripts de otros usuarios, incluidos tokens de autenticación y credenciales. Aunque LiteSpeed solucionó el problema, la solución podría tardar en implementarse en todos los sistemas.
  4. Directorios temporales (/tmp): Las aplicaciones a menudo escriben volcados de SQL, registros y archivos de configuración en el directorio /tmp, exponiendo brevemente secretos. Cernica creó un script que monitoreaba y extraía estos archivos en milisegundos, revelando contraseñas de Mailman y MySQL. Incluso los sistemas con acceso restringido a /proc siguen siendo vulnerables si los atacantes pueden escanear archivos legibles en /tmp.

Mitigaciones y lecciones de seguridad

Los hallazgos de Cernica resaltan que para proteger los entornos Linux compartidos se necesitan medidas más allá de las predeterminadas. Él sugiere:

  • Montar /proc con la opción hidepid o usar espacios de nombres de usuario para aislar la vista de los procesos.
  • Obtener credenciales de bóvedas seguras en lugar de usarlas en la línea de comandos.
  • Implementar archivos de registro por usuario para evitar filtraciones.
  • Aislar directorios temporales por usuario.
  • Realizar pruebas de seguridad para identificar estas fugas «silenciosas».

La investigación de Cernica es un recordatorio crucial de que, a medida que las organizaciones dependen más de las infraestructuras de Linux compartidas, las funciones más confiables del sistema pueden ser utilizadas como herramientas de reconocimiento. La seguridad no solo depende de corregir vulnerabilidades, sino también de cuestionar las suposiciones sobre cómo se interactúa con el sistema.