Umbra Wiki attack-pattern attack-pattern/CAPEC-71
Back to wiki

CAPEC-71 — Using Unicode Encoding to Bypass Validation Logic

provenance: imported · CWE: CWE-20 CWE-74 CWE-172 CWE-173 CWE-176 CWE-179 CWE-180 CWE-183 CWE-184 CWE-692 CWE-697

CAPEC-71: Using Unicode Encoding to Bypass Validation Logic

MITRE CAPEC attack pattern

Status Draft
Typical severity High
Likelihood of attack Medium
Catalogue CAPEC 3.9 (2023-01-24)

Description

An attacker may provide a Unicode string to a system component that is not Unicode aware and use that to circumvent the filter or cause the classifying mechanism to fail to properly understanding the request. That may allow the attacker to slip malicious data past the content filter and/or possibly cause the application to route the request incorrectly.

Where this sits in the chain

A finding maps to a weakness (CWE), a weakness is exploited by an attack pattern (CAPEC), and an attack pattern shows up in ATT&CK as observed adversary behaviour. This page is the middle hop.

Weaknesses exploited: CWE-20, CWE-74, CWE-172, CWE-173, CWE-176, CWE-179, CWE-180, CWE-183, CWE-184, CWE-692, CWE-697

Prerequisites

  • Filtering is performed on data that has not be properly canonicalized.

Skills required

  • Medium: An attacker needs to understand Unicode encodings and have an idea (or be able to find out) what system components may not be Unicode aware.

Consequences

  • Confidentiality, Access Control, Authorization: Bypass Protection Mechanism
  • Confidentiality, Integrity, Availability: Execute Unauthorized Commands
  • Integrity: Modify Data
  • Availability: Unreliable Execution

Mitigations

  • Ensure that the system is Unicode aware and can properly process Unicode data. Do not make an assumption that data will be in ASCII.
  • Ensure that filtering or input validation is applied to canonical data.
  • 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 not be permitted to enter into the system.

Source