Difference between revisions of "Trust Boundary Violation"

From OWASP
Jump to: navigation, search
m (Related Countermeasures)
Line 2: Line 2:
 
{{Template:Fortify}}
 
{{Template:Fortify}}
  
==Abstract==
+
[[Category:FIXME|This is the text from the old template. This needs to be rewritten using the new template.]]
 +
 
 +
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''
 +
 
 +
[[ASDR_TOC_Vulnerabilities|Vulnerabilities Table of Contents]]
 +
 
 +
[[ASDR Table of Contents]]
 +
__TOC__
  
Commingling trusted and untrusted data in the same data structure encourages programmers to mistakenly trust unvalidated data.
 
  
 
==Description==
 
==Description==
 +
 +
Commingling trusted and untrusted data in the same data structure encourages programmers to mistakenly trust unvalidated data.
  
 
A trust boundary can be thought of as line drawn through a program. On one side of the line, data is untrusted. On the other side of the line, data is assumed to be trustworthy. The purpose of validation logic is to allow data to safely cross the trust boundary--to move from untrusted to trusted.
 
A trust boundary can be thought of as line drawn through a program. On one side of the line, data is untrusted. On the other side of the line, data is assumed to be trustworthy. The purpose of validation logic is to allow data to safely cross the trust boundary--to move from untrusted to trusted.
Line 12: Line 20:
 
A trust boundary violation occurs when a program blurs the line between what is trusted and what is untrusted. The most common way to make this mistake is to allow trusted and untrusted data to commingle in the same data structure.
 
A trust boundary violation occurs when a program blurs the line between what is trusted and what is untrusted. The most common way to make this mistake is to allow trusted and untrusted data to commingle in the same data structure.
  
==Examples ==
+
 
 +
 
 +
==Risk Factors==
 +
 
 +
* Talk about the [[OWASP Risk Rating Methodology|factors]] that make this vulnerability likely or unlikely to actually happen
 +
* Discuss the technical impact of a successful exploit of this vulnerability
 +
* Consider the likely [business impacts] of a successful attack
 +
 
 +
 
 +
==Examples==
 +
 
  
 
The following Java code accepts an HTTP request and stores the usrname parameter in the HTTP session object before checking to ensure that the user has been authenticated.
 
The following Java code accepts an HTTP request and stores the usrname parameter in the HTTP session object before checking to ensure that the user has been authenticated.
Line 25: Line 43:
 
Without well-established and maintained trust boundaries, programmers will inevitably lose track of which pieces of data have been validated and which have not. This confusion will eventually allow some data to be used without first being validated.
 
Without well-established and maintained trust boundaries, programmers will inevitably lose track of which pieces of data have been validated and which have not. This confusion will eventually allow some data to be used without first being validated.
  
==Related Principles==
 
  
[[Use encapsulation]]
+
==Related [[Attacks]]==
  
==Related Threats==
+
* [[Attack 1]]
 +
* [[Attack 2]]
  
==Related Attacks==
 
  
==Related Vulnerabilities==
+
==Related [[Vulnerabilities]]==
  
==Related Countermeasures==
+
* [[Vulnerability 1]]
 +
* [[Vulnerabiltiy 2]]
 +
 
 +
 
 +
 
 +
==Related [[Controls]]==
  
 
* [[:Category:Input Validation]]
 
* [[:Category:Input Validation]]
 
* [[Use encapsulation]]
 
* [[Use encapsulation]]
  
==Categories==
+
==Related [[Technical Impacts]]==
  
[[Category:Range and Type Error Vulnerability]]
+
* [[Technical Impact 1]]
 +
* [[Technical Impact 2]]
  
[[Category:Java]]
 
  
[[Category:Implementation]]
+
==References==
  
[[Category:Code Snippet]]
+
TBD
 +
[[Category:FIXME|add links
  
 +
In addition, one should classify vulnerability based on the following subcategories: Ex:<nowiki>[[Category:Error Handling Vulnerability]]</nowiki>
 +
 +
Availability Vulnerability
 +
 +
Authorization Vulnerability
 +
 +
Authentication Vulnerability
 +
 +
Concurrency Vulnerability
 +
 +
Configuration Vulnerability
 +
 +
Cryptographic Vulnerability
 +
 +
Encoding Vulnerability
 +
 +
Error Handling Vulnerability
 +
 +
Input Validation Vulnerability
 +
 +
Logging and Auditing Vulnerability
 +
 +
Session Management Vulnerability]]
 +
 +
__NOTOC__
 +
 +
 +
[[Category:OWASP ASDR Project]]
 +
[[Category:Range and Type Error Vulnerability]]
 +
[[Category:Java]]
 +
[[Category:Implementation]]
 +
[[Category:Code Snippet]]
 
[[Category:Design]]
 
[[Category:Design]]

Revision as of 13:54, 1 October 2008

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


This article includes content generously donated to OWASP by Fortify.JPG.

Last revision (mm/dd/yy): 10/1/2008

Vulnerabilities Table of Contents

ASDR Table of Contents

Contents


Description

Commingling trusted and untrusted data in the same data structure encourages programmers to mistakenly trust unvalidated data.

A trust boundary can be thought of as line drawn through a program. On one side of the line, data is untrusted. On the other side of the line, data is assumed to be trustworthy. The purpose of validation logic is to allow data to safely cross the trust boundary--to move from untrusted to trusted.

A trust boundary violation occurs when a program blurs the line between what is trusted and what is untrusted. The most common way to make this mistake is to allow trusted and untrusted data to commingle in the same data structure.


Risk Factors

  • Talk about the factors that make this vulnerability likely or unlikely to actually happen
  • Discuss the technical impact of a successful exploit of this vulnerability
  • Consider the likely [business impacts] of a successful attack


Examples

The following Java code accepts an HTTP request and stores the usrname parameter in the HTTP session object before checking to ensure that the user has been authenticated.

  usrname = request.getParameter("usrname");
  if (session.getAttribute(ATTR_USR) == null) {
      session.setAttribute(ATTR_USR, usrname);
  }

Without well-established and maintained trust boundaries, programmers will inevitably lose track of which pieces of data have been validated and which have not. This confusion will eventually allow some data to be used without first being validated.


Related Attacks


Related Vulnerabilities


Related Controls

Related Technical Impacts


References

TBD