Badacze z Qualys odkryli nową lukę umożliwiającą zdalne wykonanie kodu w OpenSSH. Podatność występuje w agencie OpenSSH (forward ssh-agent) i umożliwia atakującemu wykonanie dowolnych poleceń.
Krótko o OpenSSH
OpenSSH jest używany na wielu serwerach i aplikacjach w firmach między innymi w celu zdalnego logowania oraz przesyłania plików, zapewniając jednoczesne szyfrowanie takiej komunikacji.
ssh-agent to agent programu OpenSSH działający w tle, który buforuje klucze prywatne do uwierzytelniania klucza publicznego SSH w celu zmniejszenia potrzeby regularnego wprowadzania hasła. Inicjowany na początku sesji X lub logowania, działa poprzez przechowywanie kluczy w pamięci, a rozładowywanie odbywa się dopiero po zakończeniu procesu.
Badacze bezpieczeństwa odkryli w nim nową lukę (i byli w stanie niezależnie ją zweryfikować) oraz opracowali exploit PoC na instalacjach Ubuntu Desktop 22.04 oraz 21.10. Zgodnie z podaną przez nich informacją, „inne dystrybucje Linuksa są prawdopodobnie podatne na ataki i można je wykorzystać”.
Zdalne wykonanie kodu – CVE-2023-38408
Luka dotyczy funkcji PKCS#11 w OpenSSH w wersji 9.3p2, która posiada nieodpowiednio zabezpieczoną ścieżkę wyszukiwania. Problem występuje z powodu niekompletnej poprawki w CVE-2016-10009.
Wynik CVSS dla tej luki nie został jeszcze potwierdzony.
„Agent ssh jest menedżerem, który przechowuje klucze PKCS#11 (standard kryptograficzny klucza publicznego), które są łatwo używane do połączeń zdalnych z serwerem. Atakujący może wstrzyknąć złośliwą bibliotekę do agenta ssh, co sprawia, że cały wątek jest wykonywalny, który pozostaje nawet po dclose()” – napisał Qualys.
Ponadto wiele bibliotek współdzielonych jest oznaczanych przez program ładujący jako „nodelete”, co sprawia, że ta szkodliwa biblioteka jest trwała, dopóki nie zostanie usunięta przez administratora. Biblioteki te znajdują się w folderze /usr/lib*, co może pozwolić atakującemu na załadowanie dowolnej biblioteki (funkcja dlopen()), nawet podczas wykonywania programu SUID-root. Po uruchomieniu biblioteki atakujący uzyska takie same uprawnienia jak użytkownik, który zainicjował ssh-agent. Luka została załatana przez OpenSSH.
Qualys opublikował pełny raport, który szczegółowo wyjaśnia cały wektor zagrożenia, tło i wykorzystanie tej luki.
Użytkownikom OpenSSH forward ssh-agent zaleca się aktualizację do najnowszej wersji w celu zapobiegnięcia złośliwym działaniom.