Uniwersytet Minnesota zawieszony w rozwoju jądra Linuksa za wysyłanie wątpliwych poprawek

Greg Kroah-Hartman, odpowiedzialny za utrzymanie stabilnej gałęzi jądra Linuksa, zdecydował się zabronić akceptowania jakichkolwiek zmian wprowadzanych do jądra Linuksa przez Uniwersytet Minnesota, a także wycofać wszystkie wcześniej zaakceptowane łatki i ponownie je przejrzeć. Powodem blokady były działania grupy badawczej badającej możliwość promowania ukrytych luk w kodzie projektów open source. Grupa ta przesłała łatki zawierające różnego rodzaju błędy, obserwowała reakcję społeczności i badała sposoby oszukiwania procesu przeglądu zmian. Zdaniem Grega przeprowadzanie takich eksperymentów mających na celu wprowadzenie złośliwych zmian jest niedopuszczalne i nieetyczne.

Powodem zablokowania było to, że członkowie tej grupy wysłali łatkę, która dodała kontrolę wskaźników, aby wyeliminować możliwe podwójne wywołanie funkcji „free”. Biorąc pod uwagę kontekst użycia wskaźnika, sprawdzenie było bezcelowe. Celem przesłania łatki było sprawdzenie, czy błędna zmiana przejdzie kontrolę przez twórców jądra. Oprócz tej łatki pojawiły się inne próby programistów z Uniwersytetu Minnesoty mające na celu wprowadzenie wątpliwych zmian w jądrze, w tym związanych z dodaniem ukrytych luk.

Uczestnik, który przysłał łatki, próbował się usprawiedliwić, mówiąc, że testuje nowy analizator statyczny i zmiana została przygotowana na podstawie wyników testów w nim. Greg jednak zwrócił uwagę, że proponowane poprawki nie są typowe dla błędów wykrywanych przez analizatory statyczne, a wszystkie przesłane łatki w ogóle niczego nie naprawiają. Biorąc pod uwagę, że wspomniana grupa badawcza próbowała w przeszłości rozpowszechniać łatki usuwające ukryte luki, jasne jest, że kontynuowała ona swoje eksperymenty ze społecznością programistów jądra.

Co ciekawe, w przeszłości lider grupy przeprowadzającej eksperymenty zajmował się legalnym łataniem luk, m.in. identyfikowaniem wycieków informacji na stosie USB (CVE-2016-4482) i podsystemie sieciowym (CVE-2016-4485). . W badaniu dotyczącym rozprzestrzeniania się ukrytych luk zespół z Uniwersytetu w Minnesocie przytacza przykład CVE-2019-12819 – luki spowodowanej łatką na jądro wydaną w 2014 roku. Poprawka dodała wywołanie put_device do bloku obsługi błędów w mdio_bus, ale pięć lat później okazało się, że taka manipulacja prowadzi do dostępu do bloku pamięci po jego zwolnieniu („use-after-free”).

Jednocześnie autorzy badania twierdzą, że w swojej pracy podsumowali dane dotyczące 138 poprawek, które wprowadzały błędy i nie były powiązane z uczestnikami badania. Próby wysyłania własnych łatek z błędami ograniczały się do korespondencji e-mailowej i takie zmiany nie trafiały do ​​Gita (jeśli po wysłaniu łatki e-mailem opiekun uznał łatkę za normalną, to proszony był o nieuwzględnianie zmiany, gdyż nie było był błąd, po czym wysłali poprawną łatkę).

Dodatek 1: Sądząc po aktywności autora krytykowanej łatki, od dłuższego czasu wysyła on łatki do różnych podsystemów jądra. Na przykład sterowniki radeon i nouveau niedawno przyjęły zmiany polegające na wywołaniu metody pm_runtime_put_autosuspend(dev->dev) w bloku błędów, co prawdopodobnie spowodowało użycie bufora po zwolnieniu powiązanej z nim pamięci.

Dodatek 2: Greg wycofał 190 zatwierdzeń powiązanych z „@umn.edu” i zainicjował ich ponowny przegląd. Problem polega na tym, że członkowie z adresami „@umn.edu” nie tylko eksperymentowali z rozpowszechnianiem podejrzanych łatek, ale także łatali rzeczywiste luki w zabezpieczeniach, a wycofywanie zmian może skutkować powrotem poprawionych wcześniej problemów z bezpieczeństwem. Niektórzy opiekunowie sprawdzili już ponownie cofnięte zmiany i nie znaleźli żadnych problemów, ale jeden z opiekunów wskazał, że jedna z przesłanych mu łatek zawierała błędy.

Źródło: opennet.ru

Dodaj komentarz