Rekonstruktion von kürzlich von einer Grafikkarte gerenderten Bildern möglich

Jimini

PCGH-Community-Veteran(in)
Rekonstruktion von kürzlich von einer Grafikkarte gerenderten Bildern möglich

Wird ein PC neugestartet, so wird der VRAM einer Grafikkarte oftmals weiterhin mit Strom versorgt - und darin gespeicherte Daten bleiben auch über einen Reboot hinweg erhalten. Dass sich dieser Umstand ausnutzen lässt, um etwa vor ein paar Minuten gerenderte Bilder zu rekonstruieren, konnte nun der Informatik-Student Bastian Reitemeier zeigen.
Dieser "Palinopsie" getaufte Bug ermöglicht es somit, Bildschirminhalte anzuzeigen, welche die Grafikkarte vor kurzer Zeit gerendet hat - wie schon erwähnt, können hier mitunter auch Bilder von vor dem letzten Reboot ausgelesen werden.
Spannenderweise ergeben sich hieraus einige interessante Möglichkeiten, auf verschiedene Arten - möglicherweise sensible - Inhalte abzugreifen. Doch zunächst ein Beispiel, wie ein solches rekonstruiertes Bild aussieht:

1) Original unter Windows 7:
1_1.PNG (https://hsmr.cc/palinopsia/before/Capture.PNG)

Das in einem Xubuntu-Live-System rekonstruierte Bild:
1_2.png (https://hsmr.cc/palinopsia/after/screenshot1.png)

2) Das Problem tritt aber nicht nur unter Windows auf - auch die besonders auf Sicherheit bedachte Linux-Live-Distribution Tails schützt nicht vor dem Bug:
2_1.png (https://hsmr.cc/palinopsia/tails/before.png)

Auch hier ließen sich Inhalte unter Xubuntu auslesen:
2_2.png (https://hsmr.cc/palinopsia/tails/after.png)

3) Brisanterweise lässt sich der Bug auch aus einer VirtualBox-VM heraus ausnutzen, sofern die 3D-Beschleunigung aktiviert ist.
3_1.png (https://hsmr.cc/palinopsia/vm1.png)
3_2.png (https://hsmr.cc/palinopsia/vm2.png)

Natürlich ist sofort ersichtlich, dass große Teile der Bildschirminhalte kaum zu erkennen sind. Es gibt jedoch auch Fälle, in denen Textpassagen einwandfrei lesbar sind:
4_1.png (https://hsmr.cc/palinopsia/gallery/code2.png)

Reitemeier führt die Qualitätsunterschiede darauf zurück, wie Grafikkarte und -Treiber zusammenarbeiten.

Mit den folgenden Grafikkarten und Treibern ließ sich der Bug reproduzieren:
- ATI Radeon HD3750
- ATI Radeon HD4350/4550
- nVidia NVS 5400M
- nVidia GeForce GT650M

- Open-Source-Radeon-Treiber für Linux
- Open-Source-Nouveau-Treiber für Nvidia-Karten unter Linux
- Closed-Source-Nvidia-Treiber für Linux
- Closed-Source-Catalyst-Treiber für Windows

Quellen:
https://hsmr.cc/palinopsia/
http://www.heise.de/newsticker/meldung/Gefaehrliches-Gedaechtnis-der-Grafikkarte-2586875.html

Reitemeier empfiehlt somit, nach dem Verwenden eines öffentlichen PC (etwa in Internet-Cafés) diesen abzuschalten - wobei solche Systeme ohnehin nicht für sensible Inhalte genutzt werden sollten. Aber auch die Möglichkeit, aus einer VM heraus Inhalte des Hostsystems abzugreifen, zeigt auf, welche Angriffsmöglichkeiten sich bei oftmals als sicher angenommenen virtuellen Systemen ergeben.

MfG Jimini
 
Zuletzt bearbeitet:
AW: Rekonstruktion von kürzlich von einer Grafikkarte gerenderten Bildern möglich

Das Wort "Bug" trifft es nur begrenzt. Ein kompletter Ramrefresh kostet halt Zeit und damit Leistung, also wundert mich die mögliche Angriffsstelle nicht besonders. Es ist eher komisch dass es erst jetzt jemand versucht/veröffentlicht.
 
AW: Rekonstruktion von kürzlich von einer Grafikkarte gerenderten Bildern möglich

Finde ich wahnsinnig interessant aber wahrscheinlich mehr unnützes Wissen als ernsthafte Bedrohung für Privatanwender.
 
AW: Rekonstruktion von kürzlich von einer Grafikkarte gerenderten Bildern möglich

Das Wort "Bug" trifft es nur begrenzt. Ein kompletter Ramrefresh kostet halt Zeit und damit Leistung, also wundert mich die mögliche Angriffsstelle nicht besonders.
Stimmt. Zumindest aber sehe ich keinen Nachteil darin, den VRAM beim Herunterfahren zu leeren, oder? Wobei das das Problem ja auch nicht wirklich lösen würde - es reicht unter Umständen halt nicht aus, nur den Browserverlauf zu löschen. Ich muss gestehen, dass ich mir darüber noch nie Gedanken gemacht habe, und ich behaupte mal teilweise etwas zur Paranoia zu neigen. :lol:

MfG Jimini
 
AW: Rekonstruktion von kürzlich von einer Grafikkarte gerenderten Bildern möglich

Dass die Bilder so zerfetzt aussehen, liegt nur daran, dass man die Zeilenbreiten bei der Rekonstruktion nicht korrekt umgesetzt hat. Das lässt sich leicht korrigieren, dann ist das Ganze problemlos vollständig lesbar.

Und überraschend ist daran erst mal überhaupt gar nichts.
 
AW: Rekonstruktion von kürzlich von einer Grafikkarte gerenderten Bildern möglich

Stimmt. Zumindest aber sehe ich keinen Nachteil darin, den VRAM beim Herunterfahren zu leeren, oder?
Das könnte man schon in den Treiber einbauen. Aber echtes Herunterfahren ist ja auch wieder kein Problem. Der einzige Sonderfall ist der Neustart. Beim Standby wiederum ist anschließend der normale RAM noch in "Gefahr", schließlich wird auch der nicht gelöscht sondern nur freigegeben. Und wenn man schon paranoid ist: Die Festplatte wird beim löschen von Dateien auch nicht mit Nullen überschrieben und bei einem Rechner in einem Internetcafé wird die eher nicht pro User gesondert verschlüsselt sein.
 
AW: Rekonstruktion von kürzlich von einer Grafikkarte gerenderten Bildern möglich

Die Funktion, denn RAM beim Neustart zu überschreiben, gibt es bei Windows aber schon länger. Dann führt man das jetzt einfach auch noch für den VRAM ein. Mich wundert nur, das man einfach so auf den FRAME-Buffer zugreifen kann.
 
AW: Rekonstruktion von kürzlich von einer Grafikkarte gerenderten Bildern möglich

Die Funktion, denn RAM beim Neustart zu überschreiben, gibt es bei Windows aber schon länger. Dann führt man das jetzt einfach auch noch für den VRAM ein. Mich wundert nur, das man einfach so auf den FRAME-Buffer zugreifen kann.
Ich habe mir den Code jetzt nicht angesehen, aber ich würde mal sagen, du brauchst einfach nur genug VRAM reservieren (geht ja einfach über eine API wie OpenGL oder DX) und dann den Speicher auslesen. Der wird beim Reservieren ja nicht erst mal mit Nullen überschrieben oder so. Der Frame-Buffer ist ja Teil des normalen VRAMs.
 
AW: Rekonstruktion von kürzlich von einer Grafikkarte gerenderten Bildern möglich

Ich habe mir den Code jetzt nicht angesehen, aber ich würde mal sagen, du brauchst einfach nur genug VRAM reservieren (geht ja einfach über eine API wie OpenGL oder DX) und dann den Speicher auslesen. Der wird beim Reservieren ja nicht erst mal mit Nullen überschrieben oder so. Der Frame-Buffer ist ja Teil des normalen VRAMs.

Hätte eigentlich gedacht, das es beim VRAM auch Virtuelle-Adressen gibt. Bei einem Seiten-Wechsel, wird normalerweise ein leeres Stück-RAM mit den erforderlichen Daten (aus der Auslagerungsdatei) bzw. Nullen gefüllt.
 
AW: Rekonstruktion von kürzlich von einer Grafikkarte gerenderten Bildern möglich

Ich habe solche Bilder schon oft unter Linux-Systemen nach einem Neustart gesehen. Wenn nach einem Soft Reboot der X-Server wieder aktiviert wird, sieht man zu Beginn für ca. eine Sekunde noch den letzten Bildschirminhalt vor dem Shutdown des X-Servers zum Reboot (seltsamerweise verzerrt trotz gleicher Auflösung). Das sieht etwas bizarr aus. Zu Beginn dachte ich jeweils kurz, der Rechner sei defekt/abgestürzt. Hält zum Glück nur ca. eine Sekunde an, bis der Login-Bildschirm angezeigt wird ;)
 
Zurück