Większość programów systemowych pisana jest w języku C. W przypadku niedbałego programowania lub niedostatecznego testowania programów, programy te mogą zostać wykorzystane do włamań poprzez celowe generowanie błędów.
Typową klasa błędów jest przepełnienie stosu[1]. Zręcznie prowokując takie przepełnienie można uruchamiać własne lub wywoływać inne systemy. Szczególnie interesujące dla atakującego są takie systemy, które wykonywane są pod uprawnieniami administratora systemu. W takim przypadku program hackera również otrzymuje pełen dostęp do zasobów sieciowych. Potencjalnie zagrożone są wszystkie systemy pobierające dane z zewnątrz, a wiec praktycznie prawie każdy system. Jedynie systemy dokonujące sumiennej kontroli wszystkich pobranych danych nie są wrażliwe na takie ataki.
Pomysłowość hackerów jest przy tym praktycznie nieograniczona. Przykładowo wykorzystywano serwer Telnet, ponieważ w zmiennej TERM Klienta zapisano zbyt długi łańcuch znaków[2]. Ponadto sendmail był podatny na tego rodzaju ataki przy przekazywaniu wiadomości SMTP. Podatność taka jest szczególnie niebezpieczna, gdy wystąpi w funkcjach bibliotecznych. Skutkiem tego jest wrażliwość wszystkich programów korzystających z tych funkcji. Zwłaszcza w ostatnich latach technika ta jest ze szczególnym upodobaniem stosowania przez hackerów, co pokazuje szereg CERT-Advisories na ten temat[3].
