The product initializes critical internal variables or data stores using inputs that can be modified by untrusted actors.
A product system should be reluctant to trust variables that have been initialized outside of its trust boundary, especially if they are initialized by users. The variables may have been initialized incorrectly. If an attacker can initialize the variable, then they can influence what the vulnerable system will do.

Primary

Resultant

Architecture and Design

Implementation

Integrity
Modify Application Data
An attacker could gain access to and modify sensitive data or system information.

Automated Static Analysis
Automated static analysis, commonly referred to as Static Application Security Testing (SAST), can find some instances of this weakness by analyzing source code (or binary/compiled code) without having to execute it. Typically, this is done by building a model of data flow and control flow, then searching for potentially-vulnerable patterns that connect "sources" (origins of input) with "sinks" (destinations where the data interacts with external components, a lower layer such as the OS, etc.)

Implementation
Input Validation
A product system should be reluctant to trust variables that have been initialized outside of its trust boundary. Ensure adequate checking (e.g. input validation) is performed when relying on input from outside a trust boundary.

Architecture and Design
Avoid any external control of variables. If necessary, restrict the variables that can be modified using an allowlist, and use a different namespace or naming convention if possible.

In the Java example below, a system property controls the debug level of the application.

int debugLevel = Integer.getInteger("com.domain.application.debugLevel").intValue();

If an attacker is able to modify the system property, then it may be possible to coax the application into divulging sensitive information by virtue of the fact that additional debug information is printed/exposed as the debug level increases.

This code checks the HTTP POST request for a debug switch, and enables a debug mode if the switch is set.

$debugEnabled = false;if ($_POST["debug"] == "true"){$debugEnabled = true;}
/.../

function login($username, $password){if($debugEnabled){echo 'Debug Activated';phpinfo();$isAdmin = True;return True;}}

Any user can activate the debug mode, gaining administrator privileges. An attacker may also use the information printed by the phpinfo() function to further exploit the system. .
This example also exhibits Information Exposure Through Debug Information (CWE-215)

CVE-2022-43468
WordPress module sets internal variables based on external inputs, allowing false reporting of the number of views
https://www.cve.org/CVERecord?id=CVE-2022-43468

CVE-2000-0959
Does not clear dangerous environment variables, enabling symlink attack.
https://www.cve.org/CVERecord?id=CVE-2000-0959

CVE-2001-0033
Specify alternate configuration directory in environment variable, enabling untrusted path.
https://www.cve.org/CVERecord?id=CVE-2001-0033

CVE-2001-0872
Dangerous environment variable not cleansed.
https://www.cve.org/CVERecord?id=CVE-2001-0872

CVE-2001-0084
Specify arbitrary modules using environment variable.
https://www.cve.org/CVERecord?id=CVE-2001-0084

External initialization of trusted variables or values

SFP25
Tainted input to variable

Allowed
This CWE entry is at the Base level of abstraction, which is a preferred level of abstraction for mapping to the root causes of vulnerabilities.
Carefully read both the name and description to ensure that this mapping is an appropriate fit. Do not try to 'force' a mapping to a lower-level Base/Variant simply to comply with this preferred level of abstraction.

Overlaps Missing variable initialization, especially in PHP.

This is often found in PHP due to register_globals and the common practice of storing library/include files under the web document root so that they are available using a direct request.

PLOVER
2006-07-19
Draft 3
2006-07-19

Sean Eidemiller
Cigital
2008-07-01
added/updated demonstrative examples

Eric Dalci
Cigital
2008-07-01
updated Potential_Mitigations, Time_of_Introduction

CWE Content Team
MITRE
2008-09-08
updated Applicable_Platforms, Description, Relationships, Other_Notes, Taxonomy_Mappings

CWE Content Team
MITRE
2009-10-29
updated Other_Notes, Relationship_Notes

CWE Content Team
MITRE
2010-02-16
updated Description, Name, Relationships

CWE Content Team
MITRE
2010-04-05
updated Applicable_Platforms, Demonstrative_Examples

CWE Content Team
MITRE
2011-03-29
updated Demonstrative_Examples

CWE Content Team
MITRE
2011-06-01
updated Common_Consequences, Relationships, Taxonomy_Mappings

CWE Content Team
MITRE
2012-05-11
updated Common_Consequences, Relationships, Taxonomy_Mappings

CWE Content Team
MITRE
2012-10-30
updated Potential_Mitigations

CWE Content Team
MITRE
2014-07-30
updated Relationships, Taxonomy_Mappings

CWE Content Team
MITRE
2017-11-08
updated Description

CWE Content Team
MITRE
2020-06-25
updated Potential_Mitigations

CWE Content Team
MITRE
2023-01-31
updated Description, Potential_Mitigations

CWE Content Team
MITRE
2023-04-27
updated Relationships

CWE Content Team
MITRE
2023-06-29
updated Mapping_Notes

CWE Content Team
MITRE
2023-10-26
updated Observed_Examples, Relationships

CWE Content Team
MITRE
2025-12-11
4.19
2025-12-11
updated Detection_Factors, Relationships, Weakness_Ordinalities

External Initialization of Trusted Variables or Values
External Initialization of Trusted Variables