源代码安全扫描及服务技术方案(PPT37张)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


在对从兴NGBOSS项目引进klocwork之后,一共扫描了12次,其版本质量明显提升;在以往代码出现的诸如
内存溢出,数据越界等较严重错误的数量大幅下降.同时对各种不同类型错误还会生成对应的分析报告, 指出其在开发中应注意的问题. 十大错误报告 引进Klocwork后,代码错误减少
6
汇报提纲
11
扫描内容
缺陷类型:空指针引用 子错误代码: NPD.CHECK.MIGHT-空指针引用 指针在NULL检查后可能被取消引用,同类型的错误代码还有NPD.CHECK.MUST
代码的质量要求也越来越高.从提高系统的安全性及稳定性出发;由中国移动广东分公司牵头 针对开发商(目前是针对华为,从兴)的源代码进行质量控制,保证源代码的质量;确保系统稳定, 高效的运行
引入背景
行业现况
•项目规模越来越庞大,业务复杂度越来越高 •开发团队庞大,个人开发风格,水平不一致,导致开发出来的代码质量高低不一
Байду номын сангаас
3 1 2 3 4
背景介绍 扫描内容 服务介绍
定价方案
7
源代码安全扫描及审计项目

目前使用的源码扫描工具klocwork是一款基于专利技术引擎开发的强大的静态 代码分析软件,具备6大功能
1.缺陷检测 2.安全漏洞检测 3. 软件架构分析 4. 软件度量分析 5. 可定制代码分析 6. 开发人员IDE集成
•对行业项目的安全要求越来越高,因此对项目的质量则越高
•由此上三大因素,故引入代码扫描控制不利因素,提升质量
3
项目优点
优点1
源代码扫描是基于专利技术分析引擎开发的软件基础上实施
综合应用了多种近年来最先进的静态分析技术
是出色的软件静态分析软件 是唯一集效率与速度为一身的强大而又精确的企业级源代码分析工具
180类Java错误、241类C/C++错误、40类C#错误 缓冲区溢出、DNS欺骗、注入缺陷等15类安全漏洞 自动生成软件架构图,根据结构和依赖关系给出建议 代码行数、循环数、继承数等度量指标 根据公司特色定制编码标准和扫描策略 和Eclipse、Visual Stdio、Rational等集成,效率最高
项目引进代码扫描项目之后项目成员
减少900h/人的工作成本

5
Justin Thomas, Software Team Lead, Johns Hopkins APL C&C
源码扫描在NGBOSS的应用

Klocwork 是一个企业级源代码分析工具,支持对c,c++,java和c#语言的扫描分析;可快速而准确的定位 安全隐患、识别错误 和软件架构问题,为各大企业节约大量的成本,降低了整个软件过程中的风险成本

引进代码扫描项目之后当年的项目 成本降低50%

引进代码扫描项目之后项目成本 缩减200000美金
We had a very tight schedule and without Klocwork Insight, we would have had difficulty meeting our objectives on time.
源代码安全扫描及 审计服务
——方案报告
2012年08月
汇报提纲
3 1 2 3 4
背景介绍 扫描内容 服务介绍
定价方案
2
背景介绍
项目背景——源代码安全扫描及服务项目
随着市场竞争的日益激烈,以及通信与计算机技术的不断发展,业务支持系统的软件
规模日益庞大,应用环境日益复杂,新业务需求层出不穷,旧业务不断更新优化;对系统源
1.效率错误 (如:空的finalize方法) 2.可维护性问题 (如:空的catch从句) 3.可靠性问题 (如资源泄漏)
9
扫描内容
下面对在源代码扫描中的缺陷类型选取几例常见的加以说明 缺陷类型:内存管理问题 子错误代码: MLK.MIGHT-可能存在的内存泄漏
可能存在的内存泄漏(类似的代码错误MLK.MUST-已经存在内存泄漏),这个报告并非一定存
8
扫描内容
下面介绍下缺陷检测中的一些详细信息,支持不同语言的扫描;其中可以检测出 180种Java的错误,241种C++错误,下面列举详细缺陷类型,其中每个缺陷类型下 包含各类子错误
c/c++
JAVA
1. 2. 3. 4. 5.
空指针释放 内存管理问题(如内存泄漏) 数组越界 未初始化数据使用 编码风格问题
在内存泄漏,提示在源码中存在此类风险. 摘取的代码实例如下: 源码:G:\c++\report\report3\tasks\ftpfile\00128_FixFeeCompoGd.cpp 行 115 错误描述: Possible memory leak. Dynamic memory stored in 'loadInfo' allocated through function 'new' at line 111 can be lost at line 115 分析:为loadInfo分配的内存可能在115行的代码中发生泄漏,需要对调用的代码增加验证条 件
10
扫描内容
缺陷类型:数组越界 子错误代码: ABR-数组越界 此类错误多发生在堆,栈和数据段中,但报出来的一般都是缺陷。
摘取的实例如下:
源码:G:\c++\bizlib\control\ccm\CM_COM_MngSubs.cpp, 接口:Initialize 错误描述:Buffer overflow, array index of 'subsproperty.enum_' may be out of bounds. Array 'subsproperty.enum_' of size 21 may use index value(s) 0..32 分析:Array 'subsproperty.enum_' size is 21 定义的长度是21,但在实际调用的过程有可能 会访问到32的数据,这就超出了定义的长度范围了. 行623
优点2
通过该项目开发人员在桌面端快速而准确的定位安全隐患识别错误 和软件架构问题;通过项目分析软件研发经理可以直接看到软件代码 和架构的 安全性和可靠性视图,避免软件研发经理往往需要研读软 件代码才能发现软件中的问题的弊端软件安全经理可以在软件开发生 命周期中发现、 评估、纠正和度量软件安全
4
项目效益
相关文档
最新文档