ΠžΠ±Π½Π°Ρ€ΠΎΠ΄ΠΎΠ²Π°Π½Π° LPE-ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ CIFSwitch Π² Linux CIFS/cifs-utils

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ бСзопасности Asim Manizada раскрыл ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ CIFSwitch β€” локальноС ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ Π² связкС ядра Linux ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° cifs-utils. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ CIFS/SMB Kerberos/SPNEGO upcall, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ CIFS-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ядра Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ helper’а Π΄Π°Π½Π½Ρ‹Π΅ для Kerberos-Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ SMB-рСсурсов. ОписаниС ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ послС истСчСния эмбарго linux-distros; ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ CVE Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ Π±Ρ‹Π» Π½Π°Π·Π½Π°Ρ‡Π΅Π½.

Π‘ΡƒΡ‚ΡŒ уязвимости Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ request_key("cifs.spnego", …) ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ поддСльноС описаниС ΠΊΠ»ΡŽΡ‡Π°. Π’ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ сцСнарии Ρ‚Π°ΠΊΡƒΡŽ строку Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сам CIFS-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ядра: Π² Π½Π΅ΠΉ содСрТатся свСдСния ΠΎ сСрвСрС, UID, credential UID, PID, Ρ†Π΅Π»ΠΈ upcall ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ…. Однако ядро Π½Π΅ провСряло, Ρ‡Ρ‚ΠΎ описаниС Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΠΈΠ· CIFS-подсистСмы, Π° cifs.upcall, запускаСмый ΠΎΡ‚ root Ρ‡Π΅Ρ€Π΅Π· стандартноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ request-key, довСрял этим полям ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, созданным ядром.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π΅ являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ Β«Π΄Ρ‹Ρ€ΠΎΠΉ Π² любом Linux ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ». Для эксплуатации Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°ΡΡ‚ΡŒ нСсколько условий: Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ уязвимого ядра, установлСнный cifs-utils с ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ cifs.spnego, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ user/mount namespaces, Π° Ρ‚Π°ΠΊΠΆΠ΅ отсутствиС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ со стороны SELinux, AppArmor ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ LSM. Π’ сообщСнии Π½Π° oss-security ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° уязвимых систСмах это Π΄Π°Ρ‘Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ локального ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° ΠΎΡ‚ root.


ВСхничСски Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° строится Π²ΠΎΠΊΡ€ΡƒΠ³ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ cifs.upcall ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² пространства ΠΈΠΌΡ‘Π½, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² поддСльном описании, ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ NSS-запрос Π΄ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ сброса ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ attacker-controlled ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ NSS-модуля root-процСссом. Π’ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… описаниях подчёркиваСтся, Ρ‡Ρ‚ΠΎ это ΠΈΠΌΠ΅Π½Π½ΠΎ логичСская ошибка Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π΅ ядра ΠΈ user space, Π° Π½Π΅ классичСская memory corruption-ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ.

Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ядрС оказалось нСбольшим ΠΏΠΎ ΠΎΠ±ΡŠΡ‘ΠΌΡƒ: для Ρ‚ΠΈΠΏΠ° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ cifs.spnego Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΡΡŽΡ‰Π°Ρ описания, созданныС Π½Π΅ самим CIFS-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ с Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌΠΈ spnego_cred. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ класс Π°Ρ‚Π°ΠΊ Π±Π΅Π· ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… синхронных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² cifs-utils, хотя Π°Π²Ρ‚ΠΎΡ€ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ усилСниС user space всё Ρ€Π°Π²Π½ΠΎ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

AlmaLinux сообщила, Ρ‡Ρ‚ΠΎ базовая Π»ΠΎΠ³ΠΈΠΊΠ° присутствуСт Π²ΠΎ всСх ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… выпусках AlmaLinux, Π° AlmaLinux 8, 9, 10 ΠΈ Kitten 10 ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ установлСнного cifs-utils. ΠŸΡ€ΠΎΠΏΠ°Ρ‚Ρ‡Π΅Π½Π½Ρ‹Π΅ ядра Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ Π² testing-рСпозиториях: для AlmaLinux 9 ΡƒΠΊΠ°Π·Π°Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ kernel-5.14.0-687.5.4.el9_8 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅, для AlmaLinux 10 β€” kernel-6.12.0-211.7.4.el10_2 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅.

Π’ качСствС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ€ Π΄ΠΎ установки исправлСнного ядра прСдлагаСтся ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ cifs-utils, Ссли SMB/CIFS-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π° систСмС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ модуля cifs, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ cifs.spnego Π² request-key ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ user namespaces. Π­Ρ‚ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΌΠ΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π»ΠΎΠΌΠ°Ρ‚ΡŒ Kerberos-Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ для CIFS-ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΉ, поэтому Π½Π° сСрвСрах, Π³Π΄Π΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Kerberos-authenticated SMB-ΡˆΠ°Ρ€Ρ‹, ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ остороТно.

CIFSwitch интСрСсна Π΅Ρ‰Ρ‘ ΠΈ контСкстом обнаруТСния: Π°Π²Ρ‚ΠΎΡ€ описываСт Π΅Ρ‘ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ поиска ΠΌΠ½ΠΎΠ³ΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹Ρ… Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ с использованиСм LLM ΠΈ Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠ³ΠΎ прСдставлСния связСй ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ бСзопасности. Но практичСский Π²Ρ‹Π²ΠΎΠ΄ для администраторов Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»Ρ‘Π½Π½Ρ‹ΠΉ: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ cifs-utils, состояниС user namespaces ΠΈ обновлСния ядра, особСнно Π½Π° систСмах, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Π΅ сцСнарии с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌΠΈ namespace-возмоТностями.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

ΠšΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ хостинг для сайтов с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ DDoS, VPS VDS сСрвСры πŸ”₯ ΠšΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ хостинг для сайтов с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ DDoS, VPS VDS сСрвСры | ProHoster