Formatsträngsbugg
Formatsträngsbuggar är ett mycket vanligt säkerhetsproblem inom datasäkerhet. Det uppstår i C- och C++-kod.Problemet orsakas av att användaren helt eller delvis kan styra den formatsträng som används i funktioner i *printf-familjen - printf(3), sprintf(3), fprintf(3), snprintf(3) m m - samt syslog(3), setproctitle(3?) m fl. Om man kan styra dessa formatsträngar kan man nämligen inkludera olämpliga formatteringskoder, exempelvis "%n" som skriver antalet hittills skrivna tecken till en minnesposition. Det kan användas för att köra valfritt assemblerprogram, vilket är ett klart säkerhetsproblem, speciellt om programmet med formatsträngsbuggen har rättigheter som användaren inte har.
Formatsträngsbuggarna kan nästan alltid enkelt korrigeras genom att använda formatsträngen "%s" och istället ha användarens indata som ett argument. printf(string); görs om till printf("%s", string);, och syslog(LOG_MAIL, string); görs om till syslog(LOG_MAIL, "%s", string);. Även andra funktioner i *printf-familjen bör ändras på ett liknande sätt.
Några program som letar efter formatsträngsbuggar i programkod är PScan, Flawfinder, RATS och ITS4.
Externa länkar:
Artikeln skriven 2009-01-16 av Learning4sharing
Inga kategorier för denna artikel än...Intresserad av fler artiklar?
Security ort obscurityFlawfinder
ITS4
PScan
RATS
Nikto
Nmap
Snort
Hogwash