Leistung und Sicherheit stehen beim „Collide+Power“-Angriff erneut im Widerspruch
HeimHeim > Nachricht > Leistung und Sicherheit stehen beim „Collide+Power“-Angriff erneut im Widerspruch

Leistung und Sicherheit stehen beim „Collide+Power“-Angriff erneut im Widerspruch

Oct 05, 2023

Eine weitere Woche, ein weiteres BWAIN!

Wie Sie wissen, wenn Sie den Podcast der letzten Woche gehört haben (Hinweis, Hinweis!), ist BWAIN die Abkürzung für Bug With An Impressive Name:

S3 Ep145: Käfer mit beeindruckenden Namen!

Es ist ein Spitzname, den wir verwenden, wenn die Entdecker eines neuen Cybersicherheitsangriffs von ihrer Entdeckung so begeistert sind, dass sie ihm einen PR-freundlichen Spitznamen geben, einen Vanity-Domainnamen dafür registrieren, ihm eine benutzerdefinierte Website erstellen und ihm ein spezielles Logo entwerfen.

Diesmal enthält der Name Collide+Power ein lästiges Interpunktionszeichen, was ein Plus bei der Benennung von Fehlern, aber ein Minus bei der Registrierung einer Internetdomäne ist. (Ironischerweise dürfen Domain-Namen -, aber nicht + verwenden).

Daher musste der Domainname leicht auf https://collidepower.com abgekürzt werden, aber die Website gibt Ihnen trotzdem einen Überblick über das Problem, auch wenn das Zusatzzeichen entfernt wurde.

Die Forscher hinter diesem neuen Papier sind Andreas Kogler, Jonas Juffinger, Lukas Giner, Martin Schwarzl, Daniel Gruss und Stefan Mangard von der Universität Graz in Österreich sowie Lukas Gerlach und Michael Schwarz vom CISPA Helmholtz-Zentrum für Informationssicherheit in Deutschland.

Wir werden nicht versuchen, die verschiedenen Formen dieses Angriffs ausführlich zu erklären, da die technischen Details zur Durchführung der Messungen und die mathematische Modellierung, die verwendet wird, um aus diesen Messungen Schlussfolgerungen zu ziehen, komplex sind.

Aber der Kern des Problems besteht, wenn Sie mir das Wortspiel verzeihen, darin, dass der Cache-Speicher, der in modernen Prozessorchips vergraben ist, für eine unsichtbare und automatische Leistungssteigerung sorgen soll …

…ist nicht immer ganz so unsichtbar, wie Sie vielleicht denken, und kann manchmal einen Teil oder den gesamten Inhalt durchsickern lassen, sogar an Prozesse, die ihn nicht sehen sollten.

Wie der Name schon sagt, speichert der Cache-Speicher (ausgesprochen „Cash“ wie in Dollar und Cent, nicht „Cachet“ wie in Respekt und Prestige, falls Sie sich jemals gefragt haben) spezielle Kopien von Datenwerten aus dem herkömmlichen RAM an versteckten Orten innerhalb der CPU Chip selbst.

Wenn die CPU die RAM-Adressen (Speicherorte) im Auge behält, die Sie kürzlich verwendet haben, und genau abschätzen kann, welche davon Sie wahrscheinlich bald wieder verwenden werden, kann sie diese vorübergehend in ihrem Cache-Speicher behalten und so die Geschwindigkeit erheblich steigern Ihr zweiter Zugriff auf diese Werte und der dritte Zugriff, der vierte und so weiter.

Wenn Sie beispielsweise eine Reihe von Datenwerten in einer Tabelle nachschlagen, um Bildpixel von einem Farbformat in ein anderes zu konvertieren, werden Sie möglicherweise feststellen, dass die Nachschlagetabelle Sie meistens auffordert, eine der RAM-Adressen 0x06ABCC00 aufzurufen (was möglicherweise der Fall ist). der Ort sein, an dem der spezielle Code für „schwarzes Pixel“ gespeichert ist) oder die Adresse 0x3E00A040 (was der Ort des „transparenten Pixel“-Codes sein könnte).

Indem die Werte dieser beiden häufig benötigten Speicheradressen automatisch in ihrem Cache gespeichert werden, kann die CPU zukünftige Versuche, auf diese Adressen zuzugreifen, kurzschließen (im übertragenen Sinne, nicht wörtlich!), sodass keine Notwendigkeit besteht, elektrische Signale außerhalb des Prozessors zu senden. über das Motherboard und in die eigentlichen RAM-Chips, um die Masterkopie der dort gespeicherten Daten auszulesen.

Daher ist der Zugriff auf zwischengespeicherte Daten in der Regel viel schneller als auf Daten im Hauptplatinen-RAM.

Im Allgemeinen können Sie jedoch nicht auswählen, welche Cache-Register zum Speichern welcher RAM-Adressen verwendet werden, und Sie können nicht auswählen, wann die CPU beschließt, das Caching Ihres „transparenten Pixelcode“-Werts zu beenden und mit dem Caching der Werte eines anderen Programms zu beginnen stattdessen „supergeheimer kryptografischer Schlüssel“.

Tatsächlich kann der Cache eine großzügige Mischung von Werten enthalten, von einer großzügigen Mischung von RAM-Adressen bis hin zu einer großzügigen Mischung verschiedener Benutzerkonten und Berechtigungsstufen, alles gleichzeitig.

Aus diesem Grund sowie aus Effizienz- und Leistungsgründen können selbst Programme auf Administratorebene keinen direkten Blick auf die Liste der aktuell zwischengespeicherten Adressen werfen oder auf deren Werte zugreifen, um die zwischengespeicherten Daten vor externem Schnüffeln zu schützen.

Als Programmierer verwenden Sie immer noch die Maschinencode-Anweisung „Lesen Sie den transparenten Pixelcode von der Adresse 0x3E00A040 aus“ und das Betriebssystem entscheidet immer noch anhand der numerischen Adresse 0x3E00A040, ob Sie Zugriff auf diese Daten haben sollen, auch wenn dies der Fall ist Die Daten stammen letztendlich direkt aus dem Cache und nicht von der echten RAM-Adresse 0x3E00A040.

Was die Collide+Power-Forscher stark vereinfacht herausgefunden haben, ist, dass Sie zwar keinen direkten Blick auf die temporären Daten im Cache-Speicher werfen und daher den Speicherschutz nicht umgehen können, der angewendet würde, wenn Sie über die offizielle RAM-Adresse gehen würden …

…Sie können erraten, wann bestimmte Datenwerte in bestimmte Cache-Speicherregister geschrieben werden.

Und wenn eine bereits zwischengespeicherte Nummer durch eine andere ersetzt wird,Sie können Rückschlüsse auf beide Werte ziehen, indem Sie messen, wie viel Strom die CPU verbrauchtdabei.

(Moderne Prozessoren verfügen normalerweise über spezielle interne Register, die Ihnen Messwerte zum Stromverbrauch liefern, sodass Sie nicht das Computergehäuse aufbrechen und irgendwo auf der Hauptplatine ein physisches Sondenkabel anbringen müssen.)

Interessanterweise hängt der Stromverbrauch der CPU selbst beim Überschreiben eines Cache-Werts mit einem neuen davon ab, wie viele Bits sich zwischen den Zahlen geändert haben.

Wenn wir die Sache auf einzelne Bytes vereinfachen, dann erfordert das Überschreiben des Binärwerts 0b00000000 mit 0b11111111 (Änderung der Dezimalzahl 0 in die Dezimalzahl 255) das Umdrehen aller Bits im Byte, was den meisten Strom verbrauchen würde.

Das Überschreiben des ASCII-Zeichens A (65 in Dezimalzahl) mit Z (90 in Dezimalzahl) bedeutet, dass 0b01000001 in 0b01011010 geändert wird, wobei vier Bitpositionen vertauscht werden und somit eine mittlere Menge an Strom verbraucht wird

Und wenn die Zahlen zufällig gleich sind, müssen keine Bits umgedreht werden, was am wenigsten Strom verbrauchen würde.

Wenn Sie die beiden Zahlen XOR-verknüpfen und die Anzahl der 1-Bits in der Antwort zählen, ermitteln Sie im Allgemeinen die Anzahl der Flips, da 0 XOR 0 = 0 und 1 XOR 1 = 0 (Null bedeutet also kein Flip), während 0 XOR 1 = 1 und 1 XOR 0 = 1 (bedeutet einen Flip).

Mit anderen Worten: Wenn Sie auf eine Reihe Ihrer eigenen ausgewählten Adressen zugreifen können, um einen bestimmten Satz von Cache-Registern in der CPU vorzubereiten, und dann den Stromverbrauch genau genug überwachen können, wenn der Code einer anderen Person seine Daten diesem Cache zuweist Standorte stattdessen…

…DannSie können Rückschlüsse darauf ziehen, wie viele Bits umgedreht wurdenzwischen dem alten und dem neuen Cache-Inhalt.

Natürlich können Sie die Werte auswählen, die in den Adressen gespeichert sind, mit denen Sie die Cache-Register gefüllt haben, sodass Sie nicht nur wissen, wie viele Bits wahrscheinlich umgedreht wurden, sondern auch, wie die Anfangswerte dieser Bits vor dem Umdrehen waren Ort.

Dadurch erhalten Sie noch mehr statistische Daten, mit denen Sie die wahrscheinlichen neuen Werte im Cache vorhersagen können, vorausgesetzt, Sie wissen, was vorher da war und wie viele Bits wahrscheinlich jetzt anders sind.

Möglicherweise können Sie nicht genau herausfinden, welche Daten der Prozess Ihres Opfers verwendet hat, aber selbst wenn Sie einige Bitmuster beseitigen können, haben Sie gerade etwas gelernt, das Sie nicht wissen sollten.

Und wenn diese Daten beispielsweise ein Verschlüsselungsschlüssel wären, könnten Sie möglicherweise einen undurchführbaren Brute-Force-Angriff in einen Angriff umwandeln, bei dem Sie vielleicht gerade noch Erfolg haben.

Wenn Sie beispielsweise 70 Bits in einem 128-Bit-Verschlüsselungsschlüssel vorhersagen können, müssten Sie, anstatt alle Kombinationen von 128 Bits auszuprobieren, was eine unmögliche Aufgabe wäre, stattdessen 258 verschiedene Schlüssel ausprobieren (128 – 70 =). 58), was durchaus machbar sein könnte.

Glücklicherweise ist diese „Sicherheitslücke“ (jetzt genanntCVE-2023-20583) wird wahrscheinlich in absehbarer Zeit nicht gegen Sie verwendet werden.

Dabei handelt es sich eher um eine theoretische Angelegenheit, die Chiphersteller berücksichtigen müssen, basierend auf der Binsenweisheit, dass Cybersicherheitsangriffe „immer nur besser und schneller werden“, als um eine ausnutzbare Lücke, die heute ausgenutzt werden könnte.

Tatsächlich geben die Forscher fast verlegen zu, dass „SieSie brauchen sich keine Sorgen zu machen.“

Sie haben Sie wirklich kursiv geschrieben und die Verwünschungkeine Sorgen machenin Fettdruck:

In der Schlussfolgerung des Papiers stellen die Forscher mit Bedauern fest, dass einige ihrer besten realen Ergebnisse mit diesem Angriff unter idealen Laborbedingungen nur 5 Bits pro Stunde durchsickerten.

Für eines ihrer Angriffsszenarien gaben sie sogar zu, dass sie auf „praktische Einschränkungen gestoßen seien, die zu Leckraten von mehr als [einem] Jahr pro Bit“ führten.

Ja, Sie haben das richtig gelesen – wir haben es in der Zeitung mehrmals überprüft, um sicherzugehen, dass wir uns das nicht eingebildet haben.

Und das wirft natürlich die Frage auf: „Wie lange müssen Sie eine Reihe von Datenübertragungstests laufen lassen, bevor Sie so niedrige Übertragungsraten zuverlässig messen können?“

Nach unseren Berechnungen ergibt ein Bit pro Jahr etwa 125 Bytes pro Jahrtausend. Bei dieser Geschwindigkeit würde das Herunterladen des kürzlich erschienenen dreistündigen Blockbuster-Films Oppenheimer in IMAX-Qualität, der offenbar etwa ein halbes Terabyte einnimmt, etwa 4 Milliarden Jahre dauern. Um diese bizarre Tatsache ins rechte Licht zu rücken: Die Erde selbst ist nur etwa 4,54 Milliarden Jahre alt, mit ein paar hundert Millionen Monaten plus oder minus.

Der einfachste Weg, CVE-2023-20538 im Moment zu bekämpfen, besteht darin, nichts zu tun, da die Forscher selbst Ihnen geraten haben, sich keine Sorgen zu machen.

Wenn Sie das Bedürfnis verspüren, etwas zu unternehmen, haben sowohl Intel- als auch AMD-Prozessoren Möglichkeiten, die Genauigkeit ihrer Leistungsmesstools absichtlich zu verringern, indem sie den Leistungsmesswerten zufälliges Rauschen hinzufügen.

Dadurch bleiben Ihre Durchschnittswerte korrekt, die einzelnen Messwerte variieren jedoch so stark, dass dieser ohnehin schon nicht wirklich durchführbare Angriff noch schwieriger durchzuführen ist.

Intels Abhilfe bei der Leistungsmessung wird als RAPL-Filterung (Running Average Power Limit) bezeichnet. AMDs wird als Leistungsdeterminismusmodus bezeichnet.

Folgen@NakedSecurity auf Twitterfür die neuesten Nachrichten zur Computersicherheit.

Folgen@NakedSecurity auf Instagramfür exklusive Bilder, Gifs, Videos und LOLs!

Sie können Rückschlüsse auf beide Werte ziehen, indem Sie messen, wie viel Strom die CPU verbrauchtSie können Rückschlüsse darauf ziehen, wie viele Bits umgedreht wurdenCVE-2023-20583Sie brauchen sich keine Sorgen zu machenkeine Sorgen machen@NakedSecurity auf Twitter@NakedSecurity auf Instagram