CWE-170: Improper Null Termination

BaseIncompleteExploit Likelihood: Medium

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

View on MITRE
Back to CWE Lookup

Extended Description

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.

Technical Details

Structure
Simple

Applicable To

Languages
CC++
Platforms

Frequently Asked Questions

What is CWE-170: Improper Null Termination?+

CWE-170: Improper Null Termination is a Common Weakness Enumeration (CWE) entry maintained by MITRE. 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.

What are the security consequences of Improper Null Termination?+

If exploited, CWE-170 (Improper Null Termination) it can compromise Confidentiality, Integrity, Availability, Access Control and Other, leading to outcomes such as Read Memory, Execute Unauthorized Code or Commands, DoS: Crash, Exit, or Restart, DoS: Resource Consumption (CPU), DoS: Resource Consumption (Memory) and Modify Memory.

How do you prevent or mitigate Improper Null Termination?+

Recommended mitigations for CWE-170 include: 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. 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. 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.

Which programming languages are affected by Improper Null Termination?+

CWE-170 commonly affects C and C++. Note that weaknesses are often language-agnostic patterns, so secure coding practices apply broadly.

What are real-world examples of Improper Null Termination?+

MITRE documents real CVEs mapped to CWE-170, including CVE-2000-0312, CVE-2003-0777, CVE-2004-1072, CVE-2001-1389 and CVE-2003-0143. You can look up the full details of each CVE, including CVSS scores and remediation guidance, on our CVE Lookup tool.

What is the difference between a CWE and a CVE?+

A CWE (Common Weakness Enumeration) like CWE-170 describes a category of software weakness — the underlying flaw type. A CVE (Common Vulnerabilities and Exposures) identifies a specific, real-world vulnerability in a particular product. In short, a CWE is the kind of mistake, and a CVE is an instance of that mistake being found in software.

Learn More