Podatność w ld.so OpenBSD

Dynamiczny loader ld.so, który jest częścią OpenBSD, w określonych warunkach może SUID/SGID-aplikacji pozostawić zmienną środowiskową LD_LIBRARY_PATH, co z kolei pozwala na załadowanie zewnętrznego kodu w kontekście procesu działającego z podwyższonymi uprawnieniami. Łatki naprawiające tę lukę są dostępne dla wydań 6.5 i 6.6. Łatki binarne (syspatch) dla platform amd64, i386 i arm64 już zostały wprowadzone do produkcji i powinny być dostępne do pobrania w momencie publikacji tej wiadomości.

Sedno problemu: w trakcie działania ld.so najpierw wyciąga wartość zmiennej LD_LIBRARY_PATH z otoczenia, za pomocą funkcji _dl_split_path() przekształca ją w tablicę łańcuchów — ścieżek do katalogów. Jeśli później okaże się, że bieżący proces został uruchomiony jako aplikacja SUID/SGID, to stworzona tablica i sama zmienna LD_LIBRARY_PATH zostaną wyczyszczone. Przy tym, jeśli w trakcie działania _dl_split_path() natrafi na brak pamięci (co jest trudne ze względu na jawne ograniczenie rozmiaru zmiennych środowiskowych do 256 kB, ale teoretycznie możliwe), zmienna _dl_libpath przybierze wartość NULL, a kolejna kontrola tej zmiennej spowoduje pominięcie wywołania _dl_unsetenv(«LD_LIBRARY_PATH»).

Luka została odkryta przez specjalistów Qualys, tak jak i kilka wcześniej ujawnionych problemów. Przeprowadzający badanie specjaliści ds. bezpieczeństwa zauważyli szybkość rozwiązania problemu: łatka została przygotowana, a aktualizacje wydane w ciągu trzech godzin po powiadomieniu projektu OpenBSD.

Uzupełnienie: Problemowi nadano numer CVE-2019-19726. Na liście dyskusyjnej oss-security ogłoszono oficjalny komunikat, zawierający prototyp exploita, działającego w OpenBSD 6.6, 6.5, 6.2 i 6.1 na architekturach
amd64 i i386 (exploit może być zaadaptowany również dla innych architektur).
Problem jest użyteczny w domyślnej instalacji i pozwala nieuprzywilejowanemu lokalnemu użytkownikowi na uruchomienie kodu z prawami roota poprzez podstawienie biblioteki przy uruchamianiu narzędzi suid chpass lub passwd. Aby stworzyć warunki niezbędne do wykorzystania, używa się ograniczenia pamięci RLIMIT_DATA przez setrlimit.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster