Return-to-libc attack – technika wykorzystywania błędów w aplikacjach w celu dokonania ataku na system komputerowy.

Szczegóły techniczne Zazwyczaj użycie tej techniki poprzedza wykorzystanie błędów przepełnienia bufora lub format bugów, które to pozwalają na nadpisanie adresu powrotu na stosie. Wskaźnik ten pozwala przekierować sterowanie do wybranej funkcji (najczęściej ze zbioru funkcji biblioteki standardowej języka C). Dalsze pozycje stosu wypełniane są wartościami służącymi jako argumenty tego wywołania.

Biblioteka standardowa języka C (libc) zapewnia środowisko wykonawcze dla aplikacji napisanych w tym języku. Pomimo że atakujący mógłby przekierować sterowanie do dowolnego miejsca, najczęstszym celem jest właśnie libc, jako że biblioteka ta prawie zawsze rezyduje w przestrzeni adresowej procesów w systemach uniksowych oraz zawiera przydatne dla atakującego funkcje (np. funkcja system(), która wymaga tylko jednego argumentu, by uruchomić wybrane polecenie).

Obrona Losowość ułożenia przestrzeni adresowej procesu () czyni ten atak wyjątkowo trudnym do przeprowadzenia, ze względu na zmieniające za każdym wywołaniem procesu adresy wywołań funkcji, znajdujących się w bibliotekach lub – w niektórych rozwiązaniach – w sekcji kodu procesuOpis łatki Exec Shield dla systemu GNU/Linux.

Zobacz też Exec Shield format string attack NX-bit przepełnienie bufora

Przypisy

Linki zewnętrzne Użycie ataku return-to-libc do ominięcia problemu niewykonywalnego stosu Phrack #58: The advanced return-into-lib(c) exploits

Kategoria:Cyberataki Kategoria:C (język programowania) Kategoria:Unix