RSS


[ Pobierz całość w formacie PDF ]
.Jest to program SGID tty.Z powodów bezpieczeństwa Unixnormalnie nie pozwala użytkownikom odczytywać i zapisywać danych na terminalu innychużytkowników.Gdyby tego nie zabroniono, możliwe byłoby napisanie programu odczytującegoczyjeś naciśnięcia klawiszy, co pozwoliłoby przechwycić wpisywane przez kogoś hasło.Abyprogram write mógł funkcjonować, każdy z terminali użytkowników ma ustawione uprawnienie dozapisu przez grupę tty, a sam write jest programem SGID przybierającym tożsamość grupy tty.Program write wypisuje najpierw komunikat, po czym informuje odbiorcę o nazwie użytkownika,który ten komunikat przekazał.Ale write ma potencjalną lukę bezpieczeństwa - uruchomienie powłoki (ang.shell escape).Rozpoczynając linię od wykrzyknika, osoba używająca programu write może spowodowaćuruchamianie pewnych programów (uruchomienie interpretera poleceń jest reliktem z czasów,kiedy w Unixie nie istniało jeszcze sterowanie zadaniami -pozwalało osobom działającym wprogramie write, które były zajęte prowadzeniem konwersacji, uruchamiać inne programy).Dlatego write musi oddać swoje specjalne uprawnienia, zanim wywoła interpreter, w przeciwnymwypadku uruchamiany przez niego program odziedziczy je. Ta część programu write, w której oddawane są uprawnienia grupy tty przed rozpoczęciemwykonywania innego programu, wygląda tak:setgidtgetgid()); /* Oddawanie efektywnych przywilejów grupy*/execl ,(getenv( "SHELL"), "sh"," -c" ,arg ,0);Zauważmy, że write zmienia tylko GID, a nie efektywny UID.Jeśli write byłby zainstalowany jakoSUID root, a nie SGID tty, działałby poprawnie, ale każdy program uruchomiony przezużytkownika za jego pośrednictwem działałby z uprawnieniami superużytkownika! Napastnik,któremu udało się raz włamać do systemu, mógłby zmienić uprawnienia do pliku programu write izostawić sobie w ten sposób furtkę na przyszłość.Sam program działałby oczywiście nadal tak jakwcześniej.Kolejny przykład programu SUID - IFS i /usr/lib/preserve -Czasem interakcja programu SUID z programem systemowym lub biblioteką może być przyczynąluki w systemie bezpieczeństwa, której autor programu nie jest świadomy.Z tego powodu jestwyjątkowo trudno stwierdzić, czy program SUID zawiera jakieś luki bezpieczeństwa czy nie.Jeden z najbardziej znanych przykładów luki bezpieczeństwa tego typu istniał od wielu lat wprogramie /usr/lib/preserve (który obecnie nosi nazwy typu /usr/lib/ex3.5preserve).Ten programjest używany przez edytory vi i ex do automatycznego zapisywania kopii zapasowej edytowanegopliku, jeśli użytkownik zostanie w nieoczekiwanym momencie odłączony od systemu.Programpreserue zapisuje zmienione dane do pliku tymczasowego w specjalnym katalogu, następnie zapomocą programu /bin/mail wysyła użytkownikowi powiadomienie o tym, że plik został zapisany.Ponieważ ktoś mógłby poddać edycji plik zawierający prywatne bądz poufne dane, katalogużywany przez starsze wersje preserve nie był dostępny większości użytkownikom systemu.Abywięc preserue mógł zapisać dane w takim katalogu oraz aby recover mógł je odczytać, oba teprogramy były ustawiane jako SUID root.Aby inteligentny włamywacz systemowy mógi uzyskać przywileje superużytkownika, potrzebowałwiedzieć trzy rzeczy o implementacji /usr/lib/preserve.Program preserve:1.Jest instalowany jako SUIDroot,2.Uruchamia program /bin/mail jako root, aby powiadamiać użytkowników o zabezpieczonychplikach,3.Uruchamia program pocztowy za pomocą wywołania systemowego system().Problem polega na tym, że wywołanie systemO do obsługi wykonywanego łańcuchawykorzystuje program sh.Jest taka mało znana zmienna środowiskowa powłokio nazwie IFS (ang.internal field speparator - wewnętrzny separator pól), której shużywa do określenia miejsc podziału przetwarzanych wierszy na poszczególne wyrazy.Normalnie IFS zawiera tzw.białe znaki: spację, tabulator i znak nowej linii.Aleustawienie jej na znak  /", uruchomienie edytora vi, a następnie wywołanie poleceniapreserue umożliwia wykonanie programu bin z katalogu bieżącego.Program ten byłwykonywany jako root (napis /bin/mail był interpretowany jako wywołanie programubin z parametrem mciii).Użytkownik, który może przekonać system operacyjny do wykonania polecenia z przywilejamiużytkownika root, może stać się superużytkownikiem.Aby przekonać się, jak to można zrobić,spójrzmy na poniższy skrypt, który można nazwać bin i uruchomić dzięki opisanej wyżej lucebezpieczeństwa :## Skrypt powołujący do życia powłokę w trybie SUID root#cd /domowe/mój_kat/bincp /bi n/sh./sh# Teraz zniszczenia! chown root sh chmod 4755 shTen skrypt tworzy kopię programu powłoki Bourne'a w katalogu bin użytkownika, po czymustawia go w tryb SUID root.Tak właśnie problem z programem /usr/lib/pre-serue mógłbywykorzystać włamywacz systemowy.Program preserue miał więcej przywilejów, niż potrzebował - naruszał podstawową zasadębezpieczeństwa  minimalizuj przywileje" (ang.least privilege).Zgodnie z nią program powinienmieć tylko te przywileje, które są mu niezbędne do wykonywania funkcji, jakie na niego nałożono [ Pobierz całość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvs.xlx.pl