Difference between revisions of "Trust Boundary Violation"

From OWASP
Jump to: navigation, search
 
(Added contents provided by Fortify.)
Line 1: Line 1:
 
{{Template:Vulnerability}}
 
{{Template:Vulnerability}}
 +
{{Template:Fortify}}
 +
 +
==Abstract==
 +
 +
Commingling trusted and untrusted data in the same data structure encourages programmers to mistakenly trust unvalidated data.
  
 
==Description==
 
==Description==
 +
 +
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.
  
 
==Examples ==
 
==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.
 +
 +
<pre>
 +
  usrname = request.getParameter("usrname");
 +
  if (session.getAttribute(ATTR_USR) == null) {
 +
      session.setAttribute(ATTR_USR, usrname);
 +
  }
 +
</pre>
 +
 +
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 Threats==
 
==Related Threats==
Line 12: Line 36:
  
 
==Related Countermeasures==
 
==Related Countermeasures==
 +
 +
* [[Input Validation]]
 +
* [[Use encapsulation]]
  
 
==Categories==
 
==Categories==
 
{{Template:Stub}}
 
  
 
[[Category:Range and Type Error Vulnerability]]
 
[[Category:Range and Type Error Vulnerability]]
 +
 +
[[Category:Java]]
 +
 +
[[Category:Implementation]]
 +
 +
[[Category:Code Snippet]]
 +
 +
[[Category:Design]]

Revision as of 11:48, 21 July 2006

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.

Abstract

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

Description

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.

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 Principles

Use encapsulation

Related Threats

Related Attacks

Related Vulnerabilities

Related Countermeasures

Categories