Linux ядросында екі осалдық анықталды. Бұл осалдық бірнеше күн бұрын жарияланған Copy Fail осалдыққа ұқсас, бірақ олар әртүрлі ішкі жүйелерге - xfrm-ESP және RxRPC-ге әсер етеді. Бұл осалдық сериясы Dirty Frag (Copy Fail 2 деп те аталады) кодтық атауымен белгіленді. Бұл осалдықтардың артықшылығы жоқ пайдаланушыға бет кэшіндегі процесс деректерін қайта жазу арқылы түбірлік құқықтарды алуға мүмкіндік береді. Барлық ағымдағы Linux дистрибутивтерінде жұмыс істейтін эксплойт қолжетімді. Осалдық патчтар жарияланғанға дейін анықталған, бірақ айналып өту жолы бар.
Dirty Frag екі түрлі осалдықты қамтиды: біріншісі xfrm-ESP модуліндегі, ESP (Encapsulating Security Payload) хаттамасын пайдаланып IPsec шифрлау операцияларын жеделдету үшін пайдаланылады, ал екіншісі AF_RXRPC сокет тұқымдасын және UDP арқылы жұмыс істейтін аттас RPC хаттамасын жүзеге асыратын RxRPC драйверіндегі осалдық. Әрбір осалдық, бөлек алынғанда, түбірлік құқықтарға мүмкіндік береді. xfrm-ESP осалдық Linux ядросында 2017 жылдың қаңтарынан бастап, ал RxRPC осалдық 2023 жылдың маусымынан бастап бар. Екі мәселе де бет кэшіне тікелей жазуға мүмкіндік беретін оңтайландырулардан туындайды.
xfrm-ESP осалдықтарын пайдалану үшін пайдаланушыда атаулар кеңістігін жасауға рұқсат болуы керек, ал RxRPC осалдықтарын пайдалану үшін rxrpc.ko ядро модулі жүктелуі керек. Мысалы, Ubuntu жүйесінде AppArmor ережелері артықшылығы жоқ пайдаланушылардың атаулар кеңістігін жасауына жол бермейді, бірақ rxrpc.ko модулі әдепкі бойынша жүктеледі. Кейбір дистрибутивтерде rxrpc.ko модулі жоқ, бірақ атаулар кеңістігін жасауды бұғаттамайды. Мәселені анықтаған зерттеуші жүйеге екі осалдық арқылы шабуыл жасай алатын біріктірілген эксплойт жасап шығарды, бұл мәселені барлық негізгі дистрибутивтерде пайдалануға мүмкіндік берді. Бұл зиянкестің 6.17.0-23 ядросы бар Ubuntu 24.04.4, 6.12.0-124.49.1 ядросы бар RHEL 10.1, 7.0.2-1 ядросы бар openSUSE Tumbleweed, 6.12.0-224 ядросы бар CentOS Stream 10, 6.12.0-124.52.3 ядросы бар AlmaLinux 10 және 6.19.14-300 ядросы бар Fedora 44 жүйелерінде жұмыс істейтіні расталды.
Copy Fail осалдығындағыдай, xfrm-ESP және RxRPC-дегі мәселелер splice() функциясын пайдаланып, деректердің орнында шифрын ашудан туындайды, ол файл дескрипторлары мен құбырлары арасында бет кэшіндегі элементтерге сілтемелерді беру арқылы деректерді көшірмей тасымалдайды. Жазу ығысулары бет кэшіндегі элементтерге тікелей сілтемелерді пайдалануды ескеру үшін тиісті тексерулерсіз есептелді, бұл арнайы жасалған сұраныстарға берілген ығысудағы 4 байтты қайта жазуға және бет кэшіндегі кез келген файлдың мазмұнын өзгертуге мүмкіндік берді.
Барлық файлды оқу операциялары алдымен бет кэшінен мазмұнды алады. Егер бет кэшіндегі деректер өзгертілсе, файлды оқу операциялары дискіде сақталған нақты ақпаратты емес, ауыстырылған деректерді қайтарады. Осалдықты пайдалану suid түбірлік жалаушасы бар орындалатын файл үшін бет кэшін өзгертуге дейін барады. Мысалы, түбірлік артықшылықтарды алу үшін /usr/bin/su орындалатын файлын оқып, оны бет кэшіне орналастыруға болады, содан кейін өз кодын бет кэшіне жүктелген осы файлдың мазмұнына ауыстыруға болады. "su" утилитасын кейіннен орындау бет кэшінен өзгертілген көшірменің дискіден түпнұсқа орындалатын файл емес, жадқа жүктелуіне әкеледі.
Осалдықты ашу және патчтарды үйлестірілген түрде шығару 12 мамырға жоспарланған болатын, бірақ ақпараттың ағып кетуіне байланысты осалдық туралы ақпарат патчтар шығарылғанға дейін жариялануы керек болды. Сәуір айының соңында rxrpc, ipsec және xfrm патчтары осалдыққа қатысты екені айтылмай, netdev жалпыға қолжетімді пошта тізіміне жарияланды. 5 мамырда IPsec ішкі жүйесін қолдаушы xfrm-esp модулінде ұсынылған түзетумен netdev Git репозиторийіне енгізілген өзгерісті қабылдады. Өзгерістің сипаттамасы algif_aead модуліндегі Copy Fail осалдыққа әкелген мәселенің сипаттамасымен көбінесе бірдей болды. Қауіпсіздік зерттеушісі бұл түзетуге қызығушылық танытып, жұмыс істейтін эксплойт жасап, оны жариялады, бірақ 12 мамырға дейін мәселе туралы ақпаратты ашуға тыйым салынғанын білмеді.
Linux ядросы мен дистрибутивтердегі ядро пакеттеріне арналған түзетулері бар жаңартулар әлі жарияланған жоқ, бірақ мәселелерді шешетін патчтар қолжетімді — xfrm-esp және rxrpc. CVE идентификаторлары тағайындалмаған, бұл дистрибутивтердегі пакет жаңартуларын бақылауды қиындатады. Шешім ретінде esp4, esp6 және rxrpc ядро модульдерінің жүктелуін бұғаттауға болады: sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"
Ақпарат көзі: opennet.ru
