Difference between revisions of "Sign extension error"

From OWASP
Jump to: navigation, search
Line 1: Line 1:
 
{{Template:Vulnerability}}
 
{{Template:Vulnerability}}
 
{{Template:SecureSoftware}}
 
{{Template:SecureSoftware}}
 
+
<br>
__TOC__
+
 
+
 
[[ASDR Table of Contents]]
 
[[ASDR Table of Contents]]
 
  
  
 
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''
 
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''
 
 
[[Category:FIXME|This is the text from the old template. This needs to be rewritten using the new template.]]
 
  
  
 
==Description==
 
==Description==
 
 
If one extends a signed number incorrectly, if negative numbers are used, an incorrect extension may result.  
 
If one extends a signed number incorrectly, if negative numbers are used, an incorrect extension may result.  
  

Revision as of 08:54, 19 February 2009

This is a Vulnerability. To view all vulnerabilities, please see the Vulnerability Category page.



ASDR Table of Contents


Last revision (mm/dd/yy): 02/19/2009


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


Related Vulnerabilities

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


References

TBD