Przepełnienie bufora - ataki na programy użytkownika
Metodą jest pisanie programów niepodatnych na przepełnienie bufora. Możliwość przepełnienia występuje tylko
w przypadku niedopatrzenia lub niechęci pisania poprawnego kodu przez programistę. Niechęć ta wynika z tego, że
pisanie w pełni bezpiecznego kodu jest pracochłonne.
Istnieje kilka zabezpieczeń na wypadek błędu programisty. Należą do nich:
- uczynienie stosu programu niewykonywalnym, co zapobiega wykonaniu kodu podanego
przez użytkownika jako wejście. Jednakże nie jest to do końca możliwe, ponieważ np. przy obsłudze sygnałów
wykorzystuje się stos do przekazania kodu wykonywalnego dla procesu. Nie zapobiega też atakom przez
umieszczenie kodu zainfekowanego na stercie.
- kompilatory, które zwracałyby baczną uwagę na operacje
arytmetyczne na wskaźnikach. Należą do nich Compaq C Compiler czy patch na gcc Johnes'a i Kelly'ego.
Compaq C Compiler bada poprawność odwołań postaci tab[5], ale nie *(tab+5), natomiast programy kompilowane gcc
z nakładką w.w. panów działają nawet kilkadziesiąt razy wolniej niż bez niej.
- używanie bezpiecznych języków programowania jak np. Java.
Jednakże warto w tym miejscu warto wspomnieć, że JVM jest napisana w C oraz że nie rozwiązuje to
problemu istniejącego już oprogramowania.
dalej