Code injection może być używany przez atakującego do wprowadzenia złośliwego kodu do podatnego na ataki programu komputerowego i zmiany przebiegu wykonania.
całe oprogramowanie pobiera jakieś dane wejściowe – bezpieczny program powinien traktować wszystkie dane wejściowe z zewnętrznego źródła jako „niezaufane”, dopóki nie udowodni się inaczej. Luki w zabezpieczeniach Code injection występują, gdy atakujący może przesłać dane wejściowe wykonywalne do programu i nakłonić oprogramowanie do uruchomienia tych danych wejściowych. Daje to atakującemu kanał, przez który może obejść wszelkie ograniczenia bezpieczeństwa wprowadzone przez autora programu.
niektóre typowe rodzaje wtrysku kodu to:
-
SQL Injection. Niebezpieczne traktowanie parametrów HTTP podczas konstruowania zapytań w witrynie internetowej może pozwolić atakującemu na uruchamianie dowolnych oświadczeń SQL w aplikacji podatnej na ataki.
-
Cross Site scripting. Niebezpieczne traktowanie parametrów HTTP może pozwolić na wstrzyknięcie złośliwego JavaScript do aplikacji internetowej.
-
wykonanie polecenia. Niebezpieczne traktowanie parametrów HTTP może pozwolić na atak, aby uruchomić dowolne polecenia powłoki na serwerze internetowym.
konsekwencje pomyślnego wprowadzenia kodu są na ogół katastrofalne dla autora aplikacji. Ryzyko może być zmniejszone przez zapewnienie bezpiecznego traktowania niezaufanych danych wejściowych oraz przez dogłębne ćwiczenie obrony w celu ograniczenia uprawnień uruchomionej aplikacji.