CWE - CWE-1260: Improper Handling of Overlap Between Protected Memory Ranges (4.20)
Home > CWE List > CWE-1260: Improper Handling of Overlap Between Protected Memory Ranges (4.20)  
ID

  • Home
  • CWE-1260: Improper Handling of Overlap Between Protected Memory Ranges

    Weakness ID: 1260
    Vulnerability Mapping: ALLOWED This CWE ID may be used to map to real-world vulnerabilities
    Abstraction: Base Base - a weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource.
    View customized information:
    For users who are interested in more notional aspects of a weakness. Example: educators, technical writers, and project/program managers. For users who are concerned with the practical application and details about the nature of a weakness and how to prevent it from happening. Example: tool developers, security researchers, pen-testers, incident response analysts. For users who are mapping an issue to CWE/CAPEC IDs, i.e., finding the most appropriate CWE for a specific issue (e.g., a CVE record). Example: tool developers, security researchers. For users who wish to see all available information for the CWE/CAPEC entry. For users who want to customize what details are displayed.
    ×

    Edit Custom Filter


    + Description
    The product allows address regions to overlap, which can result in the bypassing of intended memory protection.
    + Extended Description

    Isolated memory regions and access control (read/write) policies are used by hardware to protect privileged software. Software components are often allowed to change or remap memory region definitions in order to enable flexible and dynamically changeable memory management by system software.

    If a software component running at lower privilege can program a memory address region to overlap with other memory regions used by software running at higher privilege, privilege escalation may be available to attackers. The memory protection unit (MPU) logic can incorrectly handle such an address overlap and allow the lower-privilege software to read or write into the protected memory region, resulting in privilege escalation attack. An address overlap weakness can also be used to launch a denial of service attack on the higher-privilege software memory regions.

    + Common Consequences
    Section HelpThis table specifies different individual consequences associated with the weakness. The Scope identifies the application security area that is violated, while the Impact describes the negative technical impact that arises if an adversary succeeds in exploiting this weakness. The Likelihood provides information about how likely the specific consequence is expected to be seen relative to the other consequences in the list. For example, there may be high likelihood that a weakness will be exploited to achieve a certain impact, but a low likelihood that it will be exploited to achieve a different impact.
    Impact Details

    Modify Memory; Read Memory; DoS: Instability

    Scope: Confidentiality, Integrity, Availability

    Likelihood: High
    + Potential Mitigations
    Phase(s) Mitigation

    Architecture and Design

    Ensure that memory regions are isolated as intended and that access control (read/write) policies are used by hardware to protect privileged software.

    Implementation

    For all of the programmable memory protection regions, the memory protection unit (MPU) design can define a priority scheme.

    For example: if three memory regions can be programmed (Region_0, Region_1, and Region_2), the design can enforce a priority scheme, such that, if a system address is within multiple regions, then the region with the lowest ID takes priority and the access-control policy of that region will be applied. In some MPU designs, the priority scheme can also be programmed by trusted software.

    Hardware logic or trusted firmware can also check for region definitions and block programming of memory regions with overlapping addresses.

    The memory-access-control-check filter can also be designed to apply a policy filter to all of the overlapping ranges, i.e., if an address is within Region_0 and Region_1, then access to this address is only granted if both Region_0 and Region_1 policies allow the access.

    Effectiveness: High

    + Relationships
    Section Help This table shows the weaknesses and high level categories that are related to this weakness. These relationships are defined as ChildOf, ParentOf, MemberOf and give insight to similar items that may exist at higher and lower levels of abstraction. In addition, relationships such as PeerOf and CanAlsoBe are defined to show similar weaknesses that the user may want to explore.
    + Relevant to the view "Research Concepts" (View-1000)
    Nature Type ID Name
    ChildOf Pillar Pillar - a weakness that is the most abstract type of weakness and represents a theme for all class/base/variant weaknesses related to it. A Pillar is different from a Category as a Pillar is still technically a type of weakness that describes a mistake, while a Category represents a common characteristic used to group related things. 284 Improper Access Control
    CanPrecede Class Class - a weakness that is described in a very abstract fashion, typically independent of any specific language or technology. More specific than a Pillar Weakness, but more general than a Base Weakness. Class level weaknesses typically describe issues in terms of 1 or 2 of the following dimensions: behavior, property, and resource. 119 Improper Restriction of Operations within the Bounds of a Memory Buffer
    + Relevant to the view "Hardware Design" (View-1194)
    Nature Type ID Name
    MemberOf Category Category - a CWE entry that contains a set of other entries that share a common characteristic. 1198 Privilege Separation and Access Control Issues
    + Modes Of Introduction
    Section HelpThe different Modes of Introduction provide information about how and when this weakness may be introduced. The Phase identifies a point in the life cycle at which introduction may occur, while the Note provides a typical scenario related to introduction during the given phase.
    Phase Note
    Architecture and Design Such issues could be introduced during hardware architecture and design or implementation and identified later during the Testing phase.
    Implementation
    + Applicable Platforms
    Section HelpThis listing shows possible areas for which the given weakness could appear. These may be for specific named Languages, Operating Systems, Architectures, Paradigms, Technologies, or a class of such platforms. The platform is listed along with how frequently the given weakness appears for that instance.
    Languages

    Class: Not Language-Specific (Undetermined Prevalence)

    Operating Systems

    Class: Not OS-Specific (Undetermined Prevalence)

    Architectures

    Class: Not Architecture-Specific (Undetermined Prevalence)

    Technologies

    Memory Hardware (Undetermined Prevalence)

    Processor Hardware (Undetermined Prevalence)

    + Demonstrative Examples

    Example 1


    For example, consider a design with a 16-bit address that has two software privilege levels: Privileged_SW and Non_privileged_SW. To isolate the system memory regions accessible by these two privilege levels, the design supports three memory regions: Region_0, Region_1, and Region_2.

    Each region is defined by two 32 bit registers: its range and its access policy.

    • Address_range[15:0]: specifies the Base address of the region
    • Address_range[31:16]: specifies the size of the region
    • Access_policy[31:0]: specifies what types of software can access a region and which actions are allowed

    Certain bits of the access policy are defined symbolically as follows:

    • Access_policy.read_np: if set to one, allows reads from Non_privileged_SW
    • Access_policy.write_np: if set to one, allows writes from Non_privileged_SW
    • Access_policy.execute_np: if set to one, allows code execution by Non_privileged_SW
    • Access_policy.read_p: if set to one, allows reads from Privileged_SW
    • Access_policy.write_p: if set to one, allows writes from Privileged_SW
    • Access_policy.execute_p: if set to one, allows code execution by Privileged_SW

    For any requests from software, an address-protection filter checks the address range and access policies for each of the three regions, and only allows software access if all three filters allow access.

    Consider the following goals for access control as intended by the designer:

    • Region_0 & Region_1: registers are programmable by Privileged_SW
    • Region_2: registers are programmable by Non_privileged_SW

    The intention is that Non_privileged_SW cannot modify memory region and policies defined by Privileged_SW in Region_0 and Region_1. Thus, it cannot read or write the memory regions that Privileged_SW is using.

    (bad code)
     

    Non_privileged_SW can program the Address_range register for Region_2 so that its address overlaps with the ranges defined by Region_0 or Region_1. Using this capability, it is possible for Non_privileged_SW to block any memory region from being accessed by Privileged_SW, i.e., Region_0 and Region_1.

    This design could be improved in several ways.

    (good code)
     
    Ensure that software accesses to memory regions are only permitted if all three filters permit access. Additionally, the scheme could define a memory region priority to ensure that Region_2 (the memory region defined by Non_privileged_SW) cannot overlap Region_0 or Region_1 (which are used by Privileged_SW).


    Example 2


    The example code below is taken from the IOMMU controller module of the HACK@DAC'19 buggy CVA6 SoC [REF-1338]. The static memory map is composed of a set of Memory-Mapped Input/Output (MMIO) regions covering different IP agents within the SoC. Each region is defined by two 64-bit variables representing the base address and size of the memory region (XXXBase and XXXLength).

    In this example, we have 12 IP agents, and only 4 of them are called out for illustration purposes in the code snippets. Access to the AES IP MMIO region is considered privileged as it provides access to AES secret key, internal states, or decrypted data.

    (bad code)
    Example Language: Verilog 
    ...
    localparam logic[63:0] PLICLength = 64'h03FF_FFFF;
    localparam logic[63:0] UARTLength = 64'h0011_1000;
    localparam logic[63:0] AESLength = 64'h0000_1000;
    localparam logic[63:0] SPILength = 64'h0080_0000;
    ...
    typedef enum logic [63:0] {
    ...
    PLICBase = 64'h0C00_0000,
    UARTBase = 64'h1000_0000,
    AESBase = 64'h1010_0000,
    SPIBase = 64'h2000_0000,
    ...

    The vulnerable code allows the overlap between the protected MMIO region of the AES peripheral and the unprotected UART MMIO region. As a result, unprivileged users can access the protected region of the AES IP. In the given vulnerable example UART MMIO region starts at address 64'h1000_0000 and ends at address 64'h1011_1000 (UARTBase is 64'h1000_0000, and the size of the region is provided by the UARTLength of 64'h0011_1000).

    On the other hand, the AES MMIO region starts at address 64'h1010_0000 and ends at address 64'h1010_1000, which implies an overlap between the two peripherals' memory regions. Thus, any user with access to the UART can read or write the AES MMIO region, e.g., the AES secret key.

    To mitigate this issue, remove the overlapping address regions by decreasing the size of the UART memory region or adjusting memory bases for all the remaining peripherals. [REF-1339]

    (good code)
    Example Language: Verilog 
    ...
    localparam logic[63:0] PLICLength = 64'h03FF_FFFF;
    localparam logic[63:0] UARTLength = 64'h0000_1000;
    localparam logic[63:0] AESLength = 64'h0000_1000;
    localparam logic[63:0] SPILength = 64'h0080_0000;
    ...
    typedef enum logic [63:0] {
    ...
    PLICBase = 64'h0C00_0000,
    UARTBase = 64'h1000_0000,
    AESBase = 64'h1010_0000,
    SPIBase = 64'h2000_0000,
    ...


    + Selected Observed Examples

    Note: this is a curated list of examples for users to understand the variety of ways in which this weakness can be introduced. It is not a complete list of all CVEs that are related to this CWE entry.

    Reference Description
    virtualization product allows compromise of hardware product by accessing certain remapping registers.
    processor design flaw allows ring 0 code to access more privileged rings by causing a register window to overlap a range of protected system RAM [REF-1100]
    + Weakness Ordinalities
    Ordinality Description
    Primary
    (where the weakness exists independent of other weaknesses)
    Resultant
    (where the weakness is typically related to the presence of some other weaknesses)
    + Detection Methods
    Method Details

    Manual Analysis

    Create a high privilege memory block of any arbitrary size. Attempt to create a lower privilege memory block with an overlap of the high privilege memory block. If the creation attempt works, fix the hardware. Repeat the test.

    Effectiveness: High

    + Memberships
    Section HelpThis MemberOf Relationships table shows additional CWE Categories and Views that reference this weakness as a member. This information is often useful in understanding where a weakness fits within the context of external information sources.
    Nature Type ID Name
    MemberOf ViewView - a subset of CWE entries that provides a way of examining CWE content. The two main view structures are Slices (flat lists) and Graphs (containing relationships between entries). 1343 Weaknesses in the 2021 CWE Most Important Hardware Weaknesses List
    MemberOf CategoryCategory - a CWE entry that contains a set of other entries that share a common characteristic. 1396 Comprehensive Categorization: Access Control
    MemberOf ViewView - a subset of CWE entries that provides a way of examining CWE content. The two main view structures are Slices (flat lists) and Graphs (containing relationships between entries). 1432 Weaknesses in the 2025 CWE Most Important Hardware Weaknesses List
    + Vulnerability Mapping Notes
    Usage ALLOWED
    (this CWE ID may be used to map to real-world vulnerabilities)
    Reason Acceptable-Use

    Rationale

    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.

    Comments

    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.
    + Notes

    Maintenance

    As of CWE 4.6, CWE-1260 and CWE-1316 are siblings under view 1000, but CWE-1260 might be a parent of CWE-1316. More analysis is warranted.
    + References
    [REF-1100] Christopher Domas. "The Memory Sinkhole". 2015-07-20.
    <https://github.com/xoreaxeaxeax/sinkhole/blob/master/us-15-Domas-TheMemorySinkhole-wp.pdf>.
    [REF-1338] "Hackatdac19 ariane_soc_pkg.sv". 2019.
    <https://github.com/HACK-EVENT/hackatdac19/blob/619e9fb0ef32ee1e01ad76b8732a156572c65700/tb/ariane_soc_pkg.sv#L44:L62>. (URL validated: 2023-06-21)
    [REF-1339] Florian Zaruba, Michael Schaffner and Andreas Traber. "csr_regfile.sv". 2019.
    <https://github.com/openhwgroup/cva6/blob/7951802a0147aedb21e8f2f6dc1e1e9c4ee857a2/src/csr_regfile.sv#L45>. (URL validated: 2023-06-21)
    + Content History
    + Submissions
    Submission Date Submitter Organization
    2020-02-10
    (CWE 4.1, 2020-02-24)
    Arun Kanuparthi, Hareesh Khattri, Parbati Kumar Manna, Narasimha Kumar V Mangipudi Intel Corporation
    + Contributions
    Contribution Date Contributor Organization
    2023-06-21 Shaza Zeitouni, Mohamadreza Rostami, Pouya Mahmoody, Ahmad-Reza Sadeghi Technical University of Darmstadt
    suggested demonstrative example
    2023-06-21 Rahul Kande, Chen Chen, Jeyavijayan Rajendran Texas A&M University
    suggested demonstrative example
    2021-10-22 Hareesh Khattri Intel Corporation
    suggested observed examples
    2021-10-20 Narasimha Kumar V Mangipudi Lattice Semiconductor
    suggested content improvements
    + Modifications
    Modification Date Modifier Organization
    2025-09-09
    (CWE 4.18, 2025-09-09)
    CWE Content Team MITRE
    updated Relationships
    2023-06-29
    (CWE 4.12, 2023-06-29)
    CWE Content Team MITRE
    updated Demonstrative_Examples, Mapping_Notes, References
    2023-04-27
    (CWE 4.11, 2023-04-27)
    CWE Content Team MITRE
    updated Relationships
    2023-01-31
    (CWE 4.10, 2023-01-31)
    CWE Content Team MITRE
    updated Related_Attack_Patterns
    2022-06-28
    (CWE 4.8, 2022-06-28)
    CWE Content Team MITRE
    updated Applicable_Platforms
    2022-04-28
    (CWE 4.7, 2022-04-28)
    CWE Content Team MITRE
    updated Applicable_Platforms, Related_Attack_Patterns
    2021-10-28
    (CWE 4.6, 2021-10-28)
    CWE Content Team MITRE
    updated Demonstrative_Examples, Description, Detection_Factors, Maintenance_Notes, Observed_Examples, Relationships, Weakness_Ordinalities
    2020-12-10
    (CWE 4.3, 2020-12-10)
    CWE Content Team MITRE
    updated Maintenance_Notes
    2020-08-20
    (CWE 4.2, 2020-08-20)
    CWE Content Team MITRE
    updated Demonstrative_Examples, Description, Modes_of_Introduction, Related_Attack_Patterns
    Page Last Updated: April 30, 2026