Uniwersytet Minnesoty został odsunięty od rozwoju jądra Linux z powodu wysyłania wątpliwych łatek

Greg Kroah-Hartman, odpowiedzialny za wsparcie stabilnej gałęzi jądra Linux, podjął decyzję o zablokowaniu wszelkich zmian w jądra Linux pochodzących z Uniwersytetu Minnesoty, a także o wycofaniu wszystkich wcześniej zaakceptowanych poprawek oraz ich ponownym przeglądzie. Powodem zablokowania była działalność grupy badawczej, badającej możliwość wprowadzenia ukrytych podatności w kodzie otwartych projektów. Wspomniana grupa wysyłała poprawki, które zawierały różnego rodzaju błędy, obserwowała reakcję społeczności i analizowała sposoby oszustwa w procesie przeglądu zmian. Według Grega, przeprowadzanie takich eksperymentów mających na celu wprowadzenie złośliwych zmian jest nieakceptowalne i nieetyczne.

Powodem zablokowania była wysyłka przez uczestników tej grupy poprawki, która dodawała sprawdzenie wskaźnika w celu uniknięcia możliwego podwójnego wywołania funkcji „free”. Uwzględniając kontekst użycia wskaźnika, sprawdzenie było bezsensowne. Celem wysłania poprawki było zbadanie, czy błędna zmiana przejdzie przez przegląd programistów jądra. Oprócz wspomnianej poprawki ujawniły się także inne próby programistów z Uniwersytetu Minnesoty wprowadzenia wątpliwych zmian w jądro, w tym związanych z dodawaniem ukrytych podatności.

Osoba wysyłająca poprawki próbowała się usprawiedliwić tym, że testuje nowy statyczny analizator, a zmiana została przygotowana na podstawie wyników kontroli w nim. Jednak Greg zwrócił uwagę, że proponowane poprawki nie są charakterystyczne dla błędów wykrywanych przez statyczne analizatory, a wszystkie przesłane poprawki w ogóle nic nie poprawiają. Biorąc pod uwagę, że rozważana grupa badaczy już w przeszłości próbowała promować poprawki z ukrytymi podatnościami, oczywiste jest, że kontynuowali swoje eksperymenty nad społecznością programistów jądra.

Interesujące jest to, że w przeszłości lider grupy przeprowadzającej eksperymenty uczestniczył w legalnym poprawianiu luk, na przykład odkrył wycieki informacji w stosie USB (CVE-2016-4482) oraz w subsystemie sieciowym (CVE-2016-4485). W badaniu ukrytego promowania luk grupa z Uniwersytetu Minnesota podaje przykład luki CVE-2019-12819, wywołanej poprawką wprowadzonej do jądra w 2014 roku. Poprawka dodawała do bloku obsługi błędów w mdio_bus wywołanie put_device, jednak po pięciu latach okazało się, że taka manipulacja prowadzi do odwołania się do bloku pamięci po jej zwolnieniu („use-after-free”).

Autorzy badania twierdzą, że w swojej pracy podsumowali dane o 138 poprawkach, wprowadzających błędy i nie związanych z uczestnikami badania. Próby wysyłania własnych poprawnych poprawek ograniczały się do korespondencji e-mailowej, a takie zmiany nie trafiły do Git (jeśli po wysłaniu poprawki przez email, maintainer uznawał poprawkę za normalną, proszono go, aby nie uwzględniał zmiany, ponieważ była tam pomyłka, a następnie wysyłano poprawną poprawkę).

Dodatek 1: Sądząc po aktywności autora krytykowanej poprawki, od dawna wysyła poprawki do różnych subsystémów jądra. Na przykład w sterownikach radeon i nouveau niedawno przyjęto zmiany z wywołaniem pm_runtime_put_autosuspend(dev->dev) w bloku błędów, co może prowadzić do użycia bufora po zwolnieniu powiązanej z nim pamięci.

Dodatek 2: Greg wycofał 190 commitów związanych z adresami „@umn.edu” i zainicjował ich ponowne recenzje. Problemem jest to, że uczestnicy z adresami „@umn.edu” nie tylko eksperymentowali z promowaniem wątpliwych poprawek, ale także eliminowali rzeczywiste luki, a wycofanie zmian może doprowadzić do powrotu wcześniej naprawionych problemów z bezpieczeństwem. Niektórzy maintainerzy już sprawdzili anulowane zmiany i nie znaleźli problemów, ale jeden z maintainerów zwrócił uwagę, że w jednej z przesłanych mu poprawek były błędy.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster