NIST 800-53 REV 5 • SYSTEM AND INFORMATION INTEGRITY

SI-20Tainting

Embed data or capabilities in the following systems or system components to determine if organizational data has been exfiltrated or improperly removed from the organization: {{ insert: param, si-20_odp }}.

CMMC Practice Mapping

No direct CMMC mapping

NIST 800-171 Mapping

No direct NIST 800-171 mapping

Related Controls

Supplemental Guidance

Many cyber-attacks target organizational information, or information that the organization holds on behalf of other entities (e.g., personally identifiable information), and exfiltrate that data. In addition, insider attacks and erroneous user procedures can remove information from the system that is in violation of the organizational policies. Tainting approaches can range from passive to active. A passive tainting approach can be as simple as adding false email names and addresses to an internal database. If the organization receives email at one of the false email addresses, it knows that the database has been compromised. Moreover, the organization knows that the email was sent by an unauthorized entity, so any packets it includes potentially contain malicious code, and that the unauthorized entity may have potentially obtained a copy of the database. Another tainting approach can include embedding false data or steganographic data in files to enable the data to be found via open-source analysis. Finally, an active tainting approach can include embedding software in the data that is able to "call home," thereby alerting the organization to its "capture," and possibly its location, and the path by which it was exfiltrated or removed.

Practitioner Notes

Tainting is a technique where data from untrusted sources is "marked" so the system tracks it and applies extra validation before using it in sensitive operations.

Example 1: In your web application framework, enable taint tracking (available in Ruby, Perl, and some Java frameworks) that automatically marks all user input as "tainted." Tainted data cannot be used in database queries or system commands without first being validated and sanitized.

Example 2: Tag data received from external APIs as untrusted in your data processing pipeline. Untrusted data passes through a validation and sanitization layer before it can be written to production databases or used in business logic.