Zero-Copy wird aus Sicherheitsgründen aus AF_ALG in Linux entfernt.

Im Linux-Kryptographiesystem wird die Unterstützung für Zero-Copy aus der Benutzeroberfläche AF_ALG für Algorithmustypen SKCIPHER und AEAD verwendet.. Die Änderung befindet sich bereits im cryptodev-Tree und wird voraussichtlich in das Merge-Fenster Linux 7.2, das im Juni eröffnet werden soll, zur Abstimmung gebracht. Ursache sind wachsende Bedenken hinsichtlich der Sicherheit von Zero-Copy-Mechanismen im Kernel, insbesondere nach den jüngsten Schwachstellen im kryptografischen Code von Linux.

AF_ALG — ist Benutzeroberfläche für die kryptografische API des Linux-Kernels. Über diese können Programme auf die Implementierungen von Verschlüsselungen, Hashes und AEAD-Algorithmen im Kernel wie auf Sockets zugreifen. Die Linux-Dokumentation beschreibt separat den Zero-Copy-Modus für AF_ALG über splice() und vmsplice(), bei dem der Kernel versucht, unnötige Datenkopien in den Kernspeicher zu vermeiden.

Das Problem ist, dass sich bei AF_ALG der Leistungsgewinn als nicht so wichtig herausgestellt hat, während die Risiken zu groß sind. Der Autor der Änderung, der Entwickler des Linux-Kryptographiesystems Eric Biggers von Google, erwähnt wurde, dass Zero-Copy es dem Benutzerbereich ermöglicht, kryptografische Operationen direkt über die Seiten des Page-Caches von Dateien, wie zum Beispiel der Binärdatei von su, auszuführen, und gleichzeitig Bedingungen für TOCTOU-Sicherheitsanfälligkeiten schafft, bei denen der Speicher gleichzeitig mit der Operation auf ihm verändert werden kann.

Mit anderen Worten, der Mechanismus, der nützlich für Netzwerk- oder Datei-Eingabe/Ausgabe ist, erscheint in AF_ALG als eine zu riskante Optimierung. Laut dem Entwickler wird AF_ALG derzeit hauptsächlich zur Aufrechterhaltung der Abwärtskompatibilität mit einer kleinen Anzahl von Programmen, wie iwd, die noch nicht auf kryptografische Operationen im Benutzerraum umgestellt wurden, beibehalten. Ursprünglich war AF_ALG auch für den Zugriff auf Hardware-Krypto-Beschleuniger gedacht, hat sich aber in der Praxis als nicht sehr effizienter Schnittstelle für diese Aufgabe erwiesen.

Es ist wichtig zu beachten, dass es sich nicht um eine vollständige Entfernung von splice() oder sendfile() für AF_ALG handelt. Die Änderung wird als „weiche Brechung“ der Kompatibilität beschrieben: Das Übertragen von Daten in AF_ALG-Anfragen über splice() und sendfile() wird weiterhin funktionieren, jedoch wird der Kernel nun eine interne stabile Kopie der Daten vor der kryptografischen Operation anfertigen. Die Leistung kann in einigen Fällen sinken, während die Benutzer-API formal nicht beeinträchtigt wird.

Es wird gesondert betont, dass zero-copy vorerst aus skcipher und aead. Die Unterstützung für den Typ hash wird separat behandelt.

Der Kontext der Änderung ist unangenehm. Ende April wurde eine Schwachstelle Copy Fail (CVE-2026-31431) in algif_aead aufgedeckt, also genau in der Benutzer-Krypto-Schnittstelle AF_ALG. Die Forscher zeigten, dass die Verbindung von AF_ALG, splice() und Besonderheiten der AEAD-Verarbeitung es einem nicht privilegierten Benutzer ermöglichte, den Page-Cache zu beschädigen, einschließlich der Seiten, die mit setuid-Binärdateien verbunden sind, und somit einen Privilegienaufstieg zu root zu erlangen.


Das Auftreten Copy Fail hing mit der Optimierung von 2017 zusammen, die AEAD-Operationen auf die Verarbeitung „vor Ort“ umstellte; beim Übertragen einer Datei über splice() arbeitete der Kernel nicht mit einer Kopie, sondern mit Verweisen auf die Seiten des Page Cache. Infolgedessen konnte ein Teil der Daten, die nur als Eingaben betrachtet wurden, im beschriebenen Scatterlist erscheinen.

Die Entfernung von Zero-Copy aus AF_ALG ist kein punktuelles Patch für eine einzige Schwachstelle. Vielmehr ist es ein Versuch, eine ganze Reihe riskanter Szenarien aus dem wenig genutzten UAPI zu beseitigen, bei denen der Nutzen der Optimierung den Aufwand und die potenziellen Folgen nicht rechtfertigt. Für die meisten Benutzer wird die Änderung wahrscheinlich unbemerkt bleiben; für seltene Anwendungen, die AF_ALG über splice() oder sendfile() stark nutzen, könnte die Leistung aufgrund der zusätzlichen Kopierarbeiten beeinträchtigt werden.

Quelle: linux.org.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster