Kwestie bezpieczeństwa Z użyciem funkcji z rodziny printf wiążą się dwie podstawowe grupy zagrożeń bezpieczeństwa: Format string attack – w sytuacji, gdy użytkownik ma możliwość wpływu na użyty łańcuch formatujący, często możliwe jest nadpisanie pamięci i przejęcie kontroli nad procesem z wykorzystaniem funkcjonalności %n. Najczęstszą przyczyną takiej podatności jest skorzystanie przez programistę z konstrukcji printf(zmienna); zamiast printf("%s",zmienna);. Przepełnienie bufora – funkcja *sprintf (a także nieprawidłowo użyta *snprintf) może przepełnić bufor przeznaczony przez programistę na zachowanie wyniku tej operacji, tym samym prowadząc do nadpisania struktur sterujących w pamięci procesu i przejęcie nad nim kontroli przez osobę trzecią. Dodatkowo, pewne scenariusze ataków mogą pojawiać się, gdy dochodzi do niezgodności między budową szablonu a faktycznymi parametrami przekazanymi funkcji *printf – na przykład gdy parametrów jest mniej niż pól w szablonie, albo wartości liczbowe przekazywane są w miejsce wskaźników.
Źródło i licencja
Fragment artykułu Wikipedia — Printf · historia autorów.
Tekst: CC BY-SA 4.0. Wydzielono fragment z dłuższego artykułu.