RTL simulation to ensure that bridge-access controls are implemented properly.
Improper Access Control in Fabric Bridge
This vulnerability occurs when a hardware fabric bridge, which connects different IP blocks on a chip, fails to properly verify access permissions for transactions passing through it. The bridge…
What is CWE-1317?
Real-world CVEs caused by CWE-1317
-
Baseboard Management Controller (BMC) device implements Advanced High-performance Bus (AHB) bridges that do not require authentication for arbitrary read and write access to the BMC's physical address space from the host, and possibly the network [REF-1138].
Step-by-step attacker path
- 1
This example is from CVE-2019-6260 [REF-1138]. The iLPC2AHB bridge connects a CPU (with multiple, privilege levels, such as user, super user, debug, etc.) over AHB interface to an LPC bus. Several peripherals are connected to the LPC bus. The bridge is expected to check the privilege level of the transactions initiated in the core before forwarding them to the peripherals on the LPC bus.
- 2
The bridge does not implement the checks and allows reads and writes from all privilege levels.
- 3
To address this, designers should implement hardware-based checks that are either hardcoded to block untrusted agents from accessing secure peripherals or implement firmware flows that configure the bridge to block untrusted agents from making arbitrary reads or writes.
- 4
The example code below is taken from the AES and core local interrupt (CLINT) peripherals of the HACK@DAC'21 buggy OpenPiton SoC. The access to all the peripherals for a given privilege level of the processor is controlled by an access control module in the SoC. This ensures that malicious users with insufficient privileges do not get access to sensitive data, such as the AES keys used by the operating system to encrypt and decrypt information. The security of the entire system will be compromised if the access controls are incorrectly enforced. The access controls are enforced through the interconnect-bus fabrics, where access requests with insufficient access control permissions will be rejected.
- 5
The previous code snippet [REF-1382] illustrates an instance of a vulnerable implementation of access control for the CLINT peripheral (see module clint). It also shows a correct implementation of access control for the AES peripheral (see module aes0_wrapper) [REF-1381]. An enable signal (en_o) from the fabric's AXI interface (present in both modules) is used to determine if an access request is made to the peripheral. In the case of the AES peripheral, this en_o signal is first received in a temporary signal en_acct. Then, the access request is enabled (by asserting the en signal) only if the request has sufficient access permissions (i.e., acct_ctrl_i signal should be enabled). However, in the case of the CLINT peripheral, the enable signal, en_o, from the AXI interface, is directly used to enable accesses. As a result, users with insufficient access permissions also get full access to the CLINT peripheral.
Vulnerable Verilog
The example code below is taken from the AES and core local interrupt (CLINT) peripherals of the HACK@DAC'21 buggy OpenPiton SoC. The access to all the peripherals for a given privilege level of the processor is controlled by an access control module in the SoC. This ensures that malicious users with insufficient privileges do not get access to sensitive data, such as the AES keys used by the operating system to encrypt and decrypt information. The security of the entire system will be compromised if the access controls are incorrectly enforced. The access controls are enforced through the interconnect-bus fabrics, where access requests with insufficient access control permissions will be rejected.
...
module aes0_wrapper #(...)(...);
...
```
input logic acct_ctrl_i;
...
axi_lite_interface #(...
) axi_lite_interface_i (
...
```
.en_o ( en_acct ),**
...
..);
```
```
assign en = en_acct && acct_ctrl_i;**
...
endmodule
...
module clint #(...)(...);
...
```
axi_lite_interface #(...
) axi_lite_interface_i (
...
```
.en_o ( en ),**
...
);
...
endmodule Secure Verilog
To fix this, enable access requests to CLINT [REF-1383] only if the user has sufficient access as indicated by the acct_ctrl_i signal in the boolean && with en_acct.
module clint #(...
) (
...
```
```
input logic acct_ctrl_i,**
...
);
```
logic en
```
, en_acct** ;
...
```
axi_lite_interface #(...
) axi_lite_interface_i (
...
.en_o (
```
en_acct** ),
...
```
);
```
assign en = en_acct && acct_ctrl_i;**
...
endmodule How to prevent CWE-1317
- Architecture and Design Ensure that the design includes provisions for access-control checks in the bridge for both upstream and downstream transactions.
- Implementation Implement access-control checks in the bridge for both upstream and downstream transactions.
How to detect CWE-1317
Formal verification of bridge RTL to ensure that access control cannot be bypassed.
Plexicus auto-detects CWE-1317 and opens a fix PR in under 60 seconds.
Codex Remedium scans every commit, identifies this exact weakness, and ships a reviewer-ready pull request with the patch. No tickets. No hand-offs.
Frequently asked questions
What is CWE-1317?
This vulnerability occurs when a hardware fabric bridge, which connects different IP blocks on a chip, fails to properly verify access permissions for transactions passing through it. The bridge forwards requests without checking the master's privilege level or the hardware identity, effectively bypassing critical security controls.
How serious is CWE-1317?
MITRE has not published a likelihood-of-exploit rating for this weakness. Treat it as medium-impact until your threat model proves otherwise.
What languages or platforms are affected by CWE-1317?
MITRE lists the following affected platforms: Not OS-Specific, Not Architecture-Specific, Processor Hardware, Not Technology-Specific.
How can I prevent CWE-1317?
Ensure that the design includes provisions for access-control checks in the bridge for both upstream and downstream transactions. Implement access-control checks in the bridge for both upstream and downstream transactions.
How does Plexicus detect and fix CWE-1317?
Plexicus's SAST engine matches the data-flow signature for CWE-1317 on every commit. When a match is found, our Codex Remedium agent opens a fix PR with the corrected code, tests, and a one-line summary for the reviewer.
Where can I learn more about CWE-1317?
MITRE publishes the canonical definition at https://cwe.mitre.org/data/definitions/1317.html. You can also reference OWASP and NIST documentation for adjacent guidance.
Weaknesses related to CWE-1317
Improper Access Control
The software fails to properly limit who can access a resource, allowing unauthorized users or systems to interact with it.
On-Chip Debug and Test Interface With Improper Access Control
This vulnerability occurs when a hardware chip's debug or test interface (like JTAG) lacks proper access controls. Without correct…
Insufficient Granularity of Access Control
This vulnerability occurs when a system's access controls are too broad, allowing unauthorized users or processes to read or modify…
Improper Restriction of Write-Once Bit Fields
This vulnerability occurs when hardware write-once protection mechanisms, often called 'sticky bits,' are incorrectly implemented,…
Improper Prevention of Lock Bit Modification
This vulnerability occurs when hardware or firmware uses a lock bit to protect critical system registers or memory regions, but fails to…
Security-Sensitive Hardware Controls with Missing Lock Bit Protection
This vulnerability occurs when a hardware device uses a lock bit to protect critical configuration registers, but the lock fails to…
CPU Hardware Not Configured to Support Exclusivity of Write and Execute Operations
This vulnerability occurs when a CPU's hardware is not set up to enforce a strict separation between writing data to memory and executing…
Improper Access Control Applied to Mirrored or Aliased Memory Regions
This vulnerability occurs when a hardware design maps the same physical memory to multiple addresses (aliasing or mirroring) but fails to…
Improper Restriction of Security Token Assignment
This vulnerability occurs when a System-on-a-Chip (SoC) fails to properly secure its Security Token mechanism. These tokens control which…
Further reading
- MITRE — official CWE-1317 https://cwe.mitre.org/data/definitions/1317.html
- CVE-2019-6260: Gaining control of BMC from the host processor https://www.flamingspork.com/blog/2019/01/23/cve-2019-6260:-gaining-control-of-bmc-from-the-host-processor/
- aes0_wrapper.sv lines 72 - 78 https://github.com/HACK-EVENT/hackatdac21/blob/b9ecdf6068445d76d6bee692d163fededf7a9d9b/piton/design/chip/tile/ariane/src/aes0/aes0_wrapper.sv#L72-L78
- clint.sv line 71 https://github.com/HACK-EVENT/hackatdac21/blob/b9ecdf6068445d76d6bee692d163fededf7a9d9b/piton/design/chip/tile/ariane/src/clint/clint.sv#L71C2-L71C36
- Fix for clint.sv line 78 https://github.com/HACK-EVENT/hackatdac21/blob/45a004368b5a31857008834d9780536f0764f055/piton/design/chip/tile/ariane/src/clint/clint.sv#L78
Don't Let Security
Weigh You Down.
Stop choosing between AI velocity and security debt. Plexicus is the only platform that runs Vibe Coding Security and ASPM in parallel — one workflow, every codebase.