Dirty Pipe, една от най-сериозните уязвимости от години в Linux

Наскоро в мрежата беше пусната новината за откритието на нова уязвимост в Linux който е посочен като "Висока сериозност", която засяга всички ядра от версия 5.8, както и производни, включително Android.

Известен като Dirty Pipe позволява данните да бъдат презаписани във файлове само за четене и може да доведе до ескалация на привилегиите чрез инжектиране на код в "корен" процес.

Въпреки че вече е закърпена в основното ядро ​​на Linux, грешката може да бъде въоръжена под формата на експлойт за ескалация на привилегии на всички устройства, работещи с Linux ядрото версия 5.8 или по-нова.

Това също означава, че куп наскоро пуснати смартфони с Android, като Samsung Galaxy S22 и Google Pixel 6, също са уязвими, докато всяко устройство не получи съответната корекция на ядрото от съответния OEM.

Относно Dirty Pipe

Уязвимостта беше разкри изследователят по сигурността Макс Келерман и каталогизиран като (CVE-2022-0847), отне няколко месеца, за да се намери експлойт за доказване на концепцията.

Уязвимостта позволява на непривилегирован потребител да инжектира и презаписва данни във файлове само за четене, включително SUID процеси, работещи като root. Разговорният прякор изглежда е игра на прословутия бъг Мръсна крава и Linux механизъм, наречен конвейер за предаване на съобщения между процесите, тъй като последният се използва по време на рутинната експлоатация.

Всичко започна преди година с билет за поддръжка, свързан с повредени файлове. Клиент се оплака, че изтеглените регистрационни файлове за достъп не могат да бъдат разопаковани. И наистина, имаше повреден регистрационен файл на един от лог сървърите; може да бъде некомпресиран, но gzip съобщи за CRC грешка. Не можах да обясня защо е повреден, но предположих, че нощният процес на разделяне се е сринал и е произвел повреден файл. Коригирах ръчно CRC на файла, затворих билета и скоро забравих за проблема.

След месеци анализи, в крайна сметка изследователят открива, че повредените клиентски файлове са резултат от грешка в ядрото на Linux. Той намери начин да използва Dirty Pipe, за да позволи на всеки с акаунт, включително по-малко привилегировани акаунти „никой“, да добави SSH ключ към акаунта на root потребител.

За да задейства уязвимостта, Келерман сподели своето доказателство за концепция, нападателят трябва да има разрешения за четене. Също така, превъртането не трябва да е на границата на страницата, писането не може да пресича границата на страницата и файлът не може да бъде преоразмерен.

За да използвате тази уязвимост, трябва: да създадете тръба, да попълните тръбата с произволни данни (като зададете флага PIPE_BUF_FLAG_CAN_MERGE на всички записи в пръстена), да изпразните тръбата (оставяйки флага зададен на всички екземпляри на структурата pipe_buffer в структурата на пръстена pipe_inode_info), обединете данните от целевия файл (отворен с O_RDONLY) в тръбата точно преди целевото отместване и запишете произволни данни в тръбата.

Dirty Pipe също засяга всяка версия на Android, базирана на една от уязвимите версии на ядрото на Linux. Тъй като Android е толкова фрагментиран, засегнатите модели устройства не могат да бъдат проследени еднакво.

Според Келерман, Google обедини своята корекция на грешки с ядрото на Android миналия месец, веднага след като беше коригиран с пускането на версии на ядрото на Linux 5.16.11, 5.15.25 и 5.10.102.

Като казахме това, вероятно ще трябва да изчакаме малко, преди OEM производителите да започнат да пускат актуализации на Android, съдържащи корекцията. Pixel 6 на Google, например, все още е уязвим, но напредналите потребители могат да смекчат недостатъка, като инсталират персонализирано закърпено ядро ​​за вторичен пазар като алтернативна опция.

Разработчиците на ядрото на Linux пуснаха корекции (5.16.11, 5.15.25, 5.10.102) на 23 февруари, докато Google коригира ядрото на Android на 24 февруари. Келерман и други експерти сравниха уязвимостта с CVE-2016-5195 „Мръсна крава“ и те казаха, че е още по-лесно за експлоатация.

И накрая, ако се интересувате да научите повече за това, можете да се консултирате с подробностите В следващия линк.