【缺陷周话】第37期:未初始化值用于赋值操作

栏目: 编程工具 · 发布时间: 6年前

内容简介:局部的、自动变量存储在栈中,如果没有对其进行初始化,默认值为当前存储在栈内存中的值,此外,一些动态的内存分配方法也可能不会对申请的内存进行初始化,如 malloc()、 aligned_alloc() 等,没有对变量进行初始化就用于赋值操作,可能导致未定义的行为。详细请参见CWE-665: Improper Initialization、CWE-758:  Reliance on Undefined, Unspecified, orImplementation-Defined Behavior。未初始化的自

【缺陷周话】第37期:未初始化值用于赋值操作

1、未初始化值用于赋值操作

局部的、自动变量存储在栈中,如果没有对其进行初始化,默认值为当前存储在栈内存中的值,此外,一些动态的内存分配方法也可能不会对申请的内存进行初始化,如 malloc()、 aligned_alloc() 等,没有对变量进行初始化就用于赋值操作,可能导致未定义的行为。详细请参见CWE-665: Improper Initialization、CWE-758:  Reliance on Undefined, Unspecified, orImplementation-Defined Behavior。

2、未初始化值用于赋值操作的危害

未初始化的自动变量或动态分配内存都拥有不确定的值,程序在使用这些不确定的值时可能会触发非预期的行为,甚至可能会让程序存在被恶意攻击的严重隐患。

CVE中也有一些与之相关的漏洞信息,从2018年1月至2019年5月,CVE中就有5条相关漏洞信息。漏洞信息如下:

CVE 概述
CVE-2018-8627 Microsoft Excel 中存在由于未初始化变量导致的读取越界内存漏洞。攻击者可借助特制的文件利用该漏洞查看越界内存。
CVE-2018-8378 Microsoft Office 中存在由于未初始化变量导致的读取越界内存漏洞。远程攻击者可利用该漏洞查看边界之外的内存。
CVE-2018-3975 Atlantis Word Processor 3.2.6 版本中的RTF解析功能存在未初始化变量漏洞。攻击者可借助特制的RTF文件利用该漏洞执行代码(越界写入)。
CVE-2018-14551 ImageMagick 7.0.8-7 版本中的 coders/mat.c 文件的 ‘ReadMATImageV4’ 函数存在安全漏洞,该漏洞源于程序使用了一个未初始化的变量。攻击者可利用该漏洞造成内存损坏。

3、示例代码

示例源于Samate Juliet Test Suite for C/C++ v1.3 (https://samate.nist.gov/SARD/testsuite.php),源文件名:CWE758_Undefined_Behavior__char_malloc_use_01.c。

3.1 缺陷代码

【缺陷周话】第37期:未初始化值用于赋值操作

在上述示例代码中,第23行使用 malloc() 函数进行内存分配但并未进行初始化,随后在第24行对分配是否成功进行了判断,当分配失败时,程序退出。在第25行将 pointer 指针指向的内存存储的值赋值给 data,但此时 pointer 指针并未被赋值,其指向的内存也是未定义的,因此存在“未初始化值用于赋值操作”问题。

使用代码卫士对上述示例代码进行检测,可以检出“未初始化值用于赋值操作”缺陷,显示等级为高。如图1所示:

【缺陷周话】第37期:未初始化值用于赋值操作

图1未初始化值用于赋值操作检测示例

3.2 修复代码

【缺陷周话】第37期:未初始化值用于赋值操作

在上述修复代码中,Samate给出的修复方式为:在第27行对指针 pointer 进行赋值,从而避免了未初始化值用于赋值操作。

使用代码卫士对修复后的代码进行检测,可以看到已不存在“未初始化值用于赋值操作”缺陷。如图2:

【缺陷周话】第37期:未初始化值用于赋值操作

图2:修复后检测结果

4、如何避免未初始化值用于赋值操作

检查代码逻辑,避免将未初始化的值直接赋值给其他变量,另外也可以对变量的声明采取默认初始化的策略。


以上所述就是小编给大家介绍的《【缺陷周话】第37期:未初始化值用于赋值操作》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web Development Recipes

Web Development Recipes

Brian P. Hogan、Chris Warren、Mike Weber、Chris Johnson、Aaron Godin / Pragmatic Bookshelf / 2012-1-22 / USD 35.00

You'll see a full spectrum of cutting-edge web development techniques, from UI and eye candy recipes to solutions for data analysis, testing, and web hosting. Make buttons and content stand out with s......一起来看看 《Web Development Recipes》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

html转js在线工具
html转js在线工具

html转js在线工具