293
Applicable Platforms
Language : Not Language-Specific (Prevalence = Undetermined)
Operating_System : Not OS-Specific (Prevalence = Undetermined)
Architecture : Not Architecture-Specific (Prevalence = Undetermined)
Technology : Memory Hardware (Prevalence = Undetermined)
Technology : Processor Hardware (Prevalence = Undetermined)
Technology : Microcontroller Hardware (Prevalence = Undetermined)
CWE Version 4.14
CWE-1257: Improper Access Control Applied to Mirrored or Aliased Memory Regions
CWE-1257: Improper Access Control Applied
to Mirrored or Aliased Memory Regions 2070
Technology : Network on Chip Hardware (Prevalence = Undetermined)
Technology : System on Chip (Prevalence = Undetermined)
Common Consequences
Scope Impact Likelihood
Confidentiality Read Memory High
Integrity Modify Memory High
Availability DoS: Instability High
Potential Mitigations
Phase: Architecture and Design
Phase: Implementation
The checks should be applied for consistency access rights between primary memory regions
and any mirrored or aliased memory regions. If different memory protection units (MPU)
are protecting the aliased regions, their protected range definitions and policies should be
synchronized.
Phase: Architecture and Design
Phase: Implementation
The controls that allow enabling memory aliases or changing the size of mapped memory
regions should only be programmable by trusted software components.
Demonstrative Examples
Example 1:
In a System-on-a-Chip (SoC) design the system fabric uses 16 bit addresses. An IP unit (Unit_A)
has 4 kilobyte of internal memory which is mapped into a 16 kilobyte address range in the system
fabric address map.
To protect the register controls in Unit_A unprivileged software is blocked from accessing
addresses between 0x0000 - 0x0FFF.
The address decoder of Unit_A masks off the higher order address bits and decodes only the lower
12 bits for computing the offset into the 4 kilobyte internal memory space.
Example Language: Other (Bad)
In this design the aliased memory address ranges are these:
0x0000 - 0x0FFF
0x1000 - 0x1FFF
0x2000 - 0x2FFF
0x3000 - 0x3FFF
The same register can be accessed using four different addresses: 0x0000, 0x1000, 0x2000, 0x3000.
The system address filter only blocks access to range 0x0000 - 0x0FFF and does not block access to the aliased addresses
in 0x1000 - 0x3FFF range. Thus, untrusted software can leverage the aliased memory addresses to bypass the memory
protection.
CWE Version 4.14
CWE-1258: Exposure of Sensitive System Information Due to Uncleared Debug Information
CWE-1258: Exposure of Sensitive System
Information Due to Uncleared Debug Information