安全扫描标记的局部变量,用于 C 函数中的堆检查

问题描述 投票:0回答:1

我正在开发 C 函数

getCredentials
,并遇到了有关变量
lpass
的 Checkmarx 标志。然而,根据我的理解,
lid
lpass
都本地存储在函数内的堆栈上

void getCredentials(char *id, char *pass) {
    char lid[userid_size];
    char lpass[pwd_size]; // Flagged in Checkmarx 

    strncpy(lid, id, userid_size);
    strncpy(lpass, pass, pwd_size);

    // dbconnect(&dbstruct, lpass, lid);
}

有人可以澄清为什么 Checkmarx 标记

lpass
进行堆检查,这是误报还是存在我忽略的潜在问题?

c heap-memory static-analysis checkmarx
1个回答
0
投票

“堆检查”是关于未加密存储在机器内存中的敏感信息。它到底存储在哪里完全不相关。

敏感信息的任何副本在不再需要时都应立即销毁,否则它可能会在释放、进程死亡以及随后由不同进程分配该内存(可以对其进行检查)的情况下继续存在。

如果您需要临时存储未加密的密码副本,请在使用完毕后立即将其清零。

© www.soinside.com 2019 - 2024. All rights reserved.