Из AF_ALG Π² Linux ΡƒΠ±ΠΈΡ€Π°ΡŽΡ‚ zero-copy ΠΈΠ· сообраТСний бСзопасности

Π’ подсистСмС ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ Linux готовится ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ nula kopio ΠΈΠ· интСрфСйса AF_ALG для Ρ‚ΠΈΠΏΠΎΠ² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² SKCIPHER ΠΈ AEAD. ИзмСнСниС ΡƒΠΆΠ΅ находится Π² Π΄Π΅Ρ€Π΅Π²Π΅ cryptodev ΠΈ оТидаСтся ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π² ΠΎΠΊΠ½ΠΎ слияния Linux 7.2, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒΡΡ Π² июнС. Поводом стали растущиС опасСния Π²ΠΎΠΊΡ€ΡƒΠ³ бСзопасности zero-copy-ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π² ядрС, особСнно послС Π½Π΅Π΄Π°Π²Π½ΠΈΡ… уязвимостСй Π² криптографичСском ΠΊΠΎΠ΄Π΅ Linux.

AF_ALG Estas uzantinterfaco ΠΊ криптографичСскому API ядра Linux. Π§Π΅Ρ€Π΅Π· Π½Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ рСализациям ΡˆΠΈΡ„Ρ€ΠΎΠ², Ρ…ΡΡˆΠ΅ΠΉ ΠΈ AEAD-Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π² ядрС ΠΊΠ°ΠΊ ΠΊ сокСтам. ДокумСнтация Linux ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ описываСт для AF_ALG zero-copy-Ρ€Π΅ΠΆΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· splice() ΠΈ vmsplice(), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ядро стараСтся ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ лишнСго копирования Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ядра.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² случаС AF_ALG Ρ‚Π°ΠΊΠΎΠΉ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ оказался Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ Π²Π°ΠΆΠ΅Π½, Π° риски β€” слишком Π²Π΅Π»ΠΈΠΊΠΈ. Автор измСнСния, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ криптографичСской подсистСмы Linux Π­Ρ€ΠΈΠΊ БиггСрс ΠΈΠ· Google, atentigis, Ρ‡Ρ‚ΠΎ 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 ΠΈ antaΕ­e. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° для Ρ‚ΠΈΠΏΠ° hash Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ Ρƒ измСнСния нСприятный. Π’ ΠΊΠΎΠ½Ρ†Π΅ апрСля Π±Ρ‹Π»Π° раскрыта ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Copy Fail (CVE-2026-31431) Π² algif_aead, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π· Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ криптоинтСрфСйсС AF_ALG. Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ связка AF_ALG, splice() ΠΈ особСнностСй AEAD-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ позволяла Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π°Ρ‚ΡŒ page cache, Π² Ρ‚ΠΎΠΌ числС страницы, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ setuid-Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ°ΠΌ, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ Π΄ΠΎ root.


Apero Copy Fail Π±Ρ‹Π»ΠΎ связано с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ 2017 Π³ΠΎΠ΄Π°, ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄ΡˆΠ΅ΠΉ AEAD-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Β«Π½Π° мСстС»; ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Ρ„Π°ΠΉΠ»Π° Ρ‡Π΅Ρ€Π΅Π· splice() Π² AF_ALG ядро Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π½Π΅ с ΠΊΠΎΠΏΠΈΠ΅ΠΉ, Π° со ссылками Π½Π° страницы page cache. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ‡ΠΈΡ‚Π°Π»ΠΈΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ, ΠΌΠΎΠ³Π»Π° ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π² записываСмом scatterlist.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ zero-copy ΠΈΠ· AF_ALG Π½Π΅ являСтся Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹ΠΌ исправлСниСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ уязвимости. Π‘ΠΊΠΎΡ€Π΅Π΅ это ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ класс рискованных сцСнариСв ΠΈΠ· ΠΌΠ°Π»ΠΎΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ UAPI, Π³Π΄Π΅ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ ΠΎΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ ΠΎΠΏΡ€Π°Π²Π΄Ρ‹Π²Π°Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ послСдствия. Для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, скорСС всСго, останСтся Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌ; для Ρ€Π΅Π΄ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… AF_ALG Ρ‡Π΅Ρ€Π΅Π· splice() ΠΈΠ»ΠΈ sendfile(), Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° просадка ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ·-Π·Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ копирования.

fonto: linux.org.ru

AΔ‰etu fidindan gastigadon por retejoj kun DDoS-protekto, VPS-VDS-serviloj πŸ”₯ AΔ‰etu fidindan retejan gastigadon kun DDoS-protekto, VPS VDS-servilojn | ProHoster