ะ ะฟะพะดัะธััะตะผะต ะบัะธะฟัะพะณัะฐัะธะธ Linux ะณะพัะพะฒะธััั ัะดะฐะปะตะฝะธะต ะฟะพะดะดะตัะถะบะธ เดชเตเดเตเดฏเด เดชเดเตผเดชเตเดชเต ะธะท ะธะฝัะตััะตะนัะฐ AF_ALG ะดะปั ัะธะฟะพะฒ ะฐะปะณะพัะธัะผะพะฒ SKCIPHER ะธ เดเดเดเดกเดฟ. ะะทะผะตะฝะตะฝะธะต ัะถะต ะฝะฐั ะพะดะธััั ะฒ ะดะตัะตะฒะต cryptodev ะธ ะพะถะธะดะฐะตััั ะบ ะพัะฟัะฐะฒะบะต ะฒ ะพะบะฝะพ ัะปะธัะฝะธั Linux 7.2, ะบะพัะพัะพะต ะดะพะปะถะฝะพ ะพัะบัััััั ะฒ ะธัะฝะต. ะะพะฒะพะดะพะผ ััะฐะปะธ ัะฐััััะธะต ะพะฟะฐัะตะฝะธั ะฒะพะบััะณ ะฑะตะทะพะฟะฐัะฝะพััะธ zero-copy-ะผะตั ะฐะฝะธะทะผะพะฒ ะฒ ัะดัะต, ะพัะพะฑะตะฝะฝะพ ะฟะพัะปะต ะฝะตะดะฐะฒะฝะธั ััะทะฒะธะผะพััะตะน ะฒ ะบัะธะฟัะพะณัะฐัะธัะตัะบะพะผ ะบะพะดะต Linux.
AF_ALG เดเดฃเต ะฟะพะปัะทะพะฒะฐัะตะปััะบะธะน ะธะฝัะตััะตะนั ะบ ะบัะธะฟัะพะณัะฐัะธัะตัะบะพะผั API ัะดัะฐ Linux. ะงะตัะตะท ะฝะตะณะพ ะฟัะพะณัะฐะผะผั ะผะพะณัั ะพะฑัะฐัะฐัััั ะบ ัะตะฐะปะธะทะฐัะธัะผ ัะธััะพะฒ, ั ััะตะน ะธ AEAD-ะฐะปะณะพัะธัะผะพะฒ ะฒ ัะดัะต ะบะฐะบ ะบ ัะพะบะตัะฐะผ. ะะพะบัะผะตะฝัะฐัะธั Linux ะพัะดะตะปัะฝะพ ะพะฟะธััะฒะฐะตั ะดะปั AF_ALG zero-copy-ัะตะถะธะผ ัะตัะตะท splice() ะธ vmsplice(), ะฟัะธ ะบะพัะพัะพะผ ัะดัะพ ััะฐัะฐะตััั ะธะทะฑะตะถะฐัั ะปะธัะฝะตะณะพ ะบะพะฟะธัะพะฒะฐะฝะธั ะดะฐะฝะฝัั ะฒ ะฟะฐะผััั ัะดัะฐ.
ะัะพะฑะปะตะผะฐ ะฒ ัะพะผ, ััะพ ะฒ ัะปััะฐะต AF_ALG ัะฐะบะพะน ะฒัะธะณััั ะฒ ะฟัะพะธะทะฒะพะดะธัะตะปัะฝะพััะธ ะพะบะฐะทะฐะปัั ะฝะต ััะพะปั ะฒะฐะถะตะฝ, ะฐ ัะธัะบะธ โ ัะปะธัะบะพะผ ะฒะตะปะธะบะธ. ะะฒัะพั ะธะทะผะตะฝะตะฝะธั, ัะฐะทัะฐะฑะพััะธะบ ะบัะธะฟัะพะณัะฐัะธัะตัะบะพะน ะฟะพะดัะธััะตะผั Linux ะญัะธะบ ะะธะณะณะตัั ะธะท Google, เดเตเดฃเตเดเดฟเดเตเดเดพเดเตเดเดฟ, ััะพ zero-copy ะฟะพะทะฒะพะปัะตั ะฟะพะปัะทะพะฒะฐัะตะปััะบะพะผั ะฟัะพัััะฐะฝััะฒั ะทะฐะฟััะบะฐัั ะบัะธะฟัะพะณัะฐัะธัะตัะบะธะต ะพะฟะตัะฐัะธะธ ะฝะตะฟะพััะตะดััะฒะตะฝะฝะพ ะฝะฐะด ัััะฐะฝะธัะฐะผะธ page cache ัะฐะนะปะพะฒ, ะฝะฐะฟัะธะผะตั ะฑะธะฝะฐัะฝะธะบะฐ su, ะฐ ัะฐะบะถะต ัะพะทะดะฐัั ััะปะพะฒะธั ะดะปั TOCTOU-ััะทะฒะธะผะพััะตะน, ะบะพะณะดะฐ ะฟะฐะผััั ะผะพะถะตั ะธะทะผะตะฝััััั ะพะดะฝะพะฒัะตะผะตะฝะฝะพ ั ะพะฟะตัะฐัะธะตะน ะฝะฐะด ะฝะตะน.
ะะฝัะผะธ ัะปะพะฒะฐะผะธ, ะผะตั ะฐะฝะธะทะผ, ะฟะพะปะตะทะฝัะน ะฒ ัะตัะตะฒะพะผ ะธะปะธ ัะฐะนะปะพะฒะพะผ ะฒะฒะพะดะต-ะฒัะฒะพะดะต, ะฒ AF_ALG ะฒัะณะปัะดะธั ัะปะธัะบะพะผ ะพะฟะฐัะฝะพะน ะพะฟัะธะผะธะทะฐัะธะตะน. ะกะฐะผ AF_ALG, ะฟะพ ัะปะพะฒะฐะผ ัะฐะทัะฐะฑะพััะธะบะฐ, ัะตะนัะฐั ะฒ ะพัะฝะพะฒะฝะพะผ ัะพั ัะฐะฝัะตััั ัะฐะดะธ ะพะฑัะฐัะฝะพะน ัะพะฒะผะตััะธะผะพััะธ ั ะฝะตะฑะพะปััะธะผ ะฝะฐะฑะพัะพะผ ะฟัะพะณัะฐะผะผ, ะฝะฐะฟัะธะผะตั iwd, ะบะพัะพััะต ะตัั ะฝะต ะฑัะปะธ ะฟะตัะตะฒะตะดะตะฝั ะฝะฐ ะบัะธะฟัะพะณัะฐัะธั ะฒ ะฟะพะปัะทะพะฒะฐัะตะปััะบะพะผ ะฟัะพัััะฐะฝััะฒะต. ะะทะฝะฐัะฐะปัะฝะพ AF_ALG ะทะฐะดัะผัะฒะฐะปัั ะธ ะดะปั ะดะพัััะฟะฐ ะบ ะฐะฟะฟะฐัะฐัะฝัะผ ะบัะธะฟัะพััะบะพัะธัะตะปัะผ, ะฝะพ ะฝะฐ ะฟัะฐะบัะธะบะต ะพะบะฐะทะฐะปัั ะฝะต ัะปะธัะบะพะผ ัััะตะบัะธะฒะฝัะผ ะธะฝัะตััะตะนัะพะผ ะดะปั ััะพะน ะทะฐะดะฐัะธ.
ะะฐะถะฝะพ, ััะพ ัะตัั ะธะดัั ะฝะต ะพ ะฟะพะปะฝะพะผ ัะดะฐะปะตะฝะธะธ splice() ะธะปะธ sendfile() ะดะปั AF_ALG. ะะทะผะตะฝะตะฝะธะต ะพะฟะธััะฒะฐะตััั ะบะฐะบ ยซะผัะณะบะฐั ะฟะพะปะพะผะบะฐยป ัะพะฒะผะตััะธะผะพััะธ: ะฟะตัะตะดะฐัะฐ ะดะฐะฝะฝัั ะฒ AF_ALG-ะทะฐะฟัะพัั ัะตัะตะท splice() ะธ sendfile() ะฟัะพะดะพะปะถะธั ัะฐะฑะพัะฐัั, ะฝะพ ัะดัะพ ัะตะฟะตัั ะฑัะดะตั ะดะตะปะฐัั ะฒะฝัััะตะฝะฝัั ััะฐะฑะธะปัะฝัั ะบะพะฟะธั ะดะฐะฝะฝัั ะฟะตัะตะด ะบัะธะฟัะพะณัะฐัะธัะตัะบะพะน ะพะฟะตัะฐัะธะตะน. ะัะพะธะทะฒะพะดะธัะตะปัะฝะพััั ะฒ ะฝะตะบะพัะพััั ัะปััะฐัั ะผะพะถะตั ัะฝะธะทะธัััั, ะทะฐัะพ ะฟะพะปัะทะพะฒะฐัะตะปััะบะพะต API ัะพัะผะฐะปัะฝะพ ะฝะต ะปะพะผะฐะตััั.
ะัะดะตะปัะฝะพ ะฟะพะดัััะบะธะฒะฐะตััั, ััะพ ะฟะพะบะฐ zero-copy ัะฑะธัะฐะตััั ะธะท skcipher ะธ aead. ะะพะดะดะตัะถะบะฐ ะดะปั ัะธะฟะฐ เดนเดพเดทเต ะฑัะดะตั ัะฐััะผะฐััะธะฒะฐัััั ะพัะดะตะปัะฝะพ.
ะะพะฝัะตะบัั ั ะธะทะผะตะฝะตะฝะธั ะฝะตะฟัะธััะฝัะน. ะ ะบะพะฝัะต ะฐะฟัะตะปั ะฑัะปะฐ ัะฐัะบัััะฐ ััะทะฒะธะผะพััั Copy Fail (CVE-2026-31431) ะฒ algif_aead, ัะพ ะตััั ะบะฐะบ ัะฐะท ะฒ ะฟะพะปัะทะพะฒะฐัะตะปััะบะพะผ ะบัะธะฟัะพะธะฝัะตััะตะนัะต AF_ALG. ะััะปะตะดะพะฒะฐัะตะปะธ ะฟะพะบะฐะทะฐะปะธ, ััะพ ัะฒัะทะบะฐ AF_ALG, splice() ะธ ะพัะพะฑะตะฝะฝะพััะตะน AEAD-ะพะฑัะฐะฑะพัะบะธ ะฟะพะทะฒะพะปัะปะฐ ะฝะตะฟัะธะฒะธะปะตะณะธัะพะฒะฐะฝะฝะพะผั ะฟะพะปัะทะพะฒะฐัะตะปั ะฟะพะฒัะตะถะดะฐัั page cache, ะฒ ัะพะผ ัะธัะปะต ัััะฐะฝะธัั, ัะพะพัะฒะตัััะฒัััะธะต setuid-ะฑะธะฝะฐัะฝะธะบะฐะผ, ะธ ะฟะพะปััะฐัั ะฟะพะฒััะตะฝะธะต ะฟัะธะฒะธะปะตะณะธะน ะดะพ root.
เดฐเตเดชเดญเดพเดตเด Copy Fail ะฑัะปะพ ัะฒัะทะฐะฝะพ ั ะพะฟัะธะผะธะทะฐัะธะตะน 2017 ะณะพะดะฐ, ะฟะตัะตะฒะตะดัะตะน AEAD-ะพะฟะตัะฐัะธะธ ะฝะฐ ะพะฑัะฐะฑะพัะบั ยซะฝะฐ ะผะตััะตยป; ะฟัะธ ะฟะตัะตะดะฐัะต ัะฐะนะปะฐ ัะตัะตะท splice() ะฒ AF_ALG ัะดัะพ ัะฐะฑะพัะฐะปะพ ะฝะต ั ะบะพะฟะธะตะน, ะฐ ัะพ ัััะปะบะฐะผะธ ะฝะฐ ัััะฐะฝะธัั page cache. ะ ัะตะทัะปััะฐัะต ัะฐััั ะดะฐะฝะฝัั , ะบะพัะพััะต ััะธัะฐะปะธัั ัะพะปัะบะพ ะฒั ะพะดะฝัะผะธ, ะผะพะณะปะฐ ะพะบะฐะทะฐัััั ะฒ ะทะฐะฟะธััะฒะฐะตะผะพะผ scatterlist.
ะฃะดะฐะปะตะฝะธะต zero-copy ะธะท AF_ALG ะฝะต ัะฒะปัะตััั ัะพัะตัะฝัะผ ะธัะฟัะฐะฒะปะตะฝะธะตะผ ัะพะปัะบะพ ะพะดะฝะพะน ััะทะฒะธะผะพััะธ. ะกะบะพัะตะต ััะพ ะฟะพะฟััะบะฐ ัะฑัะฐัั ัะตะปัะน ะบะปะฐัั ัะธัะบะพะฒะฐะฝะฝัั ััะตะฝะฐัะธะตะฒ ะธะท ะผะฐะปะพะธัะฟะพะปัะทัะตะผะพะณะพ UAPI, ะณะดะต ะฒัะธะณััั ะพั ะพะฟัะธะผะธะทะฐัะธะธ ะฝะต ะพะฟัะฐะฒะดัะฒะฐะตั ัะปะพะถะฝะพััั ะธ ะฟะพัะตะฝัะธะฐะปัะฝัะต ะฟะพัะปะตะดััะฒะธั. ะะปั ะพะฑััะฝัั ะฟะพะปัะทะพะฒะฐัะตะปะตะน ะธะทะผะตะฝะตะฝะธะต, ัะบะพัะตะต ะฒัะตะณะพ, ะพััะฐะฝะตััั ะฝะตะทะฐะผะตัะฝัะผ; ะดะปั ัะตะดะบะธั ะฟัะพะณัะฐะผะผ, ะฐะบัะธะฒะฝะพ ะธัะฟะพะปัะทัััะธั AF_ALG ัะตัะตะท splice() ะธะปะธ sendfile(), ะฒะพะทะผะพะถะฝะฐ ะฟัะพัะฐะดะบะฐ ะฟัะพะธะทะฒะพะดะธัะตะปัะฝะพััะธ ะธะท-ะทะฐ ะดะพะฟะพะปะฝะธัะตะปัะฝะพะณะพ ะบะพะฟะธัะพะฒะฐะฝะธั.
เด เดตเดฒเดเดฌเด: linux.org.ru
