logo

CWE-196 - Unsigned to Signed Conversion Error

CWE-196 Medium

  • Abstraction:
  • Variant
  • Structure:
  • Simple
  • Status:
  • Draft
Weakness Name

Unsigned to Signed Conversion Error

Description

The product uses an unsigned primitive and performs a cast to a signed primitive, which can produce an unexpected value if the value of the unsigned primitive can not be represented using a signed primitive.

Although less frequent an issue than signed-to-unsigned conversion, unsigned-to-signed conversion can be the perfect precursor to dangerous buffer underwrite conditions that allow attackers to move down the stack where they otherwise might not have access in a normal buffer overflow condition. Buffer underwrites occur frequently when large unsigned values are cast to signed values, and then used as indexes into a buffer or for pointer arithmetic.

Common Consequences

Scope: Availability

Impact: DoS: Crash, Exit, or Restart

Notes: Incorrect sign conversions generally lead to undefined behavior, and therefore crashes.

Scope: Integrity

Impact: Modify Memory

Notes: If a poor cast lead to a buffer overflow or similar condition, data integrity may be affected.

Scope: Integrity, Confidentiality, Availability, Access Control

Impact: Execute Unauthorized Code or Commands, Bypass Protection Mechanism

Notes: Improper signed-to-unsigned conversions without proper checking can sometimes trigger buffer overflows which can be used to execute arbitrary code. This is usually outside the scope of a program's implicit security policy.

Related Weaknesses
  • Release Date:
  • 2006-07-19
  • Latest Modification Date:
  • 2023-06-29

Free security scan for your website