国信检测带您了解GB/T 34943-2017《C/C++ 语言源代码漏洞测试规范》
- 发布时间:2026-07-22
- 发布者: 管理员
- 来源: 本站
- 阅读量:
GB/T 34943-2017《C/C++ 语言源代码漏洞测试规范》于 2017 年 11 月发布,2018 年 5 月正式实施,是国内专门针对 C/C++ 代码源代码安全检测的推荐性国家标准。
C/C++ 广泛用于嵌入式设备、工控软件、服务器程序、操作系统组件、物联网固件等场景。由于语言支持直接操作内存,如果编码不当极易产生缓冲区溢出、内存破坏等高危漏洞,一旦被利用,可引发程序崩溃、数据窃取、远程控制等严重安全风险。
本标准搭建了统一的测试框架,解决行业内C/C++ 代码安全测试没有统一依据、漏洞判定口径不一、测试流程不规范的问题,可用于企业内部代码安全自查、第三方机构源代码安全审计、项目验收、合规测评等场景。适用于使用 C、C++ 开发的各类应用软件、组件、固件源代码漏洞测试;测试工作既可在编码阶段开展,也可在软件上线、运维阶段进行安全复查。
一、标准核心:一套完整的标准化测试流程
标准规定源代码漏洞测试分为四大闭环阶段,每个阶段明确产出文档,形成可追溯的测试过程:
1.测试策划
明确测试范围、代码版本、测试目标、选用工具、测试环境,识别测试风险,编制《源代码漏洞测试计划》。
2.测试设计
结合业务场景确定测试方法、测试准入 / 退出条件、需要覆盖的漏洞类型,输出《测试说明》。标准明确要求:自动化扫描必须搭配人工复核,不能单纯依赖工具结果。
3.测试执行
开展源代码检测,实时记录测试日志;对工具扫描结果人工甄别,区分真实漏洞、误报,定位漏洞代码位置。
4.测试总结
汇总全部漏洞,划分风险等级,给出修复建议,形成正式《源代码漏洞测试报告》。
简单理解:从 “规划测什么” 到 “执行检测”,最后出具可用于项目归档、整改落地的正式报告,全过程有据可查。
二、标准把 C/C++ 常见源代码漏洞划分为 8 大类别,覆盖绝大多数安全风险
1.行为问题
程序出现不可预期异常行为。典型:空指针访问、未初始化变量、多线程竞态条件、死锁等,容易造成程序宕机。
2.路径错误
文件、目录访问处理不当。典型:路径遍历漏洞,攻击者可越权读取服务器任意文件。
3.数据处理漏洞
数据运算、拷贝存在缺陷。典型:缓冲区溢出、整数溢出、数组越界,是 C/C++ 最高危的一类漏洞。
4.错误的 API 协议实现
系统 API、库函数使用方式错误。典型:滥用strcpy、scanf等危险函数,未校验输入参数。
5.劣质代码
编码不规范埋下隐患。典型:资源未释放(内存泄漏、句柄泄漏)、冗余代码、异常处理缺失。
6.不充分的封装
关键数据、权限没有隔离保护。敏感变量对外开放、权限控制逻辑简单,容易被绕过。
7.安全功能缺陷
身份认证、加密、访问控制等安全模块存在问题。典型:弱加密算法、密钥硬编码、明文存储密码、随机数不安全。
8.Web 相关问题
面向 Web 服务的 C/C++ 程序特有风险。典型:命令注入、格式化字符串漏洞、输入过滤不足。
三、标准支持多种手段组合检测,不局限单一工具
1.静态源代码分析(最常用):不运行程序,直接扫描代码文本,查找漏洞模式,适合开发阶段持续自查;
2.人工代码审查:针对高危模块、工具存疑结果人工复核,消除大量误报;
3.动态测试、模糊测试(可选):运行程序,输入异常数据验证运行时安全缺陷。
C/C++ 程序广泛应用于关键软硬件系统,源代码安全是网络安全防线的起点。GB/T 34943-2017 为 C/C++ 源代码漏洞测试提供标准化实施路径。遵循本标准开展代码安全检测,能够系统性挖掘内存破坏、权限缺陷、加密薄弱等安全隐患,从源头降低软件被攻击风险,助力软件产品安全、合规交付。
