Eric Biggers, einer der Entwickler des Adiantum-Algorithmus und Betreuer des Linux-Kernel fscrypt-Subsystems, hat einen Patch-Satz vorgeschlagen, um Sicherheitsprobleme zu beheben, die durch eine Besonderheit der Intel-Prozessoren entstehen. Diese gewährleistet nicht konstanten Durchlaufzeiten für unterschiedliche verarbeitete Daten. Bei Intel-Prozessoren tritt das Problem ab der Ice Lake-Familie auf. Ein ähnliches Problem zeigt sich auch bei ARM-Prozessoren.
Die Abhängigkeit der Ausführungszeit von den Daten, die in diesen Anweisungen verarbeitet werden, wird vom Autor der Patches als Sicherheitsanfälligkeit in den Prozessoren bewertet, da ein solches Verhalten die Sicherheit der in der System kryptografischen Operationen nicht garantieren kann. Viele Implementierungen kryptografischer Algorithmen gehen davon aus, dass die Daten keinen Einfluss auf die Ausführungszeit haben, und eine Störung dieses Verhaltens kann zu Angriffen über Seitentemporäle führen, die Daten auf der Grundlage der Analyse der Verarbeitungszeiten wiederherstellen.
Möglicherweise kann die Laufzeitabhängigkeit von Daten auch genutzt werden, um Angriffe durch die Bestimmung von Kern-Daten aus dem Benutzerspeicher zu organisieren. Laut Eric Bigger stellt die Standard-Laufzeit in der Regel keine Konsistenz her, selbst nicht für Anweisungen, die Addition und XOR-Operationen ausführen, sowie für spezielle AES-NI-Anweisungen (diese Informationen sind nicht durch Tests bestätigt, während andere Daten darauf hinweisen, dass beim Multiplizieren von Vektoren und beim Zählen von Bits eine Verzögerung um einen Zyklus auftreten kann).
Um das erwähnte Verhalten zu deaktivieren, haben Intel und ARM neue Flags vorgeschlagen: Das PSTATE-Bit DIT (Data Independent Timing) für ARM-CPUs und das MSR-Bit DOITM (Data Operand Independent Timing Mode) für Intel-CPUs, die das alte Verhalten mit konstanter Laufzeit zurückgeben. Intel und ARM empfehlen, den Schutz bei Bedarf für besonders kritischen Code zu aktivieren. In der Praxis können jedoch wichtige Berechnungen in allen Teilen des Kernels und des Benutzerspeichers auftreten, weshalb die Möglichkeit der dauerhaften Aktivierung der Modi DOITM und DIT für den gesamten Kernel geprüft wird.
Für ARM-Prozessoren wurden bereits Patches für den Linux-Kernel 6.2 angenommen, die das Verhalten des Kernels ändern. Diese Patches gelten jedoch als unzureichend, da sie nur den Kernel-Code abdecken und das Verhalten im Benutzerspace nicht ändern. Für Intel-Prozessoren befindet sich die Aktivierung des Schutzes derzeit noch in der Überprüfungsphase. Bisher wurden keine Maßnahmen zur Messung der Auswirkungen des Patches auf die Leistung durchgeführt, jedoch zeigt die Intel-Dokumentation, dass die Aktivierung des DOITM-Modus die Leistung verringert (z. B. durch das Deaktivieren bestimmter Optimierungen wie datenspezifisches Vorladen) und in zukünftigen Prozessormodellen könnte die Leistungseinbuße verstärkt werden.
Quelle: opennet.ru
