Postęp w tworzeniu exploita dla OpenSSH 9.1

Qualys znalazł sposób na ominięcie zabezpieczeń malloc i double-free w celu zainicjowania przeniesienia kontroli do kodu, wykorzystując lukę w OpenSSH 9.1, która została uznana za obarczoną niskim ryzykiem stworzenia działającego exploita. Jednocześnie dużym pytaniem pozostaje możliwość stworzenia działającego exploita.

Luka wynika z podwójnego uwierzytelnienia wstępnego. Aby stworzyć warunki do ujawnienia się podatności, wystarczy zmienić baner klienta SSH na „SSH-2.0-FuTTYSH_9.1p1” (lub inny stary klient SSH) i ustawić flagi „SSH_BUG_CURVE25519PAD” i „SSH_OLD_DHGEX”. Po ustawieniu tych flag pamięć dla bufora „options.kex_algorithms” jest dwukrotnie zwalniana.

Badaczom z Qualys manipulując luką udało się przejąć kontrolę nad rejestrem procesora „%rip”, który zawiera wskaźnik do następnej instrukcji do wykonania. Opracowana technika eksploatacji pozwala na przeniesienie kontroli do dowolnego punktu przestrzeni adresowej procesu sshd w nieaktualizowanym środowisku OpenBSD 7.2, dostarczanym domyślnie z OpenSSH 9.1.

Należy zauważyć, że proponowany prototyp stanowi implementację jedynie pierwszego etapu ataku – aby stworzyć działającego exploita, konieczne jest ominięcie mechanizmów ochronnych ASLR, NX i ROP oraz uniknięcie izolacji piaskownicy, co jest mało prawdopodobne. Aby rozwiązać problem omijania ASLR, NX i ROP, konieczne jest uzyskanie informacji o adresach, co można osiągnąć poprzez identyfikację kolejnej podatności prowadzącej do wycieku informacji. Błąd w uprzywilejowanym procesie nadrzędnym lub jądrze może pomóc w wyjściu z piaskownicy.

Źródło: opennet.ru

Dodaj komentarz