Hallo,
das Problem sind nicht die Programme in den High-Level-Shader-Sprachen die für generische abstrakte Shader entwickelt werden sondern der fertig kompilierte Objekt-Code der von den realen Shadern ausgeführt wird. Dort gibt es meines Wissen nach echte 64Bit-Pointer in den modernen Shadern (sowohl bei AMD, NVidea als auch bei Intel). Die GPUs haben auch eine Art MMU, mit der ganz gewöhnliches Paging gemacht wird, damit die Texturen und sonstigen Daten die ja verstreut im physischen RAM liegen zusammenhängend benutzt werden können, die GPUs haben quasi eine eigene virtualisierte Sicht auf den RAM. Deswegen macht es auch theoretisch nichts aus ob Texturen u.ä. wirklich im lokalen GPU-RAM oder nur im normalen Haupt-RAM liegen, von der Performance mal abgesehen. In den Treibern wird wohl keine Sicherheitsüberprüfung des Shader-Objekt-Code stattfinden, dazu müsste dort eine recht umfangreiche Code- und Daten-Flussanalyse durchgeführt werden um feststellen zu können ob irgend ein Pointer nicht doch mal auf Speicherbereiche zeigt die eigentlich nicht gewünscht sind. Spätestens wenn die Shader-Programme in der Lage sind Texturen u.ä. zur Laufzeit von der SW flexibel zur Verfügung gestellt zu bekommen ist auch das nicht mehr sinnvoll möglich.
Es gibt also sehr viele Punkte an denen man ansetzen könnte um mit Hilfe der GPU den normalen RAM zu manipulieren, z.B. einfach nur das GPU-Paging zu verbiegen um anderen physischen Speicher anzusprechen. Ich wette hier stecken die Viren-Programmierer noch in der sehr frühen Konzeptionierungsphase, aber sollte WebGL wirklich so kommen wie derzeit beabsichtigt dann dürfte das ein neues lukratives und sicher auch interessantes Betätigungsfeld für die Viren-Programmierer und deren Kontrahenten bei den AV-SW-Herstellern werden. Ich gehe davon aus das die Einführung von WebGL in erster Linie der Aufrechterhaltung der Einnahmequellen der AV-SW-Hersteller dient.
Bezüglich DMA ging ich bisher davon aus, dass bestimmte Bereiche im RAM gemappt werden.
Wie bzw. durch welche HW-Komponente soll das den passieren? Ohne eine IOMMU hat jede busmasterfähige HW vollen Zugriff auf den gesamten physischen Adressraum, sogar auf andere HW-Komponenten (falls der Chipsatz das unterstützt, in der PCI-Spec steht dazu "implementierungsspezifisch"). Das trifft übrigens nicht nur auf PCI und seine Erben zu sondern gilt auch für EISA, VLB u.a.m. Das einzigste was wirklich hilft ist eine gute IOMMU die direkt im Chipsatz steckt und
jeden Zugriff der von der Peripherie-HW kommt filtert und nur vom OS-Kernel kontrolliert wird.
Falls das zutrifft könnte man Speicherschutz mit Segmenten erreichen.
Sowas traust Du Dich vorzuschlagen? Respekt! Die bösen Segmente will doch heute niemand mehr haben. Die waren schließlich zu DOS-Zeiten ein Quell grenzenloser Freude.
Abgesehen davon bin ich nicht sehr glücklich darüber, dass die Ingenieure von PC-Hardware davon auszugehen scheinen, dass Bedrohungen für ein System ausschließlich durch Software bestehen und folglich den Hardware-Komponenten eines Systems bedingungslos vertrauen.
Willkommen in der Realität! Dieses bedingungslose Vertrauen erstreckt sich übrigens auch auf die Treiber, mit der passenden Konfiguration kann jede busmasterfähige HW eine echte Bedrohung werden (falls dem nicht eine IOMMU Einhalt gebietet, aber die wird vom OS-Kernel sicher auch nur anhand der Wünsche der potentiell fehlerhaften Treiber konfiguriert, wenn Du Dir jetzt mal mein IPC-Konzept anschaust wirst Du vielleicht feststellen das Segmente hier einiges zu bieten haben). Wenn Du die Bedrohungen durch Firewire kennst und Dir überlegst was ein vollwertiger PCI-Express-Link nach draußen erst alles anstellen kann dann dürfte es Dir sicher auch schwer fallen die Idee von Thunderbolt zu verstehen.
Grüße
Erik