D
Don Y
Guest
On 9/1/2020 12:43 AM, Martin Brown wrote:
There\'s something to be said for technologies that expose every action
to review!
The more interesting issue is in deciding when you\'re experiencing
more errors than \"expected\" -- even in the absence of a deliberate
\"exploit\"! When do you decide that you\'re ECC is doing too *much*
work... lowering your confidence that it is protecting you against
ALL errors?
There have been some studies on how resilient different \"applications\"
(using that in the generic sense -- i.e., an OS is an application, too!)
are to uncorrected errors.
Consider that an error (in this case, a disturbance) has to be *seen*
before it can actually have an effect on the application (i.e., if
the datum is never read from memory, then it\'s the tree that fell
in the forest that no one heard!).
Then, the program logic has to NOT mask the effects of the error in
order for it to be a hazard. I.e., if the error makes an even value
odd and the code detects the odd number and \"makes it even\", then
no harm, no foul. Likewise, if the error converts an opcode into
one that is essentially equivalent (in THIS condition), then there
is no real change in execution.
Finally, any \"results\" of the application\'s execution have to be
\"visible\" to the consumer, in some NOTICEABLE way. E.g., if
the application is sorting your music collection by artist name,
the error(s) have to \"stand out\" in a way that you are likely to
notice in order to be consequential (\"Hmmm... why is \'Jefferson Airplane\'
BEFORE \'Janice Joplin\'?\")
Ideally, errors should cause crashes -- if your goal is to know
that errors are occurring! If, OTOH, you\'re goal is to \"get a
result\" -- even if not 100% correct -- then crashes should be avoided.
E.g., I\'ve 96G in each of my six primary workstations and nothing
(OS?) has ever complained to me about ECC errors... which I\'m SURE
must be occurring!
On 31/08/2020 19:50, Don Y wrote:
On 8/31/2020 9:29 AM, jlarkin@highlandsniptechnology.com wrote:
On Mon, 31 Aug 2020 11:46:48 -0400, Joe Gwinn <joegwinn@comcast.net
wrote:
On Mon, 31 Aug 2020 08:30:30 -0700, jlarkin@highlandsniptechnology.com
wrote:
https://en.wikipedia.org/wiki/Row_hammer
That\'s amazing. If x86 can possibly do something wrong, it does.
It is not clear that this is an x86 problem, as DRAM is used
universally, and the method depends on DRAM implementation.
Joe Gwinn
Allowing a ram data error to become a privilige escalation exploit is
a classic x86 blunder.
No. The exploit can be applied to other processors, as well.
For example ARM cores although they are somewhat more resistant.
https://par.nsf.gov/servlets/purl/10110647
\"The second exploit revealed by Project Zero runs as an unprivileged
Linux process on the x86-64 architecture, exploiting the row hammer
effect to gain unrestricted access to all physical memory installed in
a computer.\"
We live in the Dark Ages of computing.
Makes you wonder how many of those EDA tools you use are lying to you! :
Yes. He should go back to pencil and paper immediately.
Taped board layouts too you can\'t trust these new-fangled computers.
There\'s something to be said for technologies that expose every action
to review!
The more interesting issue is in deciding when you\'re experiencing
more errors than \"expected\" -- even in the absence of a deliberate
\"exploit\"! When do you decide that you\'re ECC is doing too *much*
work... lowering your confidence that it is protecting you against
ALL errors?
OTOH, REALLY makes you wonder how often the machine is NOT executing the
code (and machine state) \"as prescribed\" -- yet APPEARING to produce
good results!
These are interesting attacks against dynamic ram hardware. The vulnerability
after that depends on how it gets exploited and luck!
There have been some studies on how resilient different \"applications\"
(using that in the generic sense -- i.e., an OS is an application, too!)
are to uncorrected errors.
Consider that an error (in this case, a disturbance) has to be *seen*
before it can actually have an effect on the application (i.e., if
the datum is never read from memory, then it\'s the tree that fell
in the forest that no one heard!).
Then, the program logic has to NOT mask the effects of the error in
order for it to be a hazard. I.e., if the error makes an even value
odd and the code detects the odd number and \"makes it even\", then
no harm, no foul. Likewise, if the error converts an opcode into
one that is essentially equivalent (in THIS condition), then there
is no real change in execution.
Finally, any \"results\" of the application\'s execution have to be
\"visible\" to the consumer, in some NOTICEABLE way. E.g., if
the application is sorting your music collection by artist name,
the error(s) have to \"stand out\" in a way that you are likely to
notice in order to be consequential (\"Hmmm... why is \'Jefferson Airplane\'
BEFORE \'Janice Joplin\'?\")
Ideally, errors should cause crashes -- if your goal is to know
that errors are occurring! If, OTOH, you\'re goal is to \"get a
result\" -- even if not 100% correct -- then crashes should be avoided.
E.g., I\'ve 96G in each of my six primary workstations and nothing
(OS?) has ever complained to me about ECC errors... which I\'m SURE
must be occurring!