The chip does not implement or does not correctly perform access control to check whether users are authorized to access internal registers and test modes through the physical debug/test interface.
A device's internal information may be accessed through a scan chain of interconnected internal registers, usually through a JTAG interface. The JTAG interface provides access to these registers in a serial fashion in the form of a scan chain for the purposes of debugging programs running on a device. Since almost all information contained within a device may be accessed over this interface, device manufacturers typically insert some form of authentication and authorization to prevent unintended use of this sensitive information. This mechanism is implemented in addition to on-chip protections that are already present. If authorization, authentication, or some other form of access control is not implemented or not implemented correctly, a user may be able to bypass on-chip protection mechanisms through the debug interface. Sometimes, designers choose not to expose the debug pins on the motherboard. Instead, they choose to hide these pins in the intermediate layers of the board. This is primarily done to work around the lack of debug authorization inside the chip. In such a scenario (without debug authorization), when the debug interface is exposed, chip internals are accessible to an attacker.
Impact: Read Application Data
Impact: Read Memory
Impact: Execute Unauthorized Code or Commands
Impact: Modify Memory
Impact: Modify Application Data
Impact: Bypass Protection Mechanism
Strategy: Separation of Privilege
Effectiveness: High
If the JTAG interface on this device is not hidden by the manufacturer, the interface may be identified using tools such as JTAGulator. If it is hidden but not disabled, it can be exposed by physically wiring to the board.
By issuing a "halt" command before the OS starts, the unauthorized user pauses the watchdog timer and prevents the router from restarting (once the watchdog timer would have expired). Having paused the router, an unauthorized user is able to execute code and inspect and modify data in the device, even extracting all of the router's firmware. This allows the user to examine the router and potentially exploit it.
In order to prevent exposing the debugging interface, manufacturers might try to obfuscate the JTAG interface or blow device internal fuses to disable the JTAG interface. Adding authentication and authorization to this interface makes use by unauthorized individuals much more difficult.
verilog
if(exp_hash == pass_hash) begin**
verilog
verilog
pass_check = 1'b0;** end state_d = Idle; end else begin ``` state_d = PassChkValid; end end ...
verilog
(miss_pass_check_cnt_q != 2'b11)** ) begin ``` state_d = Write; pass_mode = 1'b1; end ... end ... PassChkValid: begin if(hashValid) begin if(exp_hash == pass_hash) begin pass_check = 1'b1; end else begin pass_check = 1'b0;
verilog...
logic [31-1:0] data_d, data_q; ...
logic [512-1:0] pass_data; ...
verilog
pass_data = { {60{8'h00}}, data_d};** state_d = PassChk; pass_mode = 1'b0; ... end ...
...
logic [512-1:0] data_d, data_q; ... logic [512-1:0] pass_data; ...
verilog
pass_data = data_d;** state_d = PassChk; pass_mode = 1'b0; ... end ...