GB/T 34946-2017
C#语言源代码漏洞测试规范
发布时间:2017-11-01 实施时间:2018-05-01


C语言是一种面向对象的编程语言,广泛应用于Windows平台的开发。随着软件规模的不断扩大,软件安全问题也日益突出。为了保障软件安全,需要对C语言源代码进行漏洞测试。本标准旨在规范C语言源代码漏洞测试的流程和方法,提高测试的质量和效率。

1.范围
本标准适用于C语言源代码漏洞测试。

2.术语和定义
2.1 漏洞:指软件中存在的安全漏洞,可能导致软件被攻击或者被非法使用。
2.2 漏洞测试:指对软件进行安全测试,发现其中存在的漏洞。
2.3 漏洞类型:指漏洞的种类,如缓冲区溢出、SQL注入等。
2.4 漏洞等级:指漏洞的危害程度,如高、中、低等。
2.5 漏洞修复:指对发现的漏洞进行修复,以消除漏洞的危害。

3.基本要求
3.1 漏洞测试应该在软件开发的早期进行,以便及时发现和修复漏洞。
3.2 漏洞测试应该覆盖软件的所有功能模块,包括输入、输出、存储、计算等。
3.3 漏洞测试应该覆盖所有可能存在漏洞的代码路径,包括正常路径和异常路径。
3.4 漏洞测试应该使用多种测试方法,包括黑盒测试、白盒测试、灰盒测试等。
3.5 漏洞测试应该使用多种测试工具,包括静态分析工具、动态分析工具、漏洞扫描工具等。
3.6 漏洞测试应该记录测试过程和测试结果,以便后续分析和修复漏洞。

4.测试方法
4.1 黑盒测试:指在不了解软件内部实现的情况下,对软件进行测试,以发现其中存在的漏洞。黑盒测试应该覆盖软件的所有功能模块和所有可能存在漏洞的代码路径。
4.2 白盒测试:指在了解软件内部实现的情况下,对软件进行测试,以发现其中存在的漏洞。白盒测试应该覆盖软件的所有代码路径,包括正常路径和异常路径。
4.3 灰盒测试:指在部分了解软件内部实现的情况下,对软件进行测试,以发现其中存在的漏洞。灰盒测试应该覆盖软件的关键代码路径,包括正常路径和异常路径。

5.测试内容
5.1 输入验证:指对软件输入进行验证,以发现其中存在的漏洞。输入验证应该覆盖所有可能存在漏洞的输入,包括用户输入、文件输入、网络输入等。
5.2 输出验证:指对软件输出进行验证,以发现其中存在的漏洞。输出验证应该覆盖所有可能存在漏洞的输出,包括用户输出、文件输出、网络输出等。
5.3 存储验证:指对软件存储进行验证,以发现其中存在的漏洞。存储验证应该覆盖所有可能存在漏洞的存储,包括数据库存储、文件存储等。
5.4 计算验证:指对软件计算进行验证,以发现其中存在的漏洞。计算验证应该覆盖所有可能存在漏洞的计算,包括加密、解密、哈希等。

6.测试报告
6.1 测试报告应该包括测试目的、测试方法、测试结果等内容。
6.2 测试报告应该对发现的漏洞进行分类和评级,以便后续修复漏洞。
6.3 测试报告应该对漏洞修复情况进行跟踪和记录,以便后续分析和改进漏洞测试流程。

相关标准
GB/T 22080-2008 软件测试文档
GB/T 25000-2019 软件工程
GB/T 25010-2019 软件测试
GB/T 25020-2019 软件质量保证和评估
GB/T 25030-2019 软件维护