錯誤1:
int a[5];
a[5] = 0;
錯誤2:
int a[5];
int b = user_controlled_value;
a[b] = 3;
關(guān)聯(lián)漏洞:
高風(fēng)險-內(nèi)存破壞
任意地址寫會導(dǎo)致嚴(yán)重的安全隱患,可能導(dǎo)致代碼執(zhí)行。因此,在編碼時必須校驗寫入的地址。
錯誤:
void Write(MyStruct dst_struct) {
char payload[10] = { 0 };
memcpy(dst_struct.buf, payload, sizeof(payload));
}
int main() {
MyStruct dst_stuct;
dst_stuct.buf = (char*)user_controlled_value;
Write(dst_stuct);
return 0;
}
關(guān)聯(lián)漏洞:
高風(fēng)險-內(nèi)存破壞
更多建議: