c - memset() 漏洞
问题描述
我在嵌入式应用程序中使用 memset 来删除一个数据。这是功能:
uint8_t Delete()
{
memset(cure.name, 0x0, 32);
cure.volume = 0;
cure.valid=0;
printf("[*] Cure DELETED\n");
return 1;
}
我正在尝试针对故障注入攻击(时钟故障)评估它。正如我在实验中看到的,时钟故障 memset 也覆盖了邻居的内存块。(它们已被零填充)。我可以使用 memset 的任何更安全(更安全)的替代功能吗?可能是在所有复制步骤中验证目标块的指令。
预先感谢您的帮助;
解决方案
memset 是一个标准库函数;它不太可能考虑故意产生的硬件故障。针对这些故障的固件保护似乎取决于:
- 使执行时间不可预测
- 添加自我验证码。
我怀疑您将不得不编写自己的函数来执行此操作;例如,您可以在循环中添加随机延迟以将内存归零。
我不知道这是否足够。您可能需要有关系统中易受攻击的内容的更多详细信息;针对什么指令,为了还要加验证码
推荐阅读
- javascript - 这个箭头函数如何不给出任何错误?
- javascript - 使用 JavaScript 在字符串中查找某些数据
- c++ - 通过 https 调用 c++ Lambda 运行时
- c++ - std::unordered_set 的两个自定义键实现之间存在巨大性能差异的原因以及如何解决?
- python - 在 vaex 中修改 hdf5 文件的工作流程
- javascript - 如何在后端捕获 POST 请求?
- symfony - Symfony 4 Twig 自定义表单字段模板,用于收集复选框
- tcsh - 在 tcsh 中临时设置一个环境变量
- c# - editorconfig - 如何为只读私有字段指定下划线前缀?
- spyder - 无法使用 miniconda 更新 Spyder 4.0.0