Sign extension error

Last revision (mm/dd/yy): //

Vulnerabilities Table of Contents

Description
If one extends a signed number incorrectly, if negative numbers are used, an incorrect extension may result.

Consequences


 * Integrity: If one attempts to sign extend a negative variable with an unsigned extension algorithm, it will produce an incorrect result.
 * Authorization: Sign extension errors - if they are used to collect information from smaller signed sources - can often create buffer overflows and other memory based problems.

Exposure period


 * Requirements section: The choice to use a language which provides a framework to deal with this could be used.
 * Implementation: A logical flaw of this kind might lead to any number of other flaws.

Platform


 * Languages: C or C++
 * Operating platforms: Any

Required resources

Any

Severity

High

Likelihood of exploit

High

Sign extension errors - if they are used to collect information from smaller signed sources - can often create buffer overflows and other memory based problems.

Risk Factors
TBD

Examples
In C:

struct fakeint { short f0; short zeros; }; struct fakeint strange; struct fakeint strange2;

strange.f0=-240; strange2.f0=240;

strange2.zeros=0; strange.zeros=0;

printf("%d %d\n",strange.f0,strange); printf("%d %d\n",strange2.f0,strange2);

Related Attacks

 * Attack 1
 * Attack 2

Related Vulnerabilities

 * Vulnerability 1
 * Vulnerabiltiy 2

Related Controls

 * Implementation: Use a sign extension library or standard function to extend signed numbers.
 * Implementation: When extending signed numbers fill in the new bits with 0 if the sign bit is 0 or fill the new bits with 1 if the sign bit is 1.

Related Technical Impacts

 * Technical Impact 1
 * Technical Impact 2