This weakness occurs when software fails to properly end a string or array with the required null character or equivalent terminator.
Improper null termination typically stems from two common coding mistakes. The first is an off-by-one error, where a null character is written just outside the allocated memory boundary, which can corrupt adjacent data or trigger a buffer overflow. The second frequent cause is the incorrect use of functions like `strncpy()`, which does not automatically append a null terminator if the source string is too long, leaving the destination array without a valid end marker. Without this crucial terminator, string-handling functions will continue reading memory until they encounter a null byte by chance, leading to information disclosure, crashes, or unpredictable behavior. Developers should always ensure buffers are sized to hold the content plus the terminator and prefer safer, bounded string functions that guarantee proper termination.
Impact: Read MemoryExecute Unauthorized Code or Commands
The case of an omitted null character is the most dangerous of the possible issues. This will almost certainly result in information disclosure, and possibly a buffer overflow condition, which may be exploited to execute arbitrary code.
Impact: DoS: Crash, Exit, or RestartRead MemoryDoS: Resource Consumption (CPU)DoS: Resource Consumption (Memory)
If a null character is omitted from a string, then most string-copying functions will read data until they locate a null character, even outside of the intended boundaries of the string. This could: cause a crash due to a segmentation fault cause sensitive adjacent memory to be copied and sent to an outsider trigger a buffer overflow when the copy is being written to a fixed-size buffer.
Impact: Modify MemoryDoS: Crash, Exit, or Restart
Misplaced null characters may result in any number of security problems. The biggest issue is a subset of buffer overflow, and write-what-where conditions, where data corruption occurs from the writing of a null character over valid data, or even instructions. A randomly placed null character may put the system into an undefined state, and therefore make it prone to crashing. A misplaced null character may corrupt other data in memory.
Impact: Alter Execution LogicExecute Unauthorized Code or Commands
Should the null character corrupt the process flow, or affect a flag controlling access, it may lead to logical errors which allow for the execution of arbitrary code.
cccMedium