When running this proof of concept program for exploiting CVE-2018-8120 by unamer (https://github.com/unamer/CVE-2018-8120/tree/master/x64/Release) on my windows 7 x64 machine with null page protection disabled my machine gives me a 0x50 bugcheck. When I was debugging the code I noticed it miraculously works everytime, so I assumed that "the code is running too fast when I use it without my debugger". I pinpointed when the program allocates the null page and placed a cpuid after it to serialize the program, and now it works flawlessly without crashing my system.
My question is why is this the case? Is it really out of order execution accessing the null page before it's allocated? If so why is this allowed to happen? I'd think this sort of design would produce erroneous results far too often to be allowed to exist.