Die Unternehmen Intel und AMD entwickeln gemeinsam einen erweiterten Befehlssatz namens ChkTag (x86 Memory Tagging), der für eine einheitliche Implementierung in x86-Prozessoren verschiedener Hersteller standardisiert werden soll. In seinen Möglichkeiten ähnelt ChkTag der MTE-Erweiterung (MemTag), die bereits in ARM-Prozessoren verfügbar ist, und ermöglicht ebenfalls die Blockierung von Ausnutzungen, die durch den Zugriff auf bereits freigegebene Speicherbereiche, Pufferüberläufe oder durch den Zugriff auf nicht initialisierten Speicher verursacht werden.
ChkTag bietet neue Prozessoranweisungen, die es auf Hardwareebene ermöglichen, Tags an Speicherbereichen zu binden und die korrekte Verwendung von Zeigern zu überprüfen. Es wird behauptet, dass die Anwendung dieser Anweisungen durch Compiler eine sichere Arbeit mit dem Speicher gewährleistet, ohne die Leistung der Anwendungen zu beeinträchtigen. Gleichzeitig bleiben Anwendungen, die ChkTag verwenden, mit älteren Prozessoren ohne Hardwareunterstützung für ChkTag kompatibel, was die Implementierung von Schutzmaßnahmen erleichtert.
Die implementierte Schutzmethode besteht darin, für jeden Speicherblock ein Tag zu erstellen, das wie ein Schlüssel für den Zugriff auf diesen Speicher dient (zum Beispiel wird bei der Implementierung von MTE für jeweils 16 Bytes ein 4-Bit-Tag erstellt). Das Tag wird von der Anwendung für den zugewiesenen Speicherbereich mithilfe spezieller CPU-Anweisungen generiert und anschließend in den oberen ungenutzten Bits des Zeigers 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 Zeiger überprüft die CPU die Übereinstimmung des Tags, das dem Zeiger zugeordnet ist, mit den Tags, die den Speicherblöcken zugeordnet sind, und erlaubt den Zugriff nur, wenn die Tags übereinstimmen.
Die ChkTag-Technologie wurde im Rahmen der Zusammenarbeit von Intel und AMD in der EAG-Gruppe (x86 Ecosystem Advisory Group) entwickelt, die vor einem Jahr gegründet wurde, um die 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 gehören Linus Torvalds, der Schöpfer des Linux-Kernels, 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 zu den Mitgliedern der Gruppe.
Neben ChkTag haben Intel und AMD auch die Implementierungen des Interrupt-Verarbeitungsschemas FRED (Flexible Return and Event Delivery), des Vektor-Befehlssatzes AVX10 und der Matrixmultiplikationserweiterungen ACE (Advanced Matrix Extensions) standardisiert und vereinheitlicht.
Quelle: opennet.ru
