cwe - 1281:处理器指令序列导致意想不到的行为
描述
特定的处理器指令组合导致不良的行为,如锁处理器,直到执行硬重置。
扩展描述
如果指令集架构(ISA)和处理器逻辑不彻底仔细设计和测试,某些组合的指令可能会导致锁处理器或其他意想不到的和不受欢迎的行为。在遇到未执行的指令操作码或非法指令操作数,处理器应该抛出一个异常,没有负面影响的安全进行。然而,特定组合的合法和非法指令可能会导致意外的行为与安全隐患,如CPU允许未经授权的程序完全锁。
一些例子是奔腾f00f bug, MC6800 HCF,新瑞仕逗号错误,和其他更广泛的“停止和着火”指令。
的关系
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 |
请注意 |
架构和设计 |
从某些意想不到的行为指令组合可以在ISA源自bug |
实现 |
从某些意想不到的行为指令组合可以是由于投机执行等实现细节,缓存等。 |
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示范例子
示例1
奔腾F00F虫是一个真实世界的例子,一个指令序列可以锁定一个处理器。“是因为”指令与一个内存位置比较寄存器的内容。操作数预计将是一个内存位置,但在坏代码片段eax寄存器。因为指定的操作数是非法的,生成一个异常,这是正确的行为,而不是一个安全问题。然而,当以“锁”为前缀的指令,处理器死锁,因为锁定内存事务需要一双读写事务发生内存总线上的锁被释放。异常会导致读发生但没有相应的写,就不会有如果法律已经提供给是因为指令操作数。
观察到的例子
参考 |
描述 |
|
一个错误在某些英特尔奔腾处理器允许DoS(挂)通过一个无效的”是因为“指令,导致死锁 |
潜在的缓解措施
测试阶段:
实现一个严格的测试策略,包含随机化探索指令序列,不太可能出现在正常工作负载以确定停止和着火指令序列。 |
阶段:修补和维护
|
引用
|