描述
硬件设计控制寄存器位“粘性”实施不当,或写一次位字段,这样他们可以重新编程软件。
扩展描述
集成电路和硬件IP软件可编程控制和设置通常存储在寄存器电路。这些寄存器的内容必须在硬件复位初始化定义默认值硬编码的硬件描述语言(HDL)代码的硬件单元。共同安全保护方法用于保护寄存器设置修改的软件是使设置写一次或“粘性”。This allows writing to such registers only once, whereupon they become read-only. This is useful to allow initial boot software to configure systems settings to secure values while blocking runtime software from modifying such hardware settings.
未能实现写一次限制等硬件设计可以公开的寄存器被软件和re-programmed写很多次了。例如,写一次字段可以实现只被写保护,如果他们已经被设置为值“1”,在他们的工作“write-1-once”而不是“写一次”。
的关系
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段
请注意
架构和设计
实现
期间推出的这些问题可能实现的硬件设计,因为IP HDL代码中定义参数和违约和确认后在测试或系统配置阶段。
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围
影响
可能性
保密 完整性 可用性 访问控制
系统配置不能被编程以安全的方式。
示范例子
示例1
考虑设计模块系统verilog代码示例所示。register_write_once_example模块注册的一个例子,写一次字段定义。0场捕获write_once_status值。这个实现可以注册,被定义为规范写一次注册,因为write_once_status字段写入输入数据位0在第一次写。
模块register_write_once_example
(
输入15:0 Data_in,
输入时钟,
输入ip_resetn,
输入global_resetn,
输入写,
输出reg 15:0 Data_out
);
reg Write_once_status;
总是@ (posedge Clk或negedge ip_resetn)
如果(~ ip_resetn)
开始
Data_out < = 16 'h0000; Write_once_status < = 1 'b0;
结束
else if(写& ~ Write_once_status)
开始
Data_out < = 16 'hfffe Data_in &; Write_once_status < = Data_in [0];/ /输入0集Write_once_status
结束
else if(~写)
开始
Data_out [15:1] < = Data_out [15:1]; Data_out [0] < = Write_once_status;
结束
endmodule
上面的例子只锁进一步写道如果write_once_status写入。所以它作为write_1-Once而不是写一次属性。
模块register_write_once_example
(
输入15:0 Data_in,
输入时钟,
输入ip_resetn,
输入global_resetn,
输入写,
输出reg 15:0 Data_out
);
reg Write_once_status;
总是@ (posedge Clk或negedge ip_resetn)
如果(~ ip_resetn)
开始
Data_out < = 16 'h0000; Write_once_status < = 1 'b0;
结束
else if(写& ~ Write_once_status)
开始
Data_out < = 16 'hfffe Data_in &; Write_once_status < = 1 'b1;/ /写一次状态设置在第一次写,独立的输入
结束
else if(~写)
开始
Data_out [15:1] < = Data_out [15:1]; Data_out [0] < = Write_once_status;
结束
endmodule
潜在的缓解措施
阶段:体系结构和设计
在硬件设计注册写一次或粘性的所有字段必须被适当的配置。
测试阶段:
测试阶段应该使用自动化工具来测试值不是可重复编程的,写一次领域锁定写0。
脆弱性映射笔记
用法:允许
(CWE ID可以用来映射到现实世界的漏洞)
原因: 可接受的使用
理由是:
这CWE条目底部的抽象级别,这是一个首选的抽象级别映射到漏洞的根本原因。
评论:
仔细阅读这两个名称和描述,以确保此映射是一个适当的配合。不要试图“力”映射到底层基础/变体只是遵守这首选的抽象级别。
更多的信息是可用的,请编辑自定义过滤器或选择一个不同的过滤器。