CAPECattack pattern

CAPEC-77 Manipulating User-Controlled Variables

Very High Official page ↗
Abstraction
Standard
Status
Draft
Likelihood of attack
High
Typical severity
Very High
CAPEC version
3.9

Description

This attack targets user controlled variables (DEBUG=1, PHP Globals, and So Forth). An adversary can override variables leveraging user-supplied, untrusted query variables directly used on the application server without any data sanitization. In extreme cases, the adversary can change variables controlling the business logic of the application. For instance, in languages like PHP, a number of poorly set default configurations may allow the user to override variables.

Execution flow

1. [Explore] [Probe target application] The adversary first probes the target application to determine important information about the target. This information could include types software used, software versions, what user input the application consumes, and so on. 2. [Experiment] [Find user-controlled variables] Using the information found by probing the application, the adversary attempts to manipulate many user-controlled variables and observes the effects on the application. If the adversary notices any significant changes to the application, they will know that a certain variable is useful to the application. 3. [Exploit] [Manipulate user-controlled variables] Once the adversary has found a user-controller variable(s) that is important to the application, they will manipulate it to change the normal behavior in a way that benefits the adversary.

Prerequisites

• A variable consumed by the application server is exposed to the client. • A variable consumed by the application server can be overwritten by the user. • The application server trusts user supplied data to compute business logic. • The application server does not perform proper input validation.

Skills required

• [Low] The malicious user can easily try some well-known global variables and find one which matches. • [Medium] The adversary can use automated tools to probe for variables that they can control.

Consequences

• Integrity: Modify Data • Confidentiality, Integrity, Availability: Execute Unauthorized Commands • Confidentiality: Read Data • Confidentiality, Access Control, Authorization: Gain Privileges

Mitigations

• Do not allow override of global variables and do Not Trust Global Variables. If the register_globals option is enabled, PHP will create global variables for each GET, POST, and cookie variable included in the HTTP request. This means that a malicious user may be able to set variables unexpectedly. For instance make sure that the server setting for PHP does not expose global variables. • A software system should be reluctant to trust variables that have been initialized outside of its trust boundary. Ensure adequate checking is performed when relying on input from outside a trust boundary. • Separate the presentation layer and the business logic layer. Variables at the business logic layer should not be exposed at the presentation layer. This is to prevent computation of business logic from user controlled input data. • Use encapsulation when declaring your variables. This is to lower the exposure of your variables. • Assume all input is malicious. Create an allowlist that defines all valid input to the software system based on the requirements specifications. Input that does not match against the allowlist should be rejected by the program.

Related

Child of · CAPEC (1)

  • CAPEC-22 Exploiting Trust in Client attack pattern

Weakness · CWE (7)

  • CWE-1321 Improperly Controlled Modification of Object Prototype Attributes weakness
  • CWE-15 External Control of System or Configuration Setting weakness
  • CWE-285 Improper Authorization weakness
  • CWE-302 Authentication Bypass by Assumed-Immutable Data weakness
  • CWE-473 PHP External Variable Modification weakness
  • CWE-94 Improper Control of Generation of Code weakness
  • CWE-96 Improper Neutralization of Directives in Statically Saved Code weakness

Referenced by CAPEC · child of (2)

  • CAPEC-13 Subverting Environment Variable Values attack pattern
  • CAPEC-162 Manipulating Hidden Fields attack pattern

Referenced by CWE · attack pattern (7)

  • CWE-1321 Improperly Controlled Modification of Object Prototype Attributes weakness
  • CWE-15 External Control of System or Configuration Setting weakness
  • CWE-285 Improper Authorization weakness
  • CWE-302 Authentication Bypass by Assumed-Immutable Data weakness
  • CWE-473 PHP External Variable Modification weakness
  • CWE-94 Improper Control of Generation of Code weakness
  • CWE-96 Improper Neutralization of Directives in Statically Saved Code weakness