针对故障注入的 Atoi() 漏洞

问题描述

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

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

解决方法

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

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

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...