Overwriting a freed chunk

Wesprzyj HackTricks

Kilka proponowanych technik eksploatacji sterty wymaga możliwości nadpisania wskaźników wewnątrz zwolnionych fragmentów. Celem tej strony jest podsumowanie potencjalnych podatności, które mogą umożliwić uzyskanie takiego dostępu:

Proste Użycie Po Zwolnieniu

Jeśli atakujący może zapisać informacje w zwolnionym fragmencie, może to wykorzystać do nadpisania potrzebnych wskaźników.

Podwójne Zwolnienie

Jeśli atakujący może zwolnić dwa razy ten sam fragment (zwolnić inne fragmenty pomiędzy potencjalnie) i sprawić, że będzie 2 razy w tym samym kubełku, użytkownik będzie mógł przydzielić później ten fragment, zapisać potrzebne wskaźniki a następnie ponownie go przydzielić, co wywoła akcje związaną z przydzieleniem fragmentu (np. atak na szybki kubełek, atak na tcache...)

Przepełnienie Sterty

Możliwe jest przepełnienie przydzielonego fragmentu mającego następnie zwolniony fragment i zmodyfikowanie niektórych nagłówków/wskaźników.

Przepełnienie o jeden

W tym przypadku możliwe byłoby zmodyfikowanie rozmiaru następnego fragmentu w pamięci. Atakujący mógłby to wykorzystać, aby przydzielić większy rozmiar przydzielonego fragmentu, a następnie zwolnić go, sprawiając, że fragment zostanie dodany do kubełka o innym rozmiarze (większym), a następnie przydzielić fałszywy rozmiar, a atakujący będzie miał dostęp do fragmentu o większym rozmiarze niż w rzeczywistości, umożliwiając tym samym sytuację nakładania się fragmentów, która jest eksploatowalna w ten sam sposób co przepełnienie sterty (sprawdź poprzednią sekcję).

Wesprzyj HackTricks

Last updated