Skip to main content

CWE-806: Buffer Access Using Size of Source Buffer

VariantIncomplete

The product uses the size of a source buffer when reading from or writing to a destination buffer, which may cause it to access memory that is outside of the bounds of the buffer.

View on MITRE
Back to CWE Lookup

Extended Description

When the size of the destination is smaller than the size of the source, a buffer overflow could occur.

Technical Details

Structure
Simple

Applicable To

Languages
CC++
Platforms

Frequently Asked Questions

What is CWE-806: Buffer Access Using Size of Source Buffer?+

CWE-806: Buffer Access Using Size of Source Buffer is a Common Weakness Enumeration (CWE) entry maintained by MITRE. The product uses the size of a source buffer when reading from or writing to a destination buffer, which may cause it to access memory that is outside of the bounds of the buffer. When the size of the destination is smaller than the size of the source, a buffer overflow could occur.

What are the security consequences of Buffer Access Using Size of Source Buffer?+

If exploited, CWE-806 (Buffer Access Using Size of Source Buffer) it can compromise Availability, Integrity, Confidentiality and Access Control, leading to outcomes such as Modify Memory, DoS: Crash, Exit, or Restart, DoS: Resource Consumption (CPU), Read Memory, Execute Unauthorized Code or Commands and Bypass Protection Mechanism.

How do you prevent or mitigate Buffer Access Using Size of Source Buffer?+

Recommended mitigations for CWE-806 include: Use an abstraction library to abstract away risky APIs. Examples include the Safe C String Library (SafeStr) by Viega, and the Strsafe.h library from Microsoft. This is not a complete solution, since many buffer overflows are not related to strings. Programmers should adhere to the following rules when allocating and managing their applications memory: Double check that your buffer is as large as you specify. When using functions that accept a number of bytes to copy, such as strncpy(), be aware that if the destination buffer size is equal to the source buffer size, it may not NULL-terminate the string. Check buffer boundaries if calling this function in a loop and make sure there is no danger of writing past the allocated space. Truncate all input strings to a reasonable length before passing them to the copy and concatenation functions. Most mitigating technologies at the compiler or OS level to date address only a subset of buffer overflow problems and rarely provide complete protection against even that subset. It is good practice to implement strategies to increase the workload of an attacker, such as leaving the attacker to guess an unknown value that changes every program execution.

Which programming languages are affected by Buffer Access Using Size of Source Buffer?+

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

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

A CWE (Common Weakness Enumeration) like CWE-806 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