[Info-vax] Intel junk...Kernel-memory-leaking Intel processor design flaw forces Linux, Windows redesign

Alan Browne bitbucket at blackhole.com
Sat Jan 6 11:11:04 EST 2018


On 2018-01-06 11:06, Jan-Erik Soderholm wrote:
> Den 2018-01-06 kl. 16:27, skrev Alan Browne:
>> On 2018-01-05 16:00, DaveFroble wrote:
>>> Alan Browne wrote:
>>>> On 2018-01-05 09:15, DaveFroble wrote:
>>>>> Jan-Erik Soderholm wrote:
>>>>
>>>>>> Becuse the designers, for performance reasons, has mapped kernel 
>>>>>> memory
>>>>>> into the user process address space and relies on the OS to check
>>>>>> protection before any kernel memory (or code) is accessed.
>>>>>>
>>>>>> The issue with the current issues is that the hardware (the CPU) does
>>>>>> these accesses in hardware "under the hood" without control by the 
>>>>>> OS.
>>>>>>
>>>>>> If you map your kernel memory in another way that uses the hardware
>>>>>> protection facilities, you are (as I understand) safe, at the cost
>>>>>> of worse performance to switch between user and kernel mode.
>>>>>>
>>>>>>
>>>>>
>>>>> As I wrote, someone dropped the ball on this one.
>>>>>
>>>>> Speculative execution is part of the HW, not software.  It appears 
>>>>> the HW doesn't follow it's own rules.  Or, perhaps I don't actually 
>>>>> understand the problem?
>>>>
>>>> At least as well as I do.  These are very complex mechanisms and 
>>>> complexity is usually where you're most likely to get problems.
>>>>
>>>> In this case the h/w implementation didn't reflect the design goal.
>>>>
>>>> This means intel had very poor design review and abysmal testing of 
>>>> security features.
>>>>
>>>
>>> There seems a whole bunch of us "speculating" about things we 
>>> probably don't know enough about.
>>
>> I am very certain that they either did not design the testing 
>> correctly or didn't test per the test plan correctly.  Or a bad 
>> scenario: they saw it and carpeted it.
>>
>>>
>>> :-)
>>>
>>> It seems to me that before memory is fetched into cache, the CPU 
>>> should be determining whether it should indeed be fetching that 
>>> memory.  Yeah, 
>>
>> The CPU memory controller is (usually) the arbiter of whether a fetch 
>> is "legal" in the privilege scheme - so if something is allowed to be 
>> fetched, then it is fetched.  So (hierarchically) the fetch goes to 
>> the decoding pipeline(s) -and- is simultaneously copied to the cache.  
>> At that point the MC has "allowed" the fetch.  Writes to memory are 
>> also written to cache. The issue seems to be that post fetch from 
>> Kernel assigned memory, the cache makes some privileged data available 
>> to lower priority tasks after the context switch.  That is the gist.
>>
> 
> As I understand, the CPU fetched prived data "under the hood" even before
> the processor has decided that it was prived data. When the user process
> get an "slap on the hand", the tracks was already in the cache.
> 
> There was never any "context switch" involved at all, it was way below
> such constructs. Everything was done from user level "under the radar"
> from the point of view of the any OS (or the protection facilities in
> the CPU itself, it also seems).

I didn't mean OS level CS but privilege level switching.  Sorry for the 
ambiguity.

> 
> And it never made any priviledge data avalable at all. It used the prived
> data (byte) that was pre-fetched as an index into an array in user memory
> and could later identify what element of the user data that was touched.
> 
> Clever...

Interesting.


-- 
“When it is all said and done, there are approximately 94 million
  full-time workers in private industry paying taxes to support 102
  million non-workers and 21 million government workers.
  In what world does this represent a strong job market?”
.Jim Quinn



More information about the Info-vax mailing list