Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Leaking data through recursive mappings forces 4KiB pages in the hypervisor #5

Open
dancrossnyc opened this issue Oct 6, 2021 · 0 comments

Comments

@dancrossnyc
Copy link
Contributor

The recursive paging technique allows us to access entries in our page tables at fixed virtual addresses, meaning that we can manipulate virtual mappings without, e.g., a direct-offset map from physical to virtual memory. The side-loading technique allows us to access another page table similar fixed virtual addresses.

However, note that this means that Huge become Large pages, and Large pages become 4KiB pages in the recursive areas, still mapping to page data, not just page table entries: the recursive entry effectively cuts one level off of the page table walk, but since walks for Huge and Large pages terminate "early", we can still reach data.

Much of the use of design of virtual memory in Hypatia is predicated on using recursive page mappings.

Thus, for any data that we deem sensitive, we must take special care to ensure those memory regions are mapped in the hypervisor using 4KiB pages. We can still use Huge and Large pages for hypervisor text and read-only data (we we presume aren't secret, since Hypatia is open source), but we shouldn't use them for anything else.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant