Die Unternehmen Intel und AMD entwickeln gemeinsam einen erweiterten Satz von ChkTag-Anweisungen (x86 Memory Tagging), der zur einheitlichen Implementierung in x86-Prozessoren verschiedener Hersteller standardisiert wird. In Bezug auf die Möglichkeiten ähnelt ChkTag der MTE-Erweiterung (MemTag), die bereits in ARM-Prozessoren verfügbar ist und ebenfalls die Ausnutzung von Schwachstellen verhindert, die durch den Zugriff auf bereits freigegebene Speicherblöcke, Buffer-Überläufe oder den Zugriff auf Speicher vor der Initialisierung verursacht werden.
ChkTag bietet neue Prozessoranweisungen, die es auf Hardwareebene ermöglichen, Tags mit Speicherbereichen zu verknüpfen und die Richtigkeit der Pointer-Nutzung zu überprüfen. Es wird behauptet, dass die Verwendung dieser Anweisungen durch Compiler eine sichere Speicherverwaltung ohne Leistungseinbußen für Anwendungen ermöglicht. Dabei bleiben Anwendungen, die ChkTag verwenden, mit älteren Prozessoren, die keine Hardwareunterstützung für ChkTag bieten, kompatibel, was die Implementierung von Schutzmaßnahmen erleichtert.
Das implementierte Schutzverfahren besteht darin, für jeden Speicherblock ein Tag zu erstellen, das als Schlüssel zum Zugriff auf diesen Speicher fungiert (zum Beispiel wird bei der MTE-Implementierung alle 16 Bytes ein 4-Bit-Tag erstellt). Das Tag wird von der Anwendung für den zugewiesenen Speicherbereich mithilfe spezieller CPU-Anweisungen generiert und dann in den oberen ungenutzten Bits des Pointers sowie in einem reservierten und für Anwendungen nicht zugänglichen Bereich des linearen/virtuellen Speichers gespeichert. Beim Zugriff auf den Speicher mit einem getaggten Pointer überprüft die CPU die Übereinstimmung des Tags, das mit dem Pointer verknüpft ist, mit den Tags, die mit den Speicherblöcken verknüpft sind, und gestattet den Zugriff nur, wenn die Tags übereinstimmen.
Die ChkTag-Technologie wurde im Rahmen der Zusammenarbeit von Intel und AMD in der EAG (x86 Ecosystem Advisory Group) entwickelt, die vor einem Jahr gegründet wurde, um eine Kompatibilität zwischen x86-Plattformen zu gewährleisten, die Schnittstellen der Produkte von Intel und AMD zu standardisieren, die Softwareentwicklung für x86-Systeme zu vereinfachen und die Bedürfnisse der Entwickler zur Erweiterung der Architektur zu identifizieren. Neben Intel und AMD sind auch Linus Torvalds, der Schöpfer des Linux-Kerns, Tim Sweeney, der Gründer von Epic Games und einer der Hauptentwickler der Spiel-Engine Unreal Engine, sowie Vertreter von Broadcom, Dell, Google, Hewlett Packard, Lenovo, Meta, Microsoft, Oracle und Red Hat Teil der Gruppe.
Neben ChkTag haben Intel und AMD auch die Implementierungen des FRED (Flexible Return and Event Delivery)-Interruptverarbeitungsmodells, der AVX10-Vektorisiervorschriften und der ACE (Advanced Matrix Extensions)-Erweiterungen für Matrixmultiplikation standardisiert und vereinheitlicht.
Quelle: opennet.ru
