CAPEC - Common Attack Pattern Enumeration and Classification (A Community of Knowledge Resource for Building Secure Software)
Home > CAPEC List > CAPEC-56: Removing/short-circuiting 'guard logic' (Release 1.4)  

CAPEC-56: Removing/short-circuiting 'guard logic'

 
Removing/short-circuiting 'guard logic'
Attack Pattern ID: 56 (Standard Attack Pattern Completeness: Complete)Typical Severity: Very HighStatus: Draft
+ Description

Summary

Attackers can, in some cases, get around logic put in place to 'guard' sensitive functionality or data.

The attack may involve gaining access to and calling protected functionality (or accessing protected data) directly, may involve subverting some aspect of the guard's implementation, or outright removal of the guard, if possible.

Attack Execution Flow

  1. The attacker determines, through brute-forcing, reverse-engineering or other similar means, the location and logic of the guard element

  2. The attacker then tries to determine the mechanism to circumvent the guard.

  3. Once the mechanism has been determined, the attacker proceeds to access the protected functionality

+ Attack Prerequisites

    The Attacker must have reverse-engineered the application and its design extensively enough to have determined that a guard element exists. This may have been done as simply as through probing (and likely receiving too verbose an error message) or could have involved high-brow techniques supported by advanced reverse engineering/debugging tools.

+ Typical Likelihood of Exploit

Likelihood: Medium

+ Examples-Instances

Description

Attacker uses click-through exploration of a Servlet-based website to map out its functionality, taking note of its URL-naming conventions and Servlet mappings. Using this knowledge and guessing the Servlet name of functionality they're not authorized to use, the Attacker directly navigates to the privileged functionality arund the authorizing single-front controller (implementing programmatic authorization checks).

Description

Attacker reverse-engineers a Java binary (by decompiling it) and identifies where license management code exists. Noticing that the license manager returns TRUE or FALSE as to whether or not the user is licensed, the Attacker simply overwrites both branch targets to return TRUE, recompiles, and finally redeploys the binary.

+ Attacker Skills or Knowledge Required

Skill or Knowledge Level: Medium

The attacker must ability to understand complex design logic as well as possibly the ability to reverse-engineer the design and code to determine placement and logic of guard element.

+ Resources Required

The attacker needs the ability to explore the application's functionality and response to various conditions.

In cases where the guard component sits server-side, the attacker will likely require a valid login.

In the case that guard functionality exists client-side, the attacker will likely require reverse-engineering tools, such as a disassembler.

+ Probing Techniques

Attackers may confine (and succeed with) probing as simple as exploring an application's functionality and its underlying mapping to server-side components. It is likely that for this to succeed, the Attacker will need a valid login.

At the other extreme, Attackers capable of reverse engineering client code will have the ability to remove functionality or identify the whereabouts of sensitive data through whitebox analysis, such as review of reverse-engineered code.

+ Attack Motivation-Consequences
  • Privilege Escalation
  • Information Leakage
  • Data Modification
+ Purposes
  • Penetration
+ CIA Impact
Confidentiality Impact: HighIntegrity Impact: HighAvailability Impact: Low
+ Technical Context
Architectural Paradigms
All
Frameworks
All
Platforms
All
Languages
All
+ Content History
Submissions
SubmitterOrganizationDateComments
John StevenCigital, Inc2007-02-10Initial core pattern content
Modifications
ModifierOrganizationDateComments
Chiradeep B. ChhayaCigital, Inc2007-02-23Fleshed out pattern with extra content
Page Last Updated: September 23, 2009