1

我在嵌入式 c 应用程序中使用 atoi 将字符串转换为整数。但是,我可以使用时钟故障注入攻击来利用 atoi() 中的漏洞。我的意思是当我有一个或多个故障时,处理器会丢失一些字符并返回错误的整数。atoi 函数是否有任何替代方法可以更强大地防止故障注入?我可以使用它的互补(itoa 函数)来重新生成字符串并比较两个字符串吗?

  • 我将 strtol 函数视为验证的替代方法,而不是 atoi()。这可能是我的问题还是它只是返回软件错误?
4

1 回答 1

3

这是一个典型的由薛定谔猫控制的 CPU 案例。用她的量子爪子,她可以决定执行或跳过哪些指令……

很难想象代码在这样的环境中具有弹性。

事实上,任何测试输出一致性的尝试都可能因跳过相应的指令而失败。

正如 Barmar 评论的那样,您可以只调用atoi()两次并比较值,希望能暂时分散时钟故障的注意力。

于 2021-04-12T22:23:41.187 回答