Breaking the x86 Instruction Set
Black Hat9 HN recommenders · recommended in 8 months, 2017–2022
talk · advanced · evergreen · 2017–2022 on HN
Christopher Domas presents at Black Hat 2017 how page fault analysis and processor fuzzing can exhaustively search the x86 instruction set. The talk uncovers undocumented instructions and hardware bugs and shows limits of disassemblers.
HN recommends it as a clever, entertaining and easy-to-follow talk on finding hidden x86 instructions with the Sandsifter tool.
Up next
9 mo on HNLISA11 - Fork Yeah! The Rise and Development of illumos
USENIX
9 HN recommender · 2012–2026
2 mo on HNStanford Seminar - Generalized Reversible Computing and the Unconventional Computing Landscape
Stanford Online
2 HN recommender · 2020–2021
2 mo on HNDtrace Review
Google TechTalks
2 HN recommender · 2011–2021
5 mo on HNBryan Cantrill from Joyent on Manta: internet-facing object storage facility that features compute
AI Council
4 HN recommender · 2014–2026
3 mo on HNStanford Seminar: Beyond Floating Point: Next Generation Computer Arithmetic
Stanford Online
5 HN recommender · 2017–2021
3 mo on HNDIY mass spectrometer measures potassium in dietary salt substitute
Applied Science
3 HN recommender · 2020–2023
2 mo on HNBehind the Film - Inside the ILFORD factory
ILFORD Photo
2 HN recommender · 2020–2022
2 mo on HNThis 1970s tank simulator drives through a tiny world
Tom Scott
2 HN recommender · 2024–2025
11 mo on HNBehind the Scenes of iOS Security
Black Hat
9 HN recommender · 2016–2026
11 mo on HNWhy Electronic Voting Is Still A Bad Idea
Tom Scott
11 HN recommender · 2020–2026
10 mo on HNUSENIX Security '18-Q: Why Do Keynote Speakers Keep Suggesting That Improving Security Is Possible?
USENIX
10 HN recommender · 2018–2026
10 mo on HNDefcon 18 Changing threats to privacy Moxie Marlinspike Part
killab66661
6 HN recommender · 2012–2019
12 comments from Hacker News
I watched a super interesting Black Hat video on youtube that talked about discovering secret instructions on CPUs by iterating over each bit of opcodes until you get an illegal instruction, and thereby discovering if an opcode is valid or not. He set up a room full of PCs running his code and had hardware to auto-reset them when they crashed. ▶ this video
How about undocumented instructions? Sandsifter[1] is an interesting project and the video from BlackHat[2] is a good watch. There's also a previous discussion of it on HN[3]. [1] link [2] ▶ this video [3] link
There was an interesting black hat talk about automatically finding undocumented instructions. [0] Interesting comment on twitter to the instruction of the original post[1] [0] ▶ this video [1] link
"I thought you were saying that the use of microcode would complicate verification of the hardware." I do think that microcode opens up the possibility of subtle injections to follow code/hardware paths you might not easily predict. A really good talk on reverse engineering an ISA implementation: ▶ this video
There was a really good Blackhat talk a year or two ago in a sort of similar vein: they developed an approach to iterate and find undocumented opcodes. ▶ this video The software they developed is called Sandsifter.
Breaking the x86 Instruction Set by Christopher Domas. ▶ this video I found it easy to follow and pretty entertaining.
One of my favourite talks I watched was "Low Cost Non-Invasive Biomedical Imaging - An Open Electrical Impedance Tomography Project" link As it presented an interesting technique I'd never heard of before, along with an implementation. Also I thought the 'Breaking the x86 Instruction Set' talk was extremely clever - ▶ this video
my favorite were: - How the reputation economy is creating data-driven conformity link - DEF CON 25 (2017) - Weaponizing Machine Learning link - BlackHat 2017: Breaking the x86 Instruction Set ▶ this video
> I trust its disassembler (especially for mainstream languages) more than almost any other disassembler Might I suggest Christopher Domas' Black Hat talk "Breaking the x86 ISA", along the way of which he demonstrates the limitations of all disassemblers out there, including IDA's :) Talk: ▶ this video Slides: link Paper: link
What are the implications of such hardware on user security? Threat persistence, i.e. persistent rootkits, persistent remote monitoring if one has privs to tickle the CPU instructions that give access. It is just a matter of time before there are public tools for script kiddies to manage the OS within the CPU. Here [1] is an example of someone slowly making progress decoding all the undocumented instructions and here is a talk with a brief overview of the tools. [2] This is not specific to Intel's ME but it is the way people will eventually tame/exploit that beast in my opinion. There are more recent talks that get deeper into security rings in the CPU. This video [3] more related to your question but not specific to ME however can be used to access ME and much more. If this appears to difficult and time consuming just know that some folks out there have the documentation for the undocumented instructions. You may find some tools on github and other public repos for disabling ME. Use with care. Test on an identical model of system that is at the same firmware/BIOS and same model of CPU as those tools can brick your CPU. As @rocket_surgeron stated, one can buy CPU's with ME disabled but that will not disable the "God Mode" referenced in [3]. [1] - link [2] - ▶ this video [3] - link
I would be really interested to see how often malicious software utilized undocumented opcodes that disassemblers incorrectly interpret and thus lead a security researcher down a rabbit hole while the actual opcode does something different. Like the 66e9xxxxxxxx and 66e8xxxxxxxx opcodes in x86_64 [1] If my understanding is correct, Stuxnet incorporated bytecode for the PLCs in S7comm, a protocol that was not open at the time. Though this is different then including undocumented opcodes for the system being targeted directly. [1] ▶ this video
xoreaxeaxeax's videos about how to systematically parse the asm space of x86 really hit home to me how bad the encoding is. ▶ this video