Explicación

Explicación

Explicación

Hay dos tipos de espacio de direcciones, virtual y físico. En el modelo físico(normalmente utilizado por el kernel)la memoria está limitada y cada dirección corresponde a las físicas.

El virtual es utilizado por procesos. no hay limite(excepto el que se debe al tamaño del puntero). Para obtener más memoria el programa simplemente solicítelo.(ignorando qué cantidad se puede solicitar). Cada dirección está asignada a diferentes direcciones físicas.
Así es como los procesos están restringidos en lo que pueden leer desde la RAM.

El problema

El razonamiento es que las llamadas al sistema usan ring0, pero al mismo tiempo(al menos en Linux)el estado del proceso se actualiza a interrumpible, lo que sugiere que las llamadas al sistema utilizan el espacio de direcciones virtuales.
Hasta donde tengo entendido, los anillos de CPU se tratan de instrucciones privilegiadas, no de espacio de direcciones.(ya que está relacionado con MMU).

Entonces, si una lectura fuera de límites(debido a una vulnerabilidad)ocurre durante la ejecución de una llamada al sistema en el código del kernel. ¿Puede devolver memoria de otros procesos?

Respuesta1

El código en modo kernel puede hacer prácticamente cualquier cosa que quiera, incluido espiar los espacios de direcciones de varios procesos.

Sí, el código en modo kernel utiliza espacio de direcciones virtuales. el núcleogestionaespacio de direcciones físicas pero no lo haceentrar corriendoespacio físico de direcciones.

El modo de usuario no puede leer nada de la RAM que quiera porque no tiene forma de afirmar direcciones físicas.

Dado que el modo kernel se ejecuta con la traducción de direcciones habilitada, el código del modo kernel también puede afirmar únicamente direcciones virtuales. Pero el código del modo k puede configurar entradas de la tabla de páginas para definir direcciones virtuales que se traducen a cualquier dirección física a la que desee acceder.

Respuesta2

Esas llamadas al sistema invocadas por el kernel utilizan espacio de direcciones físicas.
Esas llamadas al sistema invocadas por procesos utilizan espacio de direcciones virtuales.

información relacionada