【问题标题】:Can an array exist in multiple locations in physical memory?一个数组可以存在于物理内存的多个位置吗?
【发布时间】:2020-01-18 11:29:53
【问题描述】:

假设我有一个存储一些敏感数据的数组。覆盖数组的每个元素可确保将数据从其在物理内存中的当前位置擦除。

但是,物理内存中的其他地方是否存在数据的任何陈旧副本?或者虚拟到物理内存的映射在数组的生命周期内是固定的吗?

我对了解 C、Java 和 WebAssembly 中的行为特别感兴趣。

【问题讨论】:

    标签: security compilation compiler-optimization ram virtual-memory


    【解决方案1】:

    在所有语言中 - 数组是从其他内存位置填充的,因此您需要确保其他内存位置也被覆盖。

    在诸如 Java 和 WebAssembly 之类的垃圾收集语言中,完全可以想象,垃圾收集器的实现会移动对象(例如数组),可能不会覆盖之前的内存位置。

    您还应该注意,如果数据来自进程外部(例如网络),并且在到达进程之前被解密(或根本没有加密),那么它也可能存在于操作系统缓冲区中。

    在大多数情况下,更好的做法是在处理敏感信息时不允许您的进程与不受信任的一方共享内存,而不是追查可能的敏感数据泄漏。

    【讨论】:

      猜你喜欢
      • 2020-12-24
      • 2016-11-28
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      相关资源
      最近更新 更多