-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Show stacks for unpoison & poison #191
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
Comments
Reported by
|
Reported by |
Reported by |
Reported by |
This is very tricky to implement, not working on this any time soon. |
People keep asking... |
Suppose the poisoned region is at least 16 bytes. Then we can do the following: On poison: On access to poisoned memory region: On unpoison: Sadly, this doesn't work that nice for randomly overlapping poisoned/unpoisoned memory regions :( |
Uggh. We can do simpler: have a bounded FIFO that will remember all ranges ever poisoned. |
Of course, any naive global circular buffer will not work as it will be a contention point |
No further comments on https://code.google.com/p/chromium/issues/detail?id=577952 for 2 years now. Without more demand for this, we probably won't implement. |
I think there is a lot of demand and I'm surprised we don't put more effort into this. |
Currently wrestling with one such case. A backtrace indicating where the poison happened would be great! |
Hi, Just wanted to chime in here. I am using ASAN for debugging Ruby's garbage collector. We manually poison objects that get released back to the GC. It would be really great if I could get a stack trace at the time of poison on |
We've just hit this issue again. With lots of custom allocators, the reports are significantly less actionable because there is no poison stack available. From our experience, regular uaf reports have a fix rate of > 90% without steps to reproduce. For poison reports, this is significantly lower. I'm looking at one such report again now and even with steps to reproduce, it takes significantly longer to debug. It would be nice if this could be optionally turned on, esp. for debugging. |
Manual poisoning will be significantly more useful if we can get a poisoning backtrace on use-after-poison. To determine a use-after-poison in our code base, we had to resort to setting a hardware watchpoint in gdb in the shadow memory containing the poison marker to determine what was poisoning the memory - it turned out to be a thirdparty library which was poisoning it and the memory was not getting unpoisoned because we were using a custom allocator which is not intercepted by ASAN. A backtrace from ASAN would have saved us a lot of time. |
Originally reported on Google Code with ID 191
Reported by
jruderman
on 2013-06-04 19:55:33The text was updated successfully, but these errors were encountered: