Коригирането на сигурността на glibc на Linux създаде по -лоша грешка в Linux

The GNU C библиотека (glibc) е от съществено значение за Linux. Така че, когато нещо се обърка, това е голяма работа. Когато в началото на юни беше направено отстраняване на сравнително малък проблем, CVE-2021-33574, което може да доведе до сривове на приложения, това беше нещо добро. За съжаление се оказа, че поправката въведе нов и по -гаден проблем, CVE-2021-38604. Винаги е нещо!

Първият проблем не беше толкова лош. Както каза Сиддеш Поярекар, а червена шапка главен софтуерен инженер написа: „За да монтирайте минимална атака, използвайки този недостатък, нападателят се нуждае от много предпоставки за да може дори да срине програма, използвайки тази грешка mq_notify. “И все пак тя се нуждаеше от закърпване и затова беше поправена. Уви, поправката съдържаше още по -гадна грешка.

Докато проверява пластира, Никита Попов, член на CloudLinux Екипът на TuxCare, откри проблема. Оказва се, че е възможно да се предизвика ситуация, в която a грешка при сегментиране може да бъде задействана в библиотеката. Това може да доведе до срив на всяко приложение, използващо библиотеката. Това, разбира се, би причинило проблем с отказ на обслужване (DoS). Този проблем, за разлика от предишния, би бил много по -лесен за задействане. Упс.

Red Hat дава проблема в него Обща система за оценяване на уязвимости (CVSS) с оценка 7,5, което е “високо”. Атака, използваща него, би била лесна за изграждане и не изисква никакви привилегии. Накратко, това е лоша новина.

Самият Попов смята, че “всяко приложение на Linux, включително преводачи на други езици (python, PHP) е свързано с glibc. Това е второто важно нещо след самото ядро, така че въздействието е доста голямо.”

Попов откри проблема, докато прави „обичайната си рутина за пренасяне на CVE-2021-33574 корекция към поддържаните ни дистрибуции“. Той откри, че нулеви указатели могат да бъдат прехвърлени в определени ситуации.

Технически проблемът се крие в семейството на функциите ‘mq_’. Те осигуряват POSIX съвместима функционалност на интерфейс за програмиране (API) на опашката за съобщения. Обикновено те се използват за процеси между комуникационни процеси (IPC). Всяко приложение за Linux, включително преводачи на други езици (Python, PHP), е свързано с библиотеката glibc.

Попов откри „две ситуации, при които ядрото на Linux ще използва съобщението NOTIFY_REMOVED, докато предава копираните атрибути на нишка по пътя в полето data.attr. За съжаление, хост приложението може да предаде стойност NULL там, ако иска glibc да породи нишка с атрибути по подразбиране. В този случай glibc ще пренасочи NULL указател в pthread_attr_destroy, което ще доведе до срив на целия процес. “

Програмистите на C сред вас вече затварят очи и жалко клатят глави. Едно от общите правила за програмиране на C е да никога, никога не пренасочвайте нулев указател. Въпросът не е “Ще срине ли програмата?” Това е “Колко лошо ще срине програмата?”

Добрата новина е, че уязвимостта и корекцията на кода са изпратени на екипа за разработка на glibc. Той вече е включен в нагоре по веригата glibc.

В допълнение, нов тест беше изпратен в автоматизирания набор от тестове на glibc, за да разбере тази ситуация и да предотврати това да се случи в бъдеще. Долната линия понякога се променя в несвързани кодови пътища, което може да доведе до промяна на поведението на друго място, без програмистът да осъзнае какво се случва. Този тест ще улови тази ситуация.

Дистрибуторите на Linux все още разработват най -добрия начин за внедряване на поправката. Междувременно, ако искате да бъдете особено внимателни – и мисля, че трябва да бъдете – трябва да надстроите до най -новата стабилна версия на glibc 2.34 или по -нова.

Свързани истории:

Публикациите се превеждат автоматично с google translate

Източник: www.zdnet.com