This vulnerability occurs when a system incorrectly allows different memory protection ranges to overlap. This flaw can let attackers bypass security controls and access restricted memory areas.
Modern hardware uses isolated memory regions with specific read/write permissions to protect sensitive software, like an operating system kernel. Lower-privilege software, such as an application, is sometimes allowed to reconfigure these memory maps. If that software can program an overlapping region that intrudes into a higher-privilege area, it creates a critical security gap. The Memory Protection Unit (MPU) may fail to properly resolve this overlap, allowing the lower-privilege software to read or write into protected memory. This typically leads to privilege escalation, giving an attacker unauthorized control. Alternatively, an attacker could use this overlap to corrupt critical memory, causing a denial-of-service crash in the more privileged software.
Impact: Modify MemoryRead MemoryDoS: Instability
Effectiveness: High
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.
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).
verilog
localparam logic[63:0] UARTLength = 64'h0011_1000;**
verilog
verilogverilog
localparam logic[63:0] UARTLength = 64'h0000_1000;** localparam logic[63:0] AESLength = 64'h0000_1000; localparam logic[63:0] SPILength = 64'h0080_0000;
verilog