【发布时间】:2021-07-07 23:24:28
【问题描述】:
我在嵌入式 c 应用程序中使用 atoi 将字符串转换为整数。但是,我可以使用时钟故障注入攻击来利用 atoi() 中的漏洞。我的意思是当我有一个或多个故障时,处理器会丢失一些字符并返回错误的整数。 atoi 函数是否有任何替代方法可以更强大地防止故障注入?我可以使用它的互补(itoa 函数)来重新生成字符串并比较两个字符串吗?
- 我看到 strtol 函数代替了 atoi() 来替代验证。这可能是我的问题还是它只是返回软件错误?
【问题讨论】:
-
您可以拨打
atoi()两次,看看是否得到相同的结果。 -
"clock glitching fault injection attack" 从 atoi() 获取错误整数将是最好的方案。典型的情况是处理器崩溃了。事实上,你可以让时钟出现故障并且唯一的影响是 atoi() 中丢失数字的可能性非常低,以至于这个问题基本上没有意义。
-
@user3386109 确实如此。到目前为止,我看到的所有“反故障攻击”“解决方案都毫无意义,因为它可能导致任何事情。例如一起跳过一条指令(或一堆)。
-
我认为有能力在你的硬件中干扰时钟的人已经拥有了你。
-
来自:darkreading.com/edge/theedge/… 时钟信号中断,CPU 和其他处理组件可以跳过指令,暂时停止执行程序,或以其他方式允许攻击者将恶意指令插入处理差距。 如果你有一个,你会遇到比
atoi更大的问题你会遇到与itoa或“比较”或几乎任何相同的问题> 你写的代码。
标签: c fault atoi itoa embedded-coder