假设我们有这样的代码:
struct somedata {
int a;
int b;
};
struct somedata *data;
/* ... */
data = malloc(sizeof(struct somedata));
data->a = something;
现在,如您所见,缺少 NULL 指针检查。问题是 - 如果 malloc 失败,这是否有安全隐患?让我们假设在这种情况下,在 SEGV 上退出的进程本身不是问题。从安全的角度来看,还有其他方法可以解决这个问题吗?包含此代码的应用程序不是 SUID 或具有任何提升的权限,但确实处理外部输入,因此其内存的某些部分可以由用户控制。
PS我知道CWE-476,但安全隐患以非常模糊的方式描述(“在非常罕见的情况和环境中,代码执行是可能的” - 哪些情况?哪些环境?多么罕见 - 流星击中你 -头脑中的稀有还是一年一次的稀有?)我想看到一些关于威胁是什么的更具体的信息。