
Implementacja sudo i su w Rust ma na celu poprawę bezpieczeństwa w tych narzędziach.
Niedawno pojawiła się wiadomość, że ISRG (Internet Security Research Group), która jest założycielem projektu Let's Encrypt i promuje HTTPS oraz rozwój technologii zwiększających bezpieczeństwo w Internecie, przedstawił projekt sudo-rs.
sudo-rs jest pozycjonowany jako projekt do tworzenia implementacji narzędzi sudo i su, napisany w języku programowania Rdza i to pozwala na wykonywanie poleceń w imieniu innych użytkowników.
Teraz, prace skupiają się na wykonaniu funkcje w sudo-rs, które pozwalają na jego użycie jako przezroczysty zamiennik sudo w typowych przypadkach użycia (domyślne ustawienia sudoers w Ubuntu, Fedorze i Debianie).
Sudo zostało po raz pierwszy opracowane w latach 1980. Przez dziesięciolecia stało się niezbędnym narzędziem do wprowadzania zmian i minimalizowania ryzyka dla systemu operacyjnego. Ale ponieważ jest napisany w C, Sudo doświadczyło wielu luk związanych z problemami bezpieczeństwa pamięci.
W przyszłości planowane jest stworzenie biblioteki umożliwiającej osadzenie funkcjonalności sudo w innych programach. i zapewnić alternatywną metodę konfiguracji, która pozwala uniknąć analizowania składni pliku konfiguracyjnego sudoers. W zależności od zaimplementowanej funkcjonalności sudo przygotowany zostanie również wariant narzędzia su. Dodatkowo w planach jest wsparcie dla SELinux, AppArmor, LDAP, narzędzia do audytu, możliwość uwierzytelniania bez użycia PAM oraz implementacja wszystkich opcji linii poleceń sudo.
Według Microsoft i Google około 70% luk w zabezpieczeniach jest spowodowanych przez niezabezpieczone zarządzanie pamięcią.. Oczekuje się, że używanie języka Rust do budowania su i sudo zmniejszy ryzyko luk w zabezpieczeniach spowodowane niepewną obsługą pamięci i eliminują występowanie błędów takich jak dostęp do obszaru pamięci po jego zwolnieniu i przepełnienie bufora.
Sudo-rs jest rozwijany przez inżynierów z Ferrous Systems i Tweede Golf przy wsparciu finansowym firm takich jak Google, Cisco, Amazon Web Services.
Kiedy myślimy o tym, w jakie oprogramowanie chcemy zainwestować, myślimy głównie o czterech kryteriach ryzyka:
Szeroko stosowany (prawie wszystkie serwery i/lub klienci)
na granicy krytycznej
Odgrywanie krytycznej roli
Napisane w językach, które nie są bezpieczne dla pamięci (np. C, C++, asm)
Sudo idealnie pasuje do tego kryterium ryzyka. Ważne jest, abyśmy chronili nasze najbardziej krytyczne oprogramowanie, zwłaszcza przed lukami w zabezpieczeniach pamięci. Trudno sobie wyobrazić oprogramowanie, które jest znacznie bardziej krytyczne niż sudo i su.
Bezpieczna obsługa pamięci w Rust jest zapewniona w czasie kompilacji poprzez sprawdzanie referencji, śledzenie własności obiektu i czasu życia obiektu (zakres), a także ocenę dostępu do pamięci pod kątem poprawności podczas wykonywania kodu. Rust zapewnia również ochronę przed przepełnieniem liczby całkowitej, wymaga obowiązkowej inicjalizacji wartości zmiennych przed użyciem, lepiej radzi sobie z błędami w standardowej bibliotece, domyślnie wymusza koncepcję niezmiennych zmiennych i referencji, oferuje silne statyczne typowanie w celu zminimalizowania błędów logicznych.
Warto wspomnieć, że sudo-rs jest już w fazie aktywnego rozwoju. i nie nadaje się do żadnego środowiska produkcyjnego. Używanie sudo-rs jest zalecane tylko do celów programistycznych i testowych, więc wspomina się, że wdrożenie sudo-rs do produkcji i rozwoju prawie na pewno sprawi, że każdy system będzie łatwy do złamania i niebezpieczny.
sudo-rs jest na licencji Apache 2.0 i MIT, i jak wspomniano, została już wydana wersja zapoznawcza sudo-rs, która nie jest jeszcze gotowa do ogólnego użytku. Projekt, którego realizacja rozpoczęła się w grudniu 2022 roku, ma zakończyć się we wrześniu 2023 roku.
Na koniec, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami W poniższym linku.