Uogólnienie techniki nadużyć
07.08.2012 14:56
[img=tzn]
Błędy zliczenia o jeden oraz niepoprawne rozwijanie zapisu w kodzie Unicode to błędy, które zwykle trudno znaleźć w odpowiednim czasie, ale wydają się oczywiste każdemu programiście w momencie ich odkrycia.Jednak istnieją również często popełnianie błędy, które można wykorzystywać w sposób o wiele mniej oczywisty. Wpływ tych błędów na poziom bezpieczeństwa nie zawsze jest widoczny i podobne problemy z bezpieczeństwem można znaleźć w każdym większym fragmencie kodu. Ze względu na fakt, że błąd tego samego rodzaju jest popełniany w wielu różnych miejscach, uogólnione techniki nadużyć ewoluowały w sposób umożliwiający wykorzystywanie tych błędów i można ich używać w wielu sytuacjach.
Najczęściej wykorzystywanie luk w programach ma związek z uszkadzaniem pamięci. Możemy tu zaliczyć częste techniki nadużyć, takie jak przepełnienie bufora, i techniki stosowane rzadziej, wykorzystujące łańcuchy formatujące. W przypadku obu tych technik ostatecznie celem jest przejęcie kontroli nad przebiegiem wykonania docelowego programu w celu oszukania go, tak aby wykonał fragment szkodliwego kodu, który uda się przemycić do pamęci na jeden z wielu sposobów. Jest to tzn. wykonanie dowolnego kodu, ponieważ haker może spowodować że program zasadniczo wykona dowolne działanie. Podobnie jak „luka LaMacchi”, tego typu słabości istnieją, ponieważ występują nieoczekiwane przypadki, których programy nie są w stanie obsłużyć. W normalnych warunkach te niespodziewane przypadki powodują awarię programu – metaforycznie rzecz ujmując, skierowanie przebiegu wykonywania programu w przepaść. Jeśli jednak środowisko jest starannie kontrolowane, przebieg wykonywania również może być kontrolowany, co pozwala uniknąć awarii i przeprogramować proces.