Researcher Finds A Hidden 'God Mode' on Some Old x86 CPUs (tomshardware.com)
"Some x86 CPUs have hidden backdoors that let you seize root by sending a command to an undocumented RISC core that manages the main CPU," Tom's Hardware reports, citing a presentation by security researcher Christopher Domas at the Black Hat Briefings conference in Las Vegas.
The command -- ".byte 0x0f, 0x3f" in Linux -- "isn't supposed to exist, doesn't have a name, and gives you root right away," Domas said, adding that he calls it "God Mode." The backdoor completely breaks the protection-ring model of operating-system security, in which the OS kernel runs in ring 0, device drivers run in rings 1 and 2, and user applications and interfaces ("userland") run in ring 3, furthest from the kernel and with the least privileges. To put it simply, Domas' God Mode takes you from the outermost to the innermost ring in four bytes. "We have direct ring 3 to ring 0 hardware privilege escalation," Domas said. "This has never been done.... It's a secret, co-located core buried alongside the x86 chip. It has unrestricted access to the x86."
The good news is that, as far as Domas knows, this backdoor exists only on VIA C3 Nehemiah chips made in 2003 and used in embedded systems and thin clients. The bad news is that it's entirely possible that such hidden backdoors exist on many other chipsets. "These black boxes that we're trusting are things that we have no way to look into," he said. "These backdoors probably exist elsewhere." Domas discovered the backdoor, which exists on VIA C3 Nehemiah chips made in 2003, by combing through filed patents.
"Some of the VIA C3 x86 processors have God Mode enabled by default," Domas adds. "You can reach it from userland. Antivirus software, ASLR and all the other security mitigations are useless."
The good news is that, as far as Domas knows, this backdoor exists only on VIA C3 Nehemiah chips made in 2003 and used in embedded systems and thin clients. The bad news is that it's entirely possible that such hidden backdoors exist on many other chipsets. "These black boxes that we're trusting are things that we have no way to look into," he said. "These backdoors probably exist elsewhere." Domas discovered the backdoor, which exists on VIA C3 Nehemiah chips made in 2003, by combing through filed patents.
"Some of the VIA C3 x86 processors have God Mode enabled by default," Domas adds. "You can reach it from userland. Antivirus software, ASLR and all the other security mitigations are useless."
Is the separate RISC core actually on the silicon or just in the patent? Time to get out the fuming sulfuric acid.
Ok, this IS always a bad thing for the typical end user, but I can see two rwal-world use cases:
* For debugging. In this case, the customer wants the fearure. For the general case, there are better, safer ways of debugging, but there nay be cases where this is preferable.
* Espionage, in which case tge real customer - your aversary - wants the feature.
Beyond this, there isn't much point.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
You're right, it was part of the debuging core, which is present on most current cisc, risc and mips cpu's.
It could be disabled by sending a four byte sequence to the cpu during bootup, mostly done when the bios was in control, though it was better to leave it in and have an easy backdoor for when the pebkac.
greetings !
and
switch
son of God and Mary
Doesn't that make God a rapist?
From the datasheet itself:
ALTERNATE INSTRUCTION EXECUTION
When set to 1, the ALTINST bit in the FCR enables execution of an alternate (not x86) instruction set. While setting this FCR bit is a privileged operation, executing the alternate instructions can be done from any protection level.
This alternate instruction set includes an extended set of integer, MMX, floating-point, and 3DNow! instructions along with additional registers and some more powerful instruction forms over the x86 instruction architecture. For example, in the alternate instruction set, privileged functions can be used from any protection level, memory descriptor checking can be bypassed, and many x86 exceptions such as alignment check can be bypassed. This alternate instruction set is intended for testing, debug, and special application usage. Accordingly, it is not documented for general usage. If you have a justified need for access to these instructions, contact your VIA representative.
The mechanism for initiating execution of this alternate set of instructions is as follows:
1. Set the FCR ALTINST bit to 1 using WRMSR instruction (this is a privileged instruction). This should be done using a read-modify-write sequence to preserve the values of other FCR bits.
2. The ALTINST bit enables execution of a new x86 jump instruction that starts execution of alter- nate instructions. This new jump instruction can be executed from any privilege level at any time that ALTINST is 1. The new jump instruction is a two-byte instruction: 0x0F3F. If ALTINST is 0, the execution of 0x0F3F causes an Invalid Instruction exception.
3. When executed, the new 0x0F3F x86 instruction causes a near branch to CS:EAX. That is, the branch function is the same as the existing x86 instruction
jmp [eax]
In addition to the branch, the 0x0F3F instruction sets the processor into an internal mode where the target bytes are not interpreted as x86 instructions but rather as alternate instruction set instructions.
4. The alternate instructions fetched following the 0x0F3F branch should be of the form
0x8D8400XXXXXXXX where 0xXXXXXXXX is the 32-bit alternate instruction
That is, the alternate instructions are presented as the 32-bit displacement of a
LEA [EAX+EAX+disp]
instruction. This example assumes that the current code segment size is 32-bits, if it is 16-bits, then an address size prefix (0x67) must be placed in front of the LEA opcode.
5. Upon fetching, the LEA “wrapper” is stripped off and the 32-bit alternate instruction contained in the displacement field is executed.
6. The alternate instruction set contains a special branch instruction that returns control to x86 fetch and execute mode. The x86 state upon return is not necessarily what it was when alternate instruction execution is entered since the alternate instructions can completely modify the x86 state.
While all VIA C3 processor processors contain this alternate instruction feature, the invocation details (e.g., the 0x8D8400 “prefix”) may be different between processors. Check the appropriate processor data- sheet for details.
I don't trust the government to properly fill potholes in the streets let alone have a design review of CPU silicon.
Only the State obtains its revenue by coercion. - Murray Rothbard
No, you looking for IDDQD.
?
VIA is cheap. Back in the C3 days they had a bit of popularity among the people who wanted a compact server, firewall or media box. Decently fast but cool running CPUs, and good silent fans were all a pretty new development back then, so there wasn't that much choice.
So I tried.
The Nehemiah CPU was a dog. The network card corrupted some of the outgoing packets, and it was visible by naked eye by just refreshing a page served by the box and seeing how a character was wrong somewhere. Sticking a system in a small box looked pretty, but the tiny fan was noisy as hell, and it killed the hard disk from the overheating after a while. There was some kind of trouble with the power supply. Accounting for the time I spent screwing around with that junk, it would have been far cheaper to just buy a normal board with a normal CPU.
With the luck I've had with this specific product line, I'm amazed some of it is still alive today.
riiiight, last I checked the USA government wanted a backdoor in everything because citizens are to be treated like criminals by default.
There are plenty of complex systems with no "backdoors."
I assume "backdoor" means an intentional feature, not an unintentional security bug. If you meant an unintentionall bug, then we agree.
I also assume "the complex system" as the part that was built, not the hardware or software levels below "the system.". That is, if you claim all complex OSes that are sold independently of hardware have backdoors, you are claiming that these backdoors exist regardless of which hardware they run on, as long as the hardware works as advertised.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Espousing a 2003 chip to a backdoor now is useless information.
Not really. That was about the point where CPUs became "good enough" for most non-gaming uses. I am typing this on a 2004 vintage CPU (not a Via though), running a 2018 Linux distro, and it's perfectly fine. There are still many CPUs from that era in active use.
Plus, this will let him practice for finding similar issues in more modern CPUs.
I run this. No microscope required. :)
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
, whether my IDT WInChip 2 is also affected: https://www.youtube.com/watch?... .o?
I'm not saying the network card might also have had problems, but if you're seeing corrupted characters on a webpage, then that hints at problems beyond the network. Web pages are delivered via TCP, and TCP packets are error checked by the operating system, not the network card.
You are not alone. This is not normal. None of this is normal.
that they can do that with EVERY CPU built, even modern ones out there today in new desktops & laptops, and tablets & smartphones, they obviously have their own key to open root but its still there waiting for the right person to open, people like the NSA and various other high level government goons and spooks, and corporate top dawgs too
Politics is Treachery, Religion is Brainwashing
It is thought that only VIA C3 CPUs are affected by this issue. The C-series processors are marketed towards industrial automation, point-of-sale, ATM, and healthcare hardware, as well as a variety of consumer desktop and laptop computers.
Forget thin clients, if this shit is (still) controlling SCADA stuff then this is worse than the meltdown vulnerability.
Anons need not reply. Questions end with a question mark.
First this chip was designed at Centaur Technology in the US, a subsidiary of the main VIA. They design x86 processors, don't blame other crap on them.
Second this isn't a problem with the chip - it's a problem in software not configuring the chip correctly according to the documentation.
Third their x86 processors were designed for a specific market for which they are/were a good fit.
... unless the card tells the kernel that it has receive TCP checksum offload, and then fucks it up to match. :-)
Sticking a system in a small box looked pretty, but the tiny fan was noisy as hell, and it killed the hard disk from the overheating after a while. There was some kind of trouble with the power supply.
I had a Nehemiah for a few years as I wanted a silent, low-power system. It was fine in an open case with a large passive heatsink. Those tiny-whiny fans on Mini-ITX systems are idiotic as they basically maintain the same power density. You can get completely silent systems in a regular ATX size if you choose these "mini" components and let them breathe.
For stronger systems with discrete GPUs, it's hard to get completely fanless, but third party coolers with large fans can get asymptotically close to silence. It's the same idea about reducing power density. I've never understood the need for extreme small size in home/desktop hardware, to me silence is much more important.
Escher was the first MC and Giger invented the HR department.
So you're saying that how Nehemiah did its Job led to Lamentations?
The TCP checksum is literally a sum. It's not a MD5, CRC or anything fancy like that. As a result it's not that hard for something to slip past it.
It's been a long time since then, but recall the network performance was awful, which would be consistent with packets that are detected as bad being dropped by the kernel and causing a retransmission.
The error rate was absolutely awful too, I'm not talking about something that happened once a month. I think the error happened pretty much always and in a consistent spot.
TCP's error detection is fairly weak. A 16-bit CRC can only hope to catch 1 out of 65536 errors. At modern speeds, with flaky hardware that's barely working, it doesn't take long to accumulate 65536 errors, and then one of them is slipping through undetected. For the most part, the only reason we don't see a lot of errors with TCP is because our hardware is quite reliable and rarely generates any.
Fuzzing is when you essentially throw piles of random data at something, usually to try to get it to break.
Note that, though throwing random junk may be productive, the data is typically mostly valid stuff with some pseudo-random ignoring-spec-limits modifications. That way you get into the guts of the responding system where the violation may trigger a bug that you otherwise can't get near.
Total junk tends to hit some bail-out before it gets deep enough to be useful. You try that, too, because you never know whether there's some bug in the outer layers. But just throwing random noise at a system in hopes of hitting a bug is akin to throwing it at a text editor in hopes of getting Shakespeare, or a vaild authentication certificate.
Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
My impression is that the security community is scraping the bottom of the barrel if an obscure old chip from a minor bit player is the biggest hypestorm on the horizon.
Greed is the root of all evil.
We should kill the guy who killed Ian!
Oh ... wait ...
These days, the processors come as the actual silicon with firmware (microcode and nanocode) uploaded on power up. These can be changed at any time, so it wouldn;t matter.
Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
Well 2 questions was Mary legal at the time ( according to the laws on the books at that time) and did she concent?
First this chip was designed at Centaur Technology in the US, a subsidiary of the main VIA. They design x86 processors, don't blame other crap on them.
I'll tell you the same thing I tell people when they say the same thing about Sony. If they don't want me to look down on all their products, they can stop putting one name on all their products. VIA wanted their name on that CPU, they can deal with the fallout now.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
Looks like sloppy editing in the original article?
The demo only shows 2 bytes: 0xF, 0x3F -- as you mentioned.
God didn't 'penetrate' Mary, God impregnated her - humans have to 'penetrate' (personally or mechanically) to impregnate a woman, God not so much.
Don't confuse what God did to Mary with what you and your distant cousin did on that family camping trip in the tent.
Ken
The paperwork discovered the chip has something special AC.
Domestic spying is now "Benign Information Gathering"
I often have to do run a check on downloaded Steam games. With several gigabytes of data, I guess the chance of something being off is small but not insignificant.
TCP's error detection is fairly weak. A 16-bit CRC can only hope to catch 1 out of 65536 errors.
That is not how CRC works. Maybe you are thinking about hash collisions?
A 1-bit CRC (Also known as a parity bit) is guaranteed to catch any single bit errors in a packet.
For a 16-bit CRC you can pick a polynomial that is guaranteed to detect any combination of 3 bit errors in a 64 kbit sequence or another that will catch up to 4 random bit errors in a 32 kbit sequence.
No algorithm can catch an arbitrary number of bit errors.
Some algorithms are made so that they are better at catching "burst errors" (Several bit errors in a sequence.)
A 16 bit CRC will catch single bit errors in a packet every single time. Not just 1 time out of 65536.
However, TCP doesn't use a CRC. It uses a checksum.
It is cheaper to calculate and allows for quick packet modification but is worse at catching more than one bit error.
For the cases where there only is a single bit error in a packet the TCP checksum is still as good as whatever 256-bit CRC you can come up with.
VIA used to make decent, inexpensive motherboards back in the 90s.
I had nothing but problems with them, so I'm going to call shenanigans there. That was a big problem with AMD back in the day before they made all their own chipsets. Intel made their own, and they cost a lot more than VIA, but they were a lot better, too. Intel on Intel, solid. AMD on AMD, solid. Either on VIA, terrible.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
Is there any entity other than government who had the power to create this vulnerability and also keep it secret for a long time? This back door could not be accidental.
Doesn't every chip have one. Kudos to the researcher, but he found last year's NSA hack.
riiiight, last I checked the USA government wanted a backdoor in everything because citizens are to be treated like criminals by default.
Citizens are criminals which have not been arrested, charged, or convicted yet.
Inexpensive, yes. Decent? No way. VIA's stuff is garbage.
I won't even deal with VIA anymore. If I find/get an old PC and it has a VIA chipset, I just scrap it for parts. Not worth the hassle.