CWE-194: Unexpected Sign Extension
The product performs an operation on a number that causes it to be sign extended when it is transformed into a larger data type. When the original number is negative, this can produce unexpected values that lead to resultant weaknesses.
Last updated
Overview
CWE-194 (Unexpected Sign Extension) is a variant-level software weakness catalogued by MITRE in the Common Weakness Enumeration (CWE). It describes a recurring type of mistake that can lead to exploitable security vulnerabilities.
Real-world CVEs
5 recorded CVEs are caused by CWE-194 (Unexpected Sign Extension). The highest-severity and most recent are shown first. 0 new CWE-194 CVEs have been recorded so far in 2026 (1 in 2025).
Common consequences
What can happen when CWE-194 is exploited.
Read Memory, Modify Memory, Other
Affects: Integrity, Confidentiality, Availability, Other
When an unexpected sign extension occurs in code that operates directly on memory buffers, such as a size value or a memory index, then it could cause the program to write or read outside the boundaries of the intended buffer. If the numeric value is associated with an application-level resource, such as a quantity or price for a product in an e-commerce site, then the sign extension could produce a value that is much higher (or lower) than the application's allowable range.
How it happens
When it is introduced
Typically introduced during these phases of the software lifecycle.
Applies to
Languages
How to prevent it
Practical mitigations for CWE-194, grouped by where in the lifecycle they apply.
Avoid using signed variables if you don't need to represent negative values. When negative values are needed, perform validation after you save those values to larger data types, or before passing them to functions that are expecting unsigned values.
How to detect it
Automated Static Analysis
Automated static analysis, commonly referred to as Static Application Security Testing (SAST), can find some instances of this weakness by analyzing source code (or binary/compiled code) without having to execute it. Typically, this is done by building a model of data flow and control flow, then searching for potentially-vulnerable patterns that connect "sources" (origins of input) with "sinks" (destinations where the data interacts with external components, a lower layer such as the OS, etc.)
Code examples
Illustrative examples from MITRE showing how the weakness appears in code.
The following code reads a maximum size and performs a sanity check on that size. It then performs a strncpy, assuming it will not exceed the boundaries of the array. While the use of "short s" is forced in this particular example, short int's are frequently used within real-world code, such as code that processes structured data.
Vulnerable example
int GetUntrustedInt () {This code first exhibits an example of CWE-839, allowing "s" to be a negative number. When the negative short "s" is converted to an unsigned integer, it becomes an extremely large positive integer. When this converted integer is used by strncpy() it will lead to a buffer overflow (CWE-119).
Illustrative examples
Real CVEs that MITRE cites as examples of this weakness.
- CVE-2018-10887 — Chain: unexpected sign extension (CWE-194) leads to integer overflow (CWE-190), causing an out-of-bounds read (CWE-125)
- CVE-1999-0234 — Sign extension error produces -1 value that is treated as a command separator, enabling OS command injection.
- CVE-2003-0161 — Product uses "char" type for input character. When char is implemented as a signed type, ASCII value 0xFF (255), a sign extension produces a -1 value that is treated as a program-specific separator value, effectively disabling a length check and leading to a buffer overflow. This is also a multiple interpretation error.
- CVE-2007-4988 — chain: signed short width value in image processor is sign extended during conversion to unsigned int, which leads to integer overflow and heap-based buffer overflow.
- CVE-2006-1834 — chain: signedness error allows bypass of a length check; later sign extension makes exploitation easier.
- CVE-2005-2753 — Sign extension when manipulating Pascal-style strings leads to integer overflow and improper memory copy.
Terminology & mappings
Mapped taxonomies
- CLASP: Sign extension error
- Software Fault Patterns: Glitch in computation (SFP1)
- CERT C Secure Coding: Ensure that integer conversions do not result in lost or misinterpreted data (INT31-C) — CWE More Specific fit
Frequently asked questions
Common questions about CWE-194.
- What is CWE-194?
- The product performs an operation on a number that causes it to be sign extended when it is transformed into a larger data type. When the original number is negative, this can produce unexpected values that lead to resultant weaknesses.
- What CVEs are caused by CWE-194?
- 5 recorded CVEs are attributed to CWE-194, including CVE-2022-32138, CVE-2018-10887, CVE-2021-38434.
- How do you prevent CWE-194?
- Avoid using signed variables if you don't need to represent negative values. When negative values are needed, perform validation after you save those values to larger data types, or before passing them to functions that are expecting unsigned values.
- How is CWE-194 detected?
- Automated Static Analysis: Automated static analysis, commonly referred to as Static Application Security Testing (SAST), can find some instances of this weakness by analyzing source code (or binary/compiled code) without having to execute it. Typically, this is done by building a model of data flow and control flow, then searching for potentially-vulnerable patterns that connect "sources" (origins of input) with "sinks" (destinations where the data interacts with external components, a lower layer such as the OS, etc.)
- What are the consequences of CWE-194?
- Exploiting CWE-194 can lead to: Read Memory, Modify Memory, Other.
- Is CWE-194 actively exploited?
- 5 recorded CVEs are caused by CWE-194; none are currently in CISA's KEV catalog of actively exploited flaws.
References
- MITRE CWE definition (CWE-194) (opens in a new tab)
- CWE-194 vulnerabilities on NVD (opens in a new tab)
- Learn: What is a CWE?
Weakness data is sourced from the MITRE CWE catalog (v4.20). CVE associations are aggregated and kept current by RadicalNotion.AI.
Stay ahead of CWE-194
Get alerted the moment a new CWE-194 vulnerability affects your stack, with AI-written analysis, severity context, and remediation guidance.