...isn't the usability of the tool limited because it's running in userspace, which has fewer privileges in terms of what instructions can be ran?
Sandsifter: find undocumented instructions and bugs on x86 CPU
11–20 of 94 posts
Re: Sandsifter: find undocumented instructions and bugs on x86 CPU
#12Re: Sandsifter: find undocumented instructions and bugs on x86 CPU
#13Re: Sandsifter: find undocumented instructions and bugs on x86 CPU
#14Re: Sandsifter: find undocumented instructions and bugs on x86 CPU
#15...isn't the usability of the tool limited because it's running in userspace, which has fewer privileges in terms of what instructions can be ran?
> For effective results, the injector should be able to identify instructions in more privileged rings, even if it cannot actually execute those instructions.
>This approach allows the injector to detect even privileged instructions: whereas a non-existing instruction will throw a #UD exception, a privileged instruction will throw a #GP exception if the executing process does not have the necessary permissions for the instruction. By observing the type of exception thrown, the injector can differentiate between instructions that don’t exist, versus those that exist but are restricted to more privileged rings. Thus, even from ring 3, the injector can effectively explore the instruction space of ring 0, the hypervisor, and system management mode.
Re: Sandsifter: find undocumented instructions and bugs on x86 CPU
#16There's a lot of mystery in microcode (equivalent to the CPU firmware), the "system management mode" aka protection ring -2, and the infamous management engine.
Re: Sandsifter: find undocumented instructions and bugs on x86 CPU
#17...isn't the usability of the tool limited because it's running in userspace, which has fewer privileges in terms of what instructions can be ran?
As the slides say, this approach prevents the system from falling over entirely, while still resolving instructions from deeper rings.
Re: Sandsifter: find undocumented instructions and bugs on x86 CPU
#18This is highly interesting. I assume a lot of those are going to be debug and instructions to help the binning process. Some of these might even unlock access to parts of the CPUs we aren't supposed to have access too, opening the doors to custom microcode (unlikely that anyone outside the CPU OEM can do that though) but may allow us to disable "security features" such as the Management Engine. This is a really inter…
Re: Sandsifter: find undocumented instructions and bugs on x86 CPU
#19Earlier quoted context omitted.
As the slides say, this approach prevents the system from falling over entirely, while still resolving instructions from deeper rings.
Makes sense. I was thinking if there could be a bootable fuzzer of this kind, but you're right that it would be very difficult for it to be both usable and not crash very quickly.
Re: Sandsifter: find undocumented instructions and bugs on x86 CPU
#20tl'dr of the slides: Found on one processor... instruction Single malformed instruction in ring 3 locks Tested on 2 Windows kernels, 3 Linux kernels Kernel debugging, serial I/O, interrupt analysis seem to confirm Unfortunately, not finished with responsible disclosure No details available [yet] on chip, vendor, or instructions He's found a new f00f bug, winter 2017 is going to be interesting :)
For those not aware: https://en.wikipedia.org/wiki/Pentium_F00F_bug Can these kind of bugs possible to exploit to cause anything more than minor annoyance?