Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Make it possible to erase all sensitive information after function exit #1169

Open
bjorn3 opened this issue Jan 9, 2020 · 1 comment
Open
Labels
cranelift Issues related to the Cranelift code generator enhancement

Comments

@bjorn3
Copy link
Contributor

bjorn3 commented Jan 9, 2020

@sunfishcode
Copy link
Member

This probably would be pretty straightforward to implement.

That said, it's important to keep in mind the limitations of such a feature. This wouldn't prevent operating systems from paging out stack pages to persistent storage, or from saving register state during a context switch or a system suspend. It wouldn't prevent libcalls that Cranelift makes implicitly to runtime libraries or libc from leaving state in their stack frames. It wouldn't prevent a longjmp from jumping past a stack frame, or pthread_kill from killing a thread before its frames can be cleared. It wouldn't prevent hardware from keeping copies of the old values in physical registers, caches, or other microarchitectural state. And it wouldn't protect from many varieties of side-channel attacks. And there might be other limitations I haven't thought of.

@alexcrichton alexcrichton transferred this issue from bytecodealliance/cranelift Feb 28, 2020
@alexcrichton alexcrichton added the cranelift Issues related to the Cranelift code generator label Feb 28, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cranelift Issues related to the Cranelift code generator enhancement
Projects
None yet
Development

No branches or pull requests

4 participants