Return-to-libc attack

Z Wikipedii, wolnej encyklopedii

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

Szczegóły techniczne[edytuj | edytuj kod]

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[edytuj | edytuj kod]

Losowość ułożenia przestrzeni adresowej procesu (ang. Address space layout randomization) 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 procesu[1].

Zobacz też[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]