Skip to content

G.SAF.MEM.04 内存中的敏感信息使用完毕后应立即清零

【级别】 要求

【描述】

内存中的口令、密钥等敏感信息使用完毕后应立即清零,避免被攻击者获取。 为防止内存清零操作被编译优化,推荐使用 std::ptr::write_volatile 函数。

【正例】

Rust
struct Buffer {
  password: [u8; 16],
}

impl Buffer {
  fn new() -> Self {
    Self { password: [1; 16] } // 初始化缓冲区
  } 
}

impl Drop for Buffer {
  fn drop(&mut self) { 
    unsafe {
      std::ptr::write_volatile(
        &mut self.password.as_slice(),
        vec![0; self.password.len()].as_slice(), 
      );
    }
  } 
}

fn main() {
  let _buffer = Buffer::new(); // 创建缓冲区实例

  // 当 buffer 离开作用域时,会自动调用其 drop 函数清空内存
}