Back to Labs
Weakness (CWE)

CWE-170

Improper Null Termination

About

The product does not terminate or incorrectly terminates a string or array with a null character or equivalent terminator.

Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all. Other scenarios are possible.

Common consequences

  • Confidentiality, Integrity, Availability → Read Memory, Execute Unauthorized Code or Commands
  • Confidentiality, Integrity, Availability → DoS: Crash, Exit, or Restart, Read Memory, DoS: Resource Consumption (CPU), DoS: Resource Consumption (Memory)
  • Integrity, Availability → Modify Memory, DoS: Crash, Exit, or Restart
  • Integrity, Confidentiality, Availability, Access Control, Other → Alter Execution Logic, Execute Unauthorized Code or Commands

Mitigations

  • Requirements: Use a language that is not susceptible to these issues. However, be careful of null byte interaction errors (CWE-626) with lower-level constructs that may be written in a language that is susceptible.
  • Implementation: Ensure that all string functions used are understood fully as to how they append null characters. Also, be wary of off-by-one errors when appending nulls to the end of strings.
  • Implementation: If performance constraints permit, special code can be added that validates null-termination of string buffers, this is a rather naive and error-prone solution.
  • Implementation: Switch to bounded string manipulation functions. Inspect buffer lengths involved in the buffer overrun trace reported with the defect.
  • Implementation: Add code that fills buffers with nulls (however, the length of buffers still needs to be inspected, to ensure that the non null-terminated string is not written at the physical end of the buffer).

CVEs with this weakness

Frequently asked questions

What is CWE-170?

The product does not terminate or incorrectly terminates a string or array with a null character or equivalent terminator. Null termination errors frequently occur in two different ways. An off-by-one error could cause a null to be written out of bounds, leading to an overflow. Or, a program could use a strncpy() function call incorrectly, which prevents a null terminator from being added at all.

How likely is CWE-170 to be exploited?

MITRE rates the likelihood of exploit for CWE-170 as medium.

Which platforms does CWE-170 affect?

CWE-170 has been observed on: C, C++.

How many CVEs does Rainforest track for CWE-170?

Rainforest Labs currently tracks 1 published CVEs mapped to CWE-170. They are listed on this page.

Empower Your Security Strategy with Rainforest

Discover vulnerabilities early, prioritize critical threats, and protect what truly matters. Rainforest streamlines your security operations, saving you time and reducing costs, so you can focus on what drives your business forward.