Intel CPUs have design and security flaw

I hope that's also true for Microsoft Security Essentials because that's my antivirus with Windows 7.

Yes the articles say both which makes I expected since Defender is basically just Security Essentials renamed for Win8/10.

ETA: After typing that I remembered to check my older Win7 box as well as my Win10 home box. Both are doing the update now.
 
Last edited:
GPUs have not been mentioned. I assume they are not impacted?

The use case of GPUs is just different. GPUs do have memory, and they do have their own internal caching systems just like the CPU, but the question is what secrets could you possibly extract from the GPU using a cache side-channel attack that would be worth the effort, and the answer is not much.

The sensitive data a hacker might want is in main memory, not GPU memory, and therefore the CPU is the target of attack.
 
Makes me think about the science fiction stories that I always take with a huge of pinch of salt, those with the intelligent software that can worm itself into any computer network etc. Perhaps a smaller pinch of salt will be required in future.
 
The use case of GPUs is just different. GPUs do have memory, and they do have their own internal caching systems just like the CPU, but the question is what secrets could you possibly extract from the GPU using a cache side-channel attack that would be worth the effort, and the answer is not much.

The sensitive data a hacker might want is in main memory, not GPU memory, and therefore the CPU is the target of attack.
Wouldn't discount GPUs vulnerability to such hacks, especially with some modern software that offloads work to the GPU.

It's just yet another thing folk will have to think about when designing any processing units in future.
 
Wouldn't discount GPUs vulnerability to such hacks, especially with some modern software that offloads work to the GPU.

It's just yet another thing folk will have to think about when designing any processing units in future.

I'm not discounting it, it is just that the use cases for GPU Computation don't lend themselves well to this style of attack. One of the things to note about this style of attack is that they are relatively slow, and therefore rely on the contents of large chunks of memory remaining static. GPU Memory, both when used for display, and when used for computation, is typically quite volatile.

Probably the only thing I can think of that might make GPUs a tempting target for such attacks is Bitcoin mining operations which offload their computations to the GPU. Someone might be able to create an attack on the GPU that lets them find the place calculated hashes are being stored, and grab them and then use them to sign a block themselves. But my unfamiliarity with how the bitcoin protocol deals with priority on signed blocks in terms of crediting the miner who signed it, means I don't know how useful such an attack would be.
 
I can't take this seriously ATM. First of all you have to get a virus on your hardware, which we already have virus checkers for. To exploit this weakness requires some severely degenerate coding which end users won't have access to. Corporate sites will already have a white list of programs that can run anyway. All it lets you do is read data you weren't supposed to read. Most of that is completely useless to you. If you know where a password is saved in memory and you know it is a password then good luck to you.
 
Actually that's not what's going on with the patch. Some third party Antivirus software is incompatible with the fix so if you have incompatible third party AV the patch will be delayed until your AV supplier tests their product and sets that registry key.

If you are running Windows Defender you get the patch right away because that registry key is already set. Since I don't use 3rd party AV I have the key set and I see the update is queued for installation on a restart which I will be doing right after I hit submit because this is an important security update and the other bug fixes are important too.

Ref.
http://www.itprotoday.com/network-security/how-protect-against-meltdown-and-spectre-vulnerabilities
http://www.zdnet.com/article/window...check-if-your-av-is-blocking-microsoft-patch/

Yes, I've read the Microsoft documentation, I was simplifying. Unless you run Defender, it's not Microsoft stuffing the patch down your throat, though, which was my point. You either have to set the key yourself (any many AV vendors are taking this option, rather than doing it automagically...either providing instructions or some sort of utility you can run to set it) or a third-party (your AV provider) sets it.

There's additional steps that have to be taken on server platforms to actually enable the protections, as well.

https://support.microsoft.com/en-us...-to-protect-against-the-speculative-execution

That link also includes a download link to (and instructions for) a powershell script you can run to see if the protections are enabled:
https://aka.ms/SpeculationControlPS

You won't have full protection until the microcode update is applied for your hardware.
 
I have just checked my Desktop CPU. Its an Intel Core i5-6500 (64 bit) but I am only running Windows 10 - 32 bit because there are some applications necessary to my business that will not run on Win 10 - 64 bit.

Am I still vulnerable even though I am not running in 64 bit mode.


bump
 

I have just checked my Desktop CPU. Its an Intel Core i5-6500 (64 bit) but I am only running Windows 10 - 32 bit because there are some applications necessary to my business that will not run on Win 10 - 64 bit.

Am I still vulnerable even though I am not running in 64 bit mode.

While I haven't seen any demos targetting 32-bit mode, it is certainly vulnerable.

Just to take my earlier example of how Meltdown works, just replace the RAX, RBX, and RCX registers with their 32-bit counterparts: EAX, EBX, and ECX. Change qword in line 3 to dword, then change the paragraph that follows to something like this:

Line 1 tries to access 1 byte of data from the address in ECX. Line 2 takes the EAX register, which now contains that data in it's lowest byte, and shifts it left 12 bits. so if the contents of EAX looked like this: 0x000000FF, after instruction 2 it now looks like this: 0x000FF000. Finally line 3 tries to read the location of the user space array offset by the current value of EAX. So if the array is located at user space memory address 0x0F000000, it will try to load the data in the array located at address 0x0F0FF000.

Everything remains basically the same, you are just hitting a smaller address space.

With regard to what "qword" and "dword" mean, they are artifacts of the past. When the 32-bit 80386 was released it maintained backward compatibility with the older 16-bit x86 processors. Since the word-size of those processors was 16-bits, the new word size for the 32-bit mode was called a "double word", or dword. This kept going with the introduction of x86-64, which has a 64-bit word size, but refers to them as "quad words", i.e. 4 16-bit words.
 
Last edited:
From what I’ve read so far, there will soon be patches, for both Meltdown and Spectre, for Linux, MacOS, iOS, Win10, Win7, ... but not Windows XP. And the various PC manufacturers - Dell, HP, ... - will also likely release updates too.

So a malicious actor could focus on targeting Windows XP, NT, and hardware from stressed/vanished companies, and so wreck all kinds of havoc, right?
 
From what I’ve read so far, there will soon be patches, for both Meltdown and Spectre, for Linux, MacOS, iOS, Win10, Win7, ... but not Windows XP. And the various PC manufacturers - Dell, HP, ... - will also likely release updates too.

So a malicious actor could focus on targeting Windows XP, NT, and hardware from stressed/vanished companies, and so wreck all kinds of havoc, right?

Only for people still using AOL...
 
So I thought I would add some information about why these changes to Windows and Linux will cause a large performance hit.

TLDR: The fix involves clearing a hardware cache on the CPU whenever the OS kernel is invoked, and CPU caches are much faster than accessing your RAM, so each time the OS kernel is invoked, it is going to take significantly more time that prior to these patches.

To explain this first I need to explain virtual memory. Basically, virtual memory is a way of letting every running application in a system pretend it has the entire addressable memory space to itself. So say Program A has data stored in physical memory addresses 1113,1114, and 1115, while Program B has data stored in physical memory addresses 4322,4323, and 4324. With virtual memory each program might "see" those addresses as address 10,11, and 12. Thus there is no need for them to worry about where stuff is actually located in physical memory, they only need to know where things are located in their virtual address space. On the CPU there is a module called the Translation Lookaside Buffer. It's job is to act as a cache of mappings between virtual addresses and real physical addresses. The operating system maintains it's own map of virtual addresses to physical addresses, but the TLB is present so that an expensive memory lookup doesn't need to take place every time the CPU needs to check what the actual physical address represented by a virtual address is.

Next, to oversimplify, you need to understand that the CPU can be in one of two modes: user mode or kernel mode. User mode is what your applications run in, while things like the OS kernel and your device drivers run in kernel mode. While in user mode certain CPU functions and memory addresses cannot be accessed. In order access the functionality of the kernel, the application makes system calls, special functions exposed by the kernel that switch the CPU into kernel mode, perform kernel operations like sending data across the network, accessing the disk, etc..., then switching back to user mode and returning to the user process.

Now, what happens in Windows and Linux is that the kernel memory space is mapped into every user processes virtual memory. Because of the kernel mode/user mode access restrictions, the user mode process can't read the portions of virtual memory occupied by the kernel, but they are there. The main benefit of this is that whenever a user->kernel or kernel->user switch occurs, the virtual memory pages don't need to be swapped out, and even more importantly the kernel page mappings are usually present in the CPU's Translation Lookaside Buffer. CPUs are fast, main memory access is comparatively quite slow, so you want these CPU caches like the TLB to be used as much as possible.

Now to the Intel CPU issue. I don't know all the details but it seems to be that one of the pieces of functionality of the CPU, the speculative execution feature. Your CPU doesn't execute instruction A, then when it is done execute instruction B etc... Processing of each instruction takes time and thus your CPU pipelines the instructions. So if each instruction has say 5 phases before it is done executing, instruction A finishes phase 1 and starts phase 2, instruction B starts phase 2, instruction A finishes phase 2 and starts phase 3 and instruction B finishes phase 1 and starts phase 2 while instruction C enters phase 1...etc....etc.... This is a pipelined architecture where the processing of instructions works a lot like an industrial assembly line. Now imagine instruction B was a conditional branch instruction. The next instruction that should be processed after B depends on the final result of B, so how do you pipeline it? Well the CPU tries to predict which way the branch will go, and just starts speculatively executing the instructions down that execution path. If it turns out the branch went the other way it has to discard all that work and start over, but if it guessed right, it already has a bunch of instructions well on the way to completion.

So what is the issue? It seems to be that the Intel CPUs don't enforce the ring 0 kernel mode security features when accessing the Translation Lookaside Buffer during a speculative execution. So if your user mode code tries to access kernel virtual address 10 while being executed speculatively, rather than the CPU throwing up a fault, the TLB will give you the physical memory address associated with it. This lets exploit writers effectively map where stuff is located in the kernel. I'm not sure if this bug allows them to actually access the kernel memory, or if it is just that the TLB will resolve the physical address.

What is the solution, and why does it suck? Like I said before, caches like the TLB are important because memory access is slow compared to the CPU. The solution to the problem is to force a full context switch whenever a kernel system call is made. You remove the kernel from the virtual address space of the user process, and every time a system call happens you have to flush the TLB, and load a new page table for the kernel. These are comparatively slow memory access processes that significantly impact the time taken by each system call. Any process that makes many system calls will be very adversely affected by this. Even overall system performance will be hampered by this however, since hardware interrupts (such as say receiving a network packet) will also force the context switch to the kernel. Hell, pressing a key on your keyboard causes a hardware interrupt, although I don't think any human could ever type fast enough to actually see a measurable difference in performance due to keyboard interrupts.

Yeah, but, so what?
 
I can't take this seriously ATM. First of all you have to get a virus on your hardware, which we already have virus checkers for. To exploit this weakness requires some severely degenerate coding which end users won't have access to. Corporate sites will already have a white list of programs that can run anyway. All it lets you do is read data you weren't supposed to read. Most of that is completely useless to you. If you know where a password is saved in memory and you know it is a password then good luck to you.

I think corporations will need to take action as there are so many ways their networks can be compromised, not least by user incompetence, but personal users not so much. Maintain your AV, have a properly-configured firewall, don't run unknown scripts and your system will never be hacked, infected or otherwise exploited. To my knowledge this particular vulnerability has not resulted in a single password being compromised, yet according to the media it's Armageddon. Next week it will be something else... yawn.
 
Next week it will be something else... yawn.

Only thanks to the hard work and dedication of security professionals around the world. Your lacsidasical attitude is enabled only by their hard work to secure the networks you use daily.
 
Only thanks to the hard work and dedication of security professionals around the world. Your lacsidasical attitude is enabled only by their hard work to secure the networks you use daily.

They should all be canonised, for sure.
 
From what I’ve read so far, there will soon be patches, for both Meltdown and Spectre, for Linux, MacOS, iOS, Win10, Win7, ... but not Windows XP. And the various PC manufacturers - Dell, HP, ... - will also likely release updates too.

So a malicious actor could focus on targeting Windows XP, NT, and hardware from stressed/vanished companies, and so wreck all kinds of havoc, right?

If a company is running Windows XP then they deserve to get hit with it. We handle IT for about 70 companies, and I can think of precisely 1 XP machine. That 1 machine runs an archaic program for one of the county drivers license programs. We've fought with them for ages to get rid of it, but what can you do? However, that computer doesn't have a monitor, and it's protected by a few different NSA's.

Seriously though, if you're running Windows XP you should really get your **** together. It's been sunset for years, and if you're running an application that requires such an old OS I would either pressure the people that make the app to get it together, or find a different application that's up to date.
 
If a company is running Windows XP then they deserve to get hit with it. We handle IT for about 70 companies, and I can think of precisely 1 XP machine. That 1 machine runs an archaic program for one of the county drivers license programs. We've fought with them for ages to get rid of it, but what can you do? However, that computer doesn't have a monitor, and it's protected by a few different NSA's.

Seriously though, if you're running Windows XP you should really get your **** together. It's been sunset for years, and if you're running an application that requires such an old OS I would either pressure the people that make the app to get it together, or find a different application that's up to date.
In fact, this is the prime argument for running XP on a VM on an actual secure OS.
 

Back
Top Bottom