首页 > 解决方案 > memset() 漏洞

问题描述

我在嵌入式应用程序中使用 memset 来删除一个数据。这是功能:

uint8_t Delete()

{

    memset(cure.name, 0x0, 32);

    cure.volume = 0;

    cure.valid=0;

    printf("[*] Cure DELETED\n");

    return 1;

}

我正在尝试针对故障注入攻击(时钟故障)评估它。正如我在实验中看到的,时钟故障 memset 也覆盖了邻居的内存块。(它们已被零填充)。我可以使用 memset 的任何更安全(更安全)的替代功能吗?可能是在所有复制步骤中验证目标块的指令。

预先感谢您的帮助;

标签: csecurityembeddedmemset

解决方案


memset 是一个标准库函数;它不太可能考虑故意产生的硬件故障。针对这些故障的固件保护似乎取决于:

  1. 使执行时间不可预测
  2. 添加自我验证码。

我怀疑您将不得不编写自己的函数来执行此操作;例如,您可以在循环中添加随机延迟以将内存归零。

我不知道这是否足够。您可能需要有关系统中易受攻击的内容的更多详细信息;针对什么指令,为了还要加验证码


推荐阅读