I Linux-kryptografi-systemet er der en plan om at fjerne understøttelse zero-copy fra grænsefladen AF_ALG for algoritmestyperne SKCIPHER og AEAD. Ændringen er allerede i cryptodev-træet og forventes at blive sendt til fusionsvinduet Linux 7.2, som skal åbne i juni. Årsagen er stigende bekymringer omkring sikkerheden ved zero-copy-mekanismer i kernen, især efter nylige sårbarheder i Linux' kryptografiske kode.
AF_ALG — det er grænsefladen til Linux' kryptografiske API. Gennem dette kan programmer få adgang til implementeringer af cipher, hashes, og AEAD-algoritmer i kernen som sockets. Linux-dokumentationen beskriver specifikt for AF_ALG zero-copy-tilstand gennem splice() og vmsplice(), hvor kernen forsøger at undgå unødvendig kopiering af data til kernen.
Problemet er, at gevinsten i ydeevne ved AF_ALG ikke er så betydelig, mens risiciene er for store. Forfatteren af ændringen, Eric Biggers, der arbejder med Linux' kryptografi-system hos Google, at, bemærker, at zero-copy giver brugerområdet mulighed for at udføre kryptografiske operationer direkte på siderne i page cache af filer, såsom binærfiler som su, og skaber også betingelser for TOCTOU-sårbarheder, hvor hukommelsen kan ændres samtidigt med operationer.
Med andre ord, mekanismen, der er nyttig i netværks- eller fil-IO, virker i AF_ALG som en for farlig optimering. Ifølge udvikleren bevares AF_ALG nu primært for tilbagekompatibilitet med et lille antal programmer, som iwd, der endnu ikke er blevet overført til kryptografi i brugerområdet. AF_ALG var oprindeligt designet til adgang til hardware-cryptoacceleration, men viste sig i praksis at være et mindre effektivt interface til denne opgave.
Det er vigtigt at bemærke, at dette ikke handler om en fuldstændig fjernelse af splice() eller sendfile() for AF_ALG. Ændringen beskrives som en "blød brydning" af kompatibilitet: Overførsel af data til AF_ALG-anmodninger via splice() og sendfile() vil fortsat fungere, men kernen vil nu lave en intern stabil kopi af dataene før kryptografiske operationer. Ydeevnen kan i visse tilfælde falde, men bruger-API'en brydes ikke formelt.
Det understreges separat, at zero-copy i øjeblikket fjernes fra skcipher og aead. Understøttelsen for typen hash vil blive behandlet separat.
Konteksten for ændringen er ubehagelig. I slutningen af april blev der afdækket en sårbarhed Copy Fail (CVE-2026-31431) i algif_aead, som netop relaterer sig til brugerens kryptointerface AF_ALG. Forskere viste, at kombinationen af AF_ALG, splice() og AEAD-behandlingsspecifikationer gjorde det muligt for en ikke-privilegeret bruger at beskadige page cache, herunder sider, der var relateret til setuid-binære filer, og opnå privilegier som root.
Fremkomsten Copy Fail var relateret til optimeringen i 2017, der overførte AEAD-operationer til 'in-place' behandling; ved overførsel af filer via splice() i AF_ALG arbejdede kernen ikke med en kopi, men med henvisninger til sider i page cache. Som et resultat kunne dele af dataene, der blev betragtet som kun indgående, ende i det skrivbare scatterlist.
Fjernelse af zero-copy fra AF_ALG er ikke en punktløsning for kun én sårbarhed. Det er snarere et forsøg på at fjerne en hel klasse af risikable scenarier fra det sjældent brugte UAPI, hvor gevinsten ved optimering ikke opvejer kompleksiteten og de potentielle konsekvenser. For almindelige brugere vil ændringen sandsynligvis gå ubemærket hen; for sjældne programmer, der aktivt bruger AF_ALG via splice() eller sendfile(), kan der være en nedgang i ydeevne på grund af den ekstra kopi.
Kilde: linux.org.ru
