随着信息技术的飞速发展,软件系统的规模和复杂度不断增加。在C/C++和Java语言编写的软件中,代码量庞大且结构复杂,这使得隐藏在源代码中的漏洞数量也随之增多。这些漏洞可能被攻击者利用,从而对软件系统的安全性、稳定性和可靠性造成严重威胁。这使得制定C/C++和Java语言源代码测试的标准尤为必要。2017年11月1日,《GB/T 34943-2017 C/C++ 语言源代码漏洞测试规范》和《GB/T 34944-2017 Java 语言源代码漏洞测试规范》标准正式发布。目前这两项国标已在软件开发、安全测试、工具设计等领域广泛应用。由此为软件研发企业、测试机构等提供统一的测试规范和方法,保障软件产品和系统的质量。标准解读一、GB/T 34943-2017《C/C++语言源代码漏洞测试规范》包含源代码漏洞测试的测试目的、测试过程、测试管理、测试工具、测试文档以及测试内容。标准中列出的测试内容共包含8大方面,共32类漏洞问题。测试目的:发现、定位及解决软件源代码中的漏洞;为软件产品的安全性测量和评价提供依据。测试过程:主要包括测试策划、测试设计、测试执行和测试总结四个阶段。测试内容:根据软件开发中常用的概念来组织 C/C++语言源代码漏洞的类别,具体分为如下8个类别:a)行为问题——由于应用程序的意外行为而引发的漏洞。b)路径错误——不恰当的处理访问路径而引发的漏洞。c)数据处理——处理数据的功能中发现的漏洞。d)错误的API协议实现——由于软件未按预期用法使用API而引发的漏洞。e)劣质代码——由于软件编写不规范导致潜在的漏洞。f)不充分的封装——未充分封装关键数据或功能而引发的漏洞。g)安全功能——软件安全功能如身份鉴别、访问控制、机密性,密码学和特权管理等相关的漏洞。h)Web问题——Web技术相关的漏洞。二、GB/T34944-2017《Java语言源代码漏洞测试规范》整体架构与GB/T 34943-2017标准相同。标准中列出的测试内容共包含9大方面,共44类漏洞问题。测试内容:标准根据软件开发中常用的概念来组织Java语言源代码漏洞的类别,具体分为如下9个类别:a) 行为问题——由于应用程序的意外行为而引发的漏洞。b)路径错误——不恰当的处理访问路径而引发的漏洞。c)数据处理——处理数据的功能中发现的漏洞。