Linus Torvalds elimina dos funciones inseguras que llevaban décadas en el kernel de Linux y utiliza IA para ayudar en el proceso.

Estimada Comunidad Remth 2.0:

A pesar de que Linux es un ecosistema de código abierto en el que la comunidad participa activamente en su desarrollo y corrección, detrás del kernel existe una extensa comunidad de desarrolladores que trabaja para mantener su estabilidad, seguridad y evolución. Como cualquier proyecto de enorme complejidad, el kernel de Linux también contiene código heredado y funciones que con el tiempo pueden quedar obsoletas o resultar inseguras.

Durante el desarrollo de Linux 7.4, Linus Torvalds ha integrado la retirada de dos antiguas funciones: __get_user() y__put_user(). Estas funciones se utilizaban para transferir datos sencillos entre el espacio de usuario y el kernel, pero no comprobaban por sí mismas si la dirección de memoria proporcionada estaba dentro del rango permitido para el usuario, lo que podía provocar problemas de seguridad cuando eran utilizadas incorrectamente.

Es importante hacer aquí una distinción: las funciones eliminadas son __get_user() y __put_user(), con doble guion bajo. No debemos confundirlas con get_user() yput_user(), que continúan siendo mecanismos válidos para realizar transferencias de valores sencillos incorporando las comprobaciones correspondientes. La retirada se ha completado para x86/x86_64, aunque existen particularidades en otras arquitecturas.

Imagen de un estudio de programacion trabajando en el KERNEL de LINUX / COPILOT

¿Qué hacen get_user() y put_user() en Linux?

get_user() permite que el kernel lea un valor sencillo almacenado en la memoria de una aplicación. Se utiliza para transferir información desde el espacio de usuario hacia el espacio del kernel. Puede trabajar con datos simples y proporciona el mecanismo apropiado para acceder a información proporcionada por una aplicación.

En pocas palabras:

get_user() → espacio de usuario → kernel

Por el contrario, put_user() permite escribir un valor desde el kernel en la memoria perteneciente al espacio de usuario. Es decir, realiza la transferencia en dirección contraria.

put_user() → kernel → espacio de usuario

La diferencia fundamental con las antiguas __get_user() y __put_user() está en la seguridad. Estas variantes históricas no verificaban por sí mismas el rango de direcciones de memoria del usuario, razón por la cual Linus Torvalds las consideraba obsoletas e inseguras cuando se utilizaban incorrectamente.

La IA como herramienta para modificar el kernel

Otro punto especialmente interesante es que Linus Torvalds utilizó IA como ayuda durante este trabajo. En concreto, explicó que estaba utilizando Claude como una especie de versión avanzada de Coccinelle, una herramienta empleada para análisis estático y transformaciones del código fuente. [

Esto muestra una forma muy interesante de utilizar la Inteligencia Artificial en programación: como herramienta de apoyo para realizar transformaciones de código bajo la supervisión de un desarrollador que entiende lo que se está modificando. No significa dejar el desarrollo del kernel en manos de la IA, sino aprovecharla para ayudar en determinadas tareas dentro de un proceso controlado por personas.

Y aquí vuelvo a una idea que considero fundamental: la IA es una herramienta, no una panacea capaz de hacerlo todo por sí sola. El conocimiento, la supervisión y el criterio humano siguen siendo esenciales, especialmente cuando hablamos de un proyecto tan crítico y complejo como el kernel de Linux.

Siempre a su servicio.

Fuente de información: SoftZone.

Puntos clave

  1. No se han eliminado get_user() y put_user(), sino __get_user() y __put_user().
  2. Las variantes antiguas no validaban por sí mismas el rango de direcciones de usuario, lo que podía generar riesgos de seguridad.
  3. Su eliminación forma parte del desarrollo de Linux 7.4 y completa la retirada de esta interfaz en x86/x86_64.
  4. Linus Torvalds utilizó IA como herramienta de apoyo en este trabajo de transformación del código.  
  5. La supervisión y el conocimiento humano siguen siendo fundamentales cuando la IA se utiliza para trabajar con código crítico.