cwe - 1234:硬件锁的内部或调试模式允许覆盖
描述
扩展描述
设备配置控制设备电源复位后通常程序由一个可信固件或软件模块(例如,BIOS /引导装载程序)然后锁定任何进一步的修改。这通常使用一个可信实现锁,当设置,禁用写入保护的寄存器或地址区域。锁保护的目的是防止某些系统配置的修改(例如,内存/内存保护单元配置)。如果调试功能由硬件或内部模式/系统状态支持硬件设计,修改锁保护可以允许访问和修改配置信息。
的关系
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
访问控制
|
绕过锁允许访问和修改系统配置即使已经设置了锁定位。 |
高 |
示范例子
示例1
例如,考虑这个例子Locked_override_register例子。这个寄存器模块支持锁定模式,阻止任何写后锁设置为1。 然而,它还允许覆盖锁保护当scan_mode或debug_unlocked模式是活跃的。
模块Locked_register_example ( 输入15:0 Data_in, 输入时钟, 输入resetn, 输入写, 输入锁, 输入scan_mode, 输入debug_unlocked, 输出reg 15:0 Data_out );
reg lock_status;
总是@ (posedge Clk或negedge resetn)
如果(~ resetn) / /寄存器复位resetn 开始
lock_status < = 1 'b0;
结束 else if(锁) 开始
lock_status < = 1 'b1;
结束 其他如果锁(~) 开始
lock_status < = lock_status
结束
总是@ (posedge Clk或negedge resetn)
如果(~ resetn) / /寄存器复位resetn 开始
Data_out < = 16 'h0000;
结束 else if(写& (~ lock_status | scan_mode | debug_unlocked)) / /注册保护锁位输入,覆盖支持scan_mode & debug_unlocked 开始
Data_out < = Data_in;
结束 else if(~写) 开始
Data_out < = Data_out;
结束
endmodule
如果scan_mode或debug_unlocked模式可以由软件触发,然后可能绕过锁保护。
删除调试和扫描模式覆盖或保护使这些模式,因此只有信任和授权用户可以启用这些模式。
潜在的缓解措施
|