Explication
Il existe deux types d’espace d’adresse virtuel et physique. Sur le modèle physique (généralement utilisé par le noyau) la mémoire est délimitée et chaque adresse correspond à une adresse physique.
Le virtuel est utilisé par les processus. Il n'y a pas de limite (sauf celui dû à la taille du pointeur) . Pour avoir plus de mémoire, le programme le demande simplement (en ignorant quel montant peut être demandé) . Chaque adresse est mappée sur différentes adresses physiques.
C’est ainsi que les processus sont limités dans ce qu’ils peuvent lire dans la RAM.
Le problème
Le raisonnement est que les appels système utilise ring0, mais en même temps (au moins sur linux) l'état du processus est mis à jour en interruptible, suggérant que les appels système utilisent l'espace d'adressage virtuel.
Autant que je sache, les anneaux de la CPU concernent des instructions privilégiées et non un espace d'adressage (comme il est lié à la MMU) .
Donc, si une lecture hors limites (en raison d'une vulnérabilité) se produit lors de l'exécution d'un appel système dans le code du noyau. Peut-il renvoyer de la mémoire à partir d'autres processus?
la source