• 我们在哪一颗星上见过 ,以至如此相互思念 ;我们在哪一颗星上相互思念过,以至如此相互深爱
  • 我们在哪一颗星上分别 ,以至如此相互辉映 ;我们在哪一颗星上入睡 ,以至如此唤醒黎明
  • 认识世界 克服困难 洞悉所有 贴近生活 寻找珍爱 感受彼此

漏洞学习:空指针解引用

漏洞学习 云涯 3年前 (2021-11-17) 1843次浏览

概念

C/C++语言空指针的值为NULL,一般NULL指针指向进程的最小地址,通常这个值为0.

当程序试图解引用一个期望非空,但是实际为空的指针时,会发生空指针解引用错误。可以导致程序异常终止或拒绝服务。

空指针解引用时C/C++程序中较为普遍存在的内存缺陷类型,当指针指向无效的内存地址并对其解引用时,产生不可预见错误,导致软件崩溃或者拒绝服务。

漏洞编号 漏洞概述
CVE-2018-16517 Netwide Assmbler的asm/labels.c文件存在空指针解引用,攻击者可以进行拒绝服务攻击
CVE-2018-16428 GNOME Glib 2.56.1的gmarkup.c中的g_markup_parse_context_end_parse()函数存在空指针解引用
CVE-2018-16329 ImageMagick7.0.8-8之前的版本的MagickCore/property.c文件中的GetMagickProperty()函数存在空指针解引用
CVE-2018-16328 ImageMagick 7.0.8-8之前的版本的MagickCore/property.c文件中的CheckEventLogging()函数存在空指针解引用
CVE-2019-9635 TensorFlow1.12.2之前的版本存在空指针解引用
CVE-2020-9385 Zint2.7.1中的libzint存在空指针解引用
CVE-2021-27186 Fluent Bit 1.6.10,当没有对flb_avro.c或http_server/api/v1/metrics.c中的flb_malloc的返回值进行验证时,存在空指针解引用

 

代码

void NULL_Pointer_Dereference()

{

char *data;

/*指针置为空*/

data=NULL;

/*空指针解引用*/

printHexCharLine(data[0]);

}

避免空指针解引用

1. 使用指针前进行健壮性检查

2. 调用函数返回值为空时,需对函数返回值进行非空验证

3. 在释放指针指向的空间后,需将指针赋值为空

4. 确保异常被正确处理

 

 


云涯历险记 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:漏洞学习:空指针解引用
喜欢 (0)