Improper Removal of Sensitive Information Before Storage or Transfer

Incomplete Base
Structure: Simple
Description

The product stores, transfers, or shares a resource that contains sensitive information, but it does not properly remove that information before the product makes the resource available to unauthorized actors.

Extended Description

Resources that may contain sensitive data include documents, packets, messages, databases, etc. While this data may be useful to an individual user or small set of users who share the resource, it may need to be removed before the resource can be shared outside of the trusted group. The process of removal is sometimes called cleansing or scrubbing. For example, a product for editing documents might not remove sensitive data such as reviewer comments or the local pathname where the document is stored. Or, a proxy might not remove an internal IP address from headers before making an outgoing request to an Internet site.

Common Consequences 1
Scope: Confidentiality

Impact: Read Files or DirectoriesRead Application Data

Sensitive data may be exposed to an unauthorized actor in another control sphere. This may have a wide range of secondary consequences which will depend on what data is exposed. One possibility is the exposure of system data allowing an attacker to craft a specific, more effective attack.

Potential Mitigations 4
Phase: Requirements
Clearly specify which information should be regarded as private or sensitive, and require that the product offers functionality that allows the user to cleanse the sensitive information from the resource before it is published or exported to other parties.
Phase: Architecture and Design

Strategy: Separation of Privilege

Compartmentalize the system to have "safe" areas where trust boundaries can be unambiguously drawn. Do not allow sensitive data to go outside of the trust boundary and always be careful when interfacing with a compartment outside of the safe area. Ensure that appropriate compartmentalization is built into the system design, and the compartmentalization allows for and reinforces privilege separation functionality. Architects and designers should rely on the principle of least privilege to decide the appropriate time to use privileges and the time to drop privileges.
Phase: Implementation

Strategy: Attack Surface Reduction

Use naming conventions and strong types to make it easier to spot when sensitive data is being used. When creating structures, objects, or other complex entities, separate the sensitive and non-sensitive data as much as possible.

Effectiveness: Defense in Depth

Phase: Implementation
Avoid errors related to improper resource shutdown or release (Improper Resource Shutdown or Release), which may leave the sensitive data within the resource if it is in an incomplete state.
Demonstrative Examples 1

ID : DX-220

This code either generates a public HTML user information page or a JSON response containing the same user information.

Code Example:

Bad
PHP

// API flag, output JSON if set* $json = $_GET['json'] $username = $_GET['user'] if(!$json) { ``` $record = getUserRecord($username); foreach($record as $fieldName => $fieldValue) { if($fieldName == "email_address") {

php
The programmer is careful to not display the user's e-mail address when displaying the public HTML page. However, the e-mail address is not removed from the JSON response, exposing the user's e-mail address.
Observed Examples 3
CVE-2019-3733Cryptography library does not clear heap memory before release
CVE-2005-0406Some image editors modify a JPEG image, but the original EXIF thumbnail image is left intact within the JPEG. (Also an interaction error).
CVE-2002-0704NAT feature in firewall leaks internal IP addresses in ICMP error messages.
Applicable Platforms
Languages:
Not Language-Specific : Undetermined
Modes of Introduction
Architecture and Design
Implementation
Operation
Taxonomy Mapping
  • PLOVER
Notes
RelationshipThis entry is intended to be different from resultant information leaks, including those that occur from improper buffer initialization and reuse, improper encryption, interaction errors, and multiple interpretation errors. This entry could be regarded as a privacy leak, depending on the type of information that is leaked.
RelationshipThere is a close association between Sensitive Information in Resource Not Removed Before Reuse and Improper Removal of Sensitive Information Before Storage or Transfer. The difference is partially that of perspective. Sensitive Information in Resource Not Removed Before Reuse is geared towards the final stage of the resource lifecycle, in which the resource is deleted, eliminated, expired, or otherwise released for reuse. Technically, this involves a transfer to a different control sphere, in which the original contents of the resource are no longer relevant. Improper Removal of Sensitive Information Before Storage or Transfer, however, is intended for sensitive data in resources that are intentionally shared with others, so they are still active. This distinction is useful from the perspective of the CWE research view (Research Concepts).
TerminologyThe terms "cleansing" and "scrubbing" have multiple uses within computing. In information security, these are used for the removal of sensitive data, but they are also used for the modification of incoming/outgoing data so that it conforms to specifications.