DynamoRIO / DynamoRIO/dynamorio
The JIT should not trace through the vsyscall page on x86-64
- Dominant language
- C
- Stars
- 3.2k
- Forks
- 629
- Avg merge
- 2d 18h
- Merged PRs (30d)
- 30
Description
_From [aml...@gmail.com](https://code.google.com/u/117315860241161471469/) on August 05, 2011 16:49:33_
Current versions of Linus' tree replace the native code in the vsyscall page with trap instructions. DynamoRIO tries to instrument them and dies like this:
illegal int 0xcc (exploit attempt?) ip:775ee850 cs:33 sp:7fffe74d5f78 ax:ffffffffff600000 si:7fffe74d5fd0 di:7fffe74d5fa0
The fix is straightforward: rather than tracing through code with a negative address, just call it.
(This would be a good fix to make even if we end up changing the kernel to work around this problem. Calls to 0xffffffffff600000 are magic according to ancient kernel ABI, and user code should not make any assumptions about how they are implemented.)
_Original issue: http://code.google.com/p/dynamorio/issues/detail?id=530_
Contributor guide
Research direction
Start by locating the x86-64 tracing logic that handles the vsyscall page and the call path for addresses such as 0xffffffffff600000. Reproduce the illegal int 0xcc failure on a Linux system, then verify that negative-address vsyscall code is called rather than traced or instrumented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, linux
- Domain
- devtools, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100